LINUX.ORG.RU

HOWTO: Загрузочная флешка для Legacy BIOS/EFI 32-bit/EFI 64-bit

 , , ,


1

1

Простая хаутушка, но в инете редко попадается последовательное описание всех шагов.

Задача: сделать флешку, которая грузится на любом относительно современном 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 и поставить ОС на системный раздел — сами разберётесь, не маленькие.

Deleted

А у меня всё на одном разделе, правда для Legacy у меня старый добрый grub4dos со своим конфигом (через уефи всё равно не запустишь дос, или там шиндошс-хр, а в биосе пожалуйста)

TheAnonymous ★★★★★ ()
Последнее исправление: TheAnonymous (всего исправлений: 1)

Хороший мануал, но есть несколько (не критичных) замечаний:

Берём флешку, размечаем её в GPT.

Дополнительно я еще перестраховался и оставил 4 мегабайта неразмеченного пространства перед первым разделом - чисто на всякий случай, мало ли что туда бутлоадеры пишут. (Ничего не должны писать.)

Если разметить в MBR (а флэшки размечают в MBR), то писать ничего не будут. И работать будет точно (на некоторых старых машинах GPT видеть откажется).

1-й раздел - достаточно выделить 4 мегабайта. Нужен для установки стартового образа grub для legacy BIOS. Файловая система - отсутствует. Разделу нужно поставить флаг bios_grub.

То же самое. Если размечать в MBR, не понадобится выделять раздел для, он поселится в MBR.

2-й раздел - fat32. Нужен для установки всех остальных частей grub. Размер - сколько не жалко. Я поставил 128 мегабайт. Файловая система нужна такая, которую понимает EFI, т.е. fat. (Gparted мне зачем-то автоматически поставил флаг msftdata, я не стал менять. Не знаю, на что он влияет.)

По стандарту положено 512M, но машины, которые не видят разделы меньшего размера мне не встречались, так что это не замечание а просто заметка.

mord0d ★★★ ()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от anonymous

И не будут, это штатная и намеренная функциональность shim, не нарушающая идею Secure Boot. Secure Boot призван защитить от незаметной подмены загрузчика, а покуда пользователя спрашивают при первом запуске, хочет ли он загрузить что-то неподписанное, это допускается.

ValdikSS ★★★★★ ()

Себе я сделал hybrid GPT/MBR флешку, грузится и в qemu без танцев с efi и на старье биосом и efi. Вместо grub для bios - syslinux, оно хоть и тупое, но функционала мне достаточно. В efi вообще без загрузчика, за счёт efi-stub в ядре.

vodz ★★★★★ ()