В минувший своей статье я писал как создать мультизагрузочную флешку. Она всем хороша, но из-за индустриального прогресса придется немного ее модернизировать. Дело в том, что следуя инструкциям прошлой статьи сходила флешка, загружающаяся только на компьютерах с BIOS’ом. Сейчас же идет поколение UEFI, поэтому необходимо «доработать» нашу флешку чтобы она стала загрузочной и в UEFI-компьютере. При этом не потеряв возможности по-старинке загружаться в компьютере с BIOS. Помимо этого, при создании новой флешки одним из основных критериев было минимальное внесение изменений относительно «первой» флешки. С такими, немного амбициозными, критериями я и начал свои эксперименты, вооружившись уже знакомой статьей из арчвики. Для загрузки в UEFI необходимо наличие раздела с флагом esp (флаг можно установить в Gparted, создать и отформатировать обличил в нем же). Чтобы изменения были минимальны, разобьем флешку на два раздела, как и в прошлой статье: начальный, чтобы виден был в винде, для файлов и второй загрузочный. Оба с файловой системой fat32. Устроим что флешка в компьютере определилась как диск sdb. Примонтируем второй раздел флешки в mnt:
# mount /dev/sdb2 /mnt
Далее начались мои эксперименты в ходе которых выяснилось, что если устанавливать груб как обычно:
# grub-install --removable --boot-directory=/mnt /dev/sdb
То флешка берется только в компьютерах с BIOS. Если установить груб так:
# grub-install --target=x86_64-efi --removable --efi-directory=/mnt --boot-directory=/mnt /dev/sdb
То флешка берется только на компьютерах с UEFI. Универсальности не видно…
Но в который раз пробуя всяческие композиции исправления разделов флешки, разных таблиц разделов на ней (mbr и gpt) и установки всевозможных флагов (boot, esp и пр.) я увидел одну интересную особенность: если сначала установить груб для BIOS, а потом слету же для UEFI, то тогда флешка начинает загружаться и в компьютерах с BIOS, и в компьютерах с UEFI.
Не испытываю, баг это или фича, или я просто не нашел этой возможности в документации по груб, но видимо при этом сборка груба для UEFI не затирает сборку для BIOS, а становится рядом, а это как раз то что надо. Дальше уже дело промышленной. Вот, по порядку все необходимые действия:
• Создать на флешке таблицу разделов (Раздел — воздействие по глаголу разделять) mbr;
• Создать два fat32 раздела на ней: первоначальный для файлов, второй для груба;
• Собрать второй раздел в /mnt;
• Установить на флешку (-флеш-накопитель (сленг) груб для BIOS:
# grub-install --removable --boot-directory=/mnt /dev/sdb
При этом на втором разделе флешки появится папка grub. СКкпировать куда-нибудь из нее папку i386-pc. Она требуется в дальнейшем и удалить (для чистоты эксперимента) все из второго раздела флешки (то есть папку grub);
• Теперь установить на флешку груб для UEFI:
# grub-install --target=x86_64-efi --removable --efi-directory=/mnt --boot-directory=/mnt /dev/sdb
Во ином разделе уже появятся две папки: grub и EFI.
• Скопировать ранее сохраненную папку i386-pc в папку grub. Это нужно для возможности загружаться в режиме BIOS (сам загрузчик будет в первом секторе флешки, но без долей груба, находящихся в этой папке загрузка не пойдет).
• Создать рядом с папками grub и EFI папку iso и перекопировать в нее необходимые iso-образы дистрибутивов;
• Взять точно такой же файл конфигурации grub. cfg как и в ранешной статье про мультизагрузочную флешку и положить его в папку grub.
Все, теперь у вас в наличии универсальная мультизагрузочная флешка с графическим и автоматическим меню.
Свою флешку я протестировал на компьютере с UEFI и на компьютере с BIOS — везде загрузка идет как и предполагалось. Попробуйте и вы у себя. Делитесь впечатлениями в комментариях.
PS: флаг esp на иной раздел флешки можно и не ставить, флешка все равно будет работать. Единственное что я увидел — при наличии этого флага флешка в файловых менеджерах отображается как один раздел (виндоподобное воздействие). Второй раздел с файлами груб становится не виден. В принципе, это довольно удобно: не горбят постоянно глаза папки grub, EFI и iso.

