Мультизагрузочная флешка BIOS + UEFI
Всем здравствуйте.
В прошлой своей статье я писал как создать мультизагрузочную флешку. Она всем хороша, но из-за технического прогресса придется немного ее модернизировать.
Дело в том, что следуя инструкциям прошлой статьи получалась флешка, загружающаяся только на компьютерах с BIOS'ом. Сейчас же идет поколение UEFI, поэтому необходимо "доработать" нашу флешку чтобы она стала загрузочной и в UEFI-компьютере. При этом не потеряв возможности по-старинке загружаться в компьютере с BIOS. Помимо этого, при создании новой флешки одним из основных критериев было минимальное внесение изменений относительно "первой" флешки.
С такими, слегка амбициозными, критериями я и начал свои эксперименты, вооружившись уже знакомой статьей из арчвики.
Для загрузки в UEFI необходимо наличие раздела с флагом esp (флаг можно установить в Gparted, создать и отформатировать раздел в нем же). Чтобы изменения были минимальны, разобьем флешку на два раздела, как и в прошлой статье: первый, чтобы виден был в винде, для файлов и второй загрузочный. Оба с файловой системой fat32.
Примем что флешка в компьютере определилась как диск sdb. Примонтируем второй раздел флешки в mnt:
Далее начались мои эксперименты в ходе которых выяснилось, что если устанавливать груб как обычно:
То флешка загружается только в компьютерах с BIOS.
Если установить груб так:
То флешка загружается только на компьютерах с UEFI. Универсальности не видно...
Но в который раз пробуя всяческие комбинации форматирования разделов флешки, разных таблиц разделов на ней (mbr и gpt) и установки всевозможных флагов (boot, esp и пр.) я заметил одну интересную особенность: если сначала установить груб для BIOS, а потом сразу же для UEFI, то тогда флешка начинает загружаться и в компьютерах с BIOS, и в компьютерах с UEFI.
Не знаю, баг это или фича, или я просто не нашел этой возможности в документации по груб, но видимо при этом сборка груба для UEFI не затирает сборку для BIOS, а становится рядом, а это как раз то что надо. Дальше уже дело техники. Вот, по порядку все необходимые действия:
Создать на флешке таблицу разделов mbr;
Создать два fat32 раздела на ней: первый для файлов, второй для груба;
Смонтировать второй раздел в /mnt;
Установить на флешку груб для BIOS:
При этом на втором разделе флешки появится папка grub. СКкпировать куда-нибудь из нее папку i386-pc. Она понадобится в дальнейшем и удалить (для чистоты эксперимента) все из второго раздела флешки (то есть папку grub);
Теперь установить на флешку груб для UEFI:
Во втором разделе уже появятся две папки: grub и EFI.
Скопировать ранее сохраненную папку i386-pc в папку grub. Это нужно для возможности загружаться в режиме BIOS (сам загрузчик будет в первом секторе флешки, но без модулей груба, находящихся в этой папке загрузка не пойдет).
Создать рядом с папками grub и EFI папку iso и скопировать в нее нужные iso-образы дистрибутивов;
Взять точно такой же файл конфигурации grub.cfg как и в предыдущей статье про мультизагрузочную флешку и положить его в папку grub.
Все, теперь у вас в наличии универсальная мультизагрузочная флешка с графическим и автоматическим меню.
Свою флешку я протестировал на компьютере с UEFI и на компьютере с BIOS - везде загрузка идет как и предполагалось. Попробуйте и вы у себя. Делитесь впечатлениями в комментариях.
PS: флаг esp на второй раздел флешки можно и не ставить, флешка все равно будет работать. Единственное что я заметил - при наличии этого флага флешка в файловых менеджерах отображается как один раздел (виндоподобное поведение). Второй раздел с файлами груб становится не виден. В принципе, это довольно удобно: не мозолят постоянно глаза папки grub, EFI и iso.
Такое поведение у файловых менеджеров dolphin и thunar. Но, krusader'у например, на этот флаг наплевать и он показывает все разделы флешки.