Простая хаутушка, но в инете редко попадается последовательное описание всех шагов.
Задача: сделать флешку, которая грузится на любом относительно современном PC-совместимом железе (+в пределах разумного старья).
1.
Берём флешку, размечаем её в GPT.
2.
Нам потребуется 2 раздела под загрузчик + 1 раздел собственно под систему, и сколько вам еще нужно разделов под ваши задачи.
Я делал в GParted, поэтому команд для терминала не будет.
1-й раздел - достаточно выделить 4 мегабайта. Нужен для установки стартового образа grub для legacy BIOS. Файловая система - отсутствует. Разделу нужно поставить флаг bios_grub.
Дополнительно я еще перестраховался и оставил 4 мегабайта неразмеченного пространства перед первым разделом - чисто на всякий случай, мало ли что туда бутлоадеры пишут. (Ничего не должны писать.)
2-й раздел - fat32. Нужен для установки всех остальных частей grub. Размер - сколько не жалко. Я поставил 128 мегабайт. Файловая система нужна такая, которую понимает EFI, т.е. fat. (Gparted мне зачем-то автоматически поставил флаг msftdata, я не стал менять. Не знаю, на что он влияет.)
3-й раздел и последующие — под систему и всё остальное.
В fdisk получается примерно так:
Диск /dev/sdc: 28,66 GiB, 30752636928 байт, 60063744 секторов
Disk model: Ultra USB 3.0
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Устр-во начало Конец Секторы Размер Тип
/dev/sdc1 8192 16383 8192 4M BIOS boot
/dev/sdc2 16384 278527 262144 128M Microsoft basic data
/dev/sdc3 278528 60061695 59783168 28,5G Файловая система Linux
3.
Дальше ставим 3 варианта grub:
mount /dev/sdc2 /mnt/sdc2
grub-install --target=i386-pc --boot-directory=/mnt/sdc2/boot --verbose /dev/sdc
grub-install --target=i386-efi --efi-directory=/mnt/sdc2 --boot-directory=/mnt/sdc2/boot --removable --verbose /dev/sdc
grub-install --target=x86_64-efi --efi-directory=/mnt/sdc2 --boot-directory=/mnt/sdc2/boot --removable --verbose /dev/sdc
Всё.
Конфиг у всех трёх общий, отличаются только бинарники. Как отредактировать конфиг boot/grub/grub.cfg и поставить ОС на системный раздел — сами разберётесь, не маленькие.