Как вы просите четкую иллюстрацию, как это сделать, вот оно. Я предполагаю, что у вас есть ваш загруженный 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ваш флешка, очевидно.
Это --removableважно Мне понадобилось три часа, чтобы понять, что мне это нужно на съемном USB-накопителе ...
Если вы устанавливаете GRUB на флэш-накопитель «извне» (не загружая Linux с флэш-накопителя USB), сначала необходимо смонтировать раздел Linux. Может быть, вы в него /mnt. Затем вы монтируете системный раздел EFI в /mnt/boot/efiкаталог Linux-разделов . Используйте в --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.
Я думаю, что это происходит автоматически. UEFI ищет файлы EFI, в то время как BIOS загружает устаревшие файлы.