Как вы просите четкую иллюстрацию, как это сделать, вот оно. Я предполагаю, что у вас есть ваш загруженный Linux.
Разбить флешку
Я рекомендую инструмент командной строки gdisk
. Это дает очень чистые результаты. Кроме того, вы можете использовать gparted
.
Создать новую таблицу разделов. Используйте GPT с защитным MBR.
Определите эти разделы:
- (необязательно) раздел данных
- Раздел Linux
- Устаревший загрузочный раздел BIOS (достаточно 1 МБ)
- Системный раздел EFI (не менее 32 МБ)
Пример: на моем флэш-накопителе объемом 64 ГБ результат выглядит следующим образом:
Number Start (sector) End (sector) Size Code Name
1 2048 107632639 51.3 GiB 0700 DATA
2 107632640 124411903 8.0 GiB 8300 Linux filesystem
3 124411904 124413951 1024.0 KiB EF02 BIOS boot partition
4 124413952 124822453 199.5 MiB EF00 EFI System
Установите Linux на флэш-накопитель USB любым способом.
Во время этого процесса отформатируйте раздел Linux с выбранной вами файловой системой, предпочтительно ext4
. Используйте этот раздел как root /
.
Отформатируйте системный раздел EFI с помощью FAT16.
Загрузочный раздел BIOS остается неформатированным.
Установите GRUB дважды
На последнем шаге установите GRUB для обоих методов загрузки, загрузки в стиле UEFI и устаревшей загрузки BIOS.
grub-install --target=x86_64-efi --removable /dev/sdx
grub-install --target=i386-pc /dev/sdx
Очевидно, где /dev/sdx
- это ваш флэш-накопитель USB.
Это --removable
важно. Мне понадобилось три часа, чтобы понять, что мне это нужно на съемном USB-накопителе ...
Если вы устанавливаете GRUB на флэш-накопитель "извне" (не загружая Linux с флэш-накопителя USB), сначала необходимо смонтировать раздел Linux. Может быть, вы монтируете его в /mnt
. Затем вы монтируете системный раздел EFI в каталог Linux partitions /mnt/boot/efi
. Используйте --root=/mnt
качестве параметра для grub-install
. Только тогда grub-install
найдет все необходимые каталоги.
Готово.
Для дальнейшего чтения:
Мы не определяли разделы в MBR. Таким образом, вы можете спросить, почему это работает на старых машинах BIOS. Имейте в виду, мы установили GRUB в MBR. Во время устаревшего процесса загрузки BIOS выполняется загрузчик, сохраненный в MBR. Это загружает этап 1 GRUB, который затем переходит к загрузке этапа 2 из устаревшего загрузочного раздела BIOS. Но в настоящее время GRUB на самом деле ничего не знает ни о разделах MBR, ни о других. По этой причине информация о положении загрузочного раздела BIOS была встроена в этап GRUB 1. Следовательно, если загрузочный раздел BIOS перемещен, вам необходимо переустановить GRUB. После загрузки GRUB 2-го этапа GRUB понимает GPT и может продолжить загрузку ядра Linux.