Создание загрузочного образа UEFI с помощью mkisofs и -eltorito-boot efiboot.img

Создание загрузочного образа UEFI с помощью mkisofs и -eltorito-boot efiboot.img

Я пытаюсь преобразовать существующий пользовательский образ USB ISO-установщика, который в настоящее время загружается через BIOS, в тот, который загружается через UEFI. Я использую mkisofsи isohybridдля создания ISO, и он загружается через ISOLINUX. Я знаю, что должен использовать -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.imgпараметры для включения загрузки UEFI, но, хоть убей, не могу найти в Google ни одной страницы, которая бы подсказала мне, где взять неуловимый efiboot.imgисходный файл. Все его упоминают, но все предполагают, что он у вас уже есть. Как это создается или получается? Страница manдля mkisofsбесполезна. Мне нужно использовать xorriso?

FYI Я пытаюсь загрузить его через libvirt/kvm/qemu/virt-manager, хотя в конечном итоге он должен загрузиться на реальном оборудовании. Среда разработки — openSUSE Leap 42.1. Нет необходимости поддерживать BIOS или несколько платформ. Я бы предпочел не возиться с существующим кодом сборки, но по крайней мере один комментарий (@mikeserv) предположил, что ISO — совершенно неправильный механизм для этого (то есть это грубый хак и совершенно ненужный). Но это потребовало бы полной переделки сборки, что заняло бы много времени.

Ссылки на руководства или другие хорошо написанные страницы по этой теме будут приняты с благодарностью. Я уже посмотрел сайт Syslinux и страницу Рода Смита и полностью измотал себя, просматривая все остальное.

решение1

Обязательно ли использовать xorriso?

Не обязательно. Вам нужен производитель ISO, который может пометить системный раздел EFI как загрузочный образ El Torito. mkisofsВероятно, подойдет с указанными вами параметрами. isohybrid --uefiМожет быть применен впоследствии, чтобы сделать его загрузочным с устройств, подобных жесткому диску. (Может также потребоваться загрузочный образ ISOLINUX BIOS, чтобы это isohybrid сработало.)

Основная проблема заключается в том, что вам нужен файл системного раздела EFI, который должен представлять собой образ файловой системы FAT с необходимыми программами для загрузки файлов операционной системы, которые находятся либо в образе FAT, либо в прилагаемой файловой системе ISO 9660.

Программное обеспечение SYSLINUX EFI не загружается с оптического носителя. Поэтому большинство проектов используют для этой цели GRUB 2 (не GRUB legacy) и объединяют его с программным обеспечением ISOLINUX BIOS. Debian netinst amd64 ISOнапример, есть небольшой образ FAT с достаточным количеством мозгов GRUB, чтобы перейти на конфигурацию GRUB в ISO. Тот, что вopenSUSE NET-x86_64 ISOбольше.

Чтобы проверить оборудование Debian EFI, смонтируйте его как ISO, а затем смонтируйте его файл /boot/grub/efi.imgкак FAT. Внутри вы найдете файл /efi/boot/bootx64.efi, который, будучи проверен программой, stringsобнаруживает, что он содержит встроенную конфигурацию GRUB

search --file --set=root /.disk/info
set prefix=($root)/boot/grub
source $prefix/x86_64-efi/grub.cfg
(memdisk)/boot/grub

Я понимаю, что файл образа FAT был создан программой GRUB mkimage. Файл /.disk/infoсчитается существующим только в Debian ISO, поэтому searchего можно использовать для поиска файловой системы ISO.

В SuSE ISO образ FAT называется /boot/x86_64/efi. Он содержит больше материала, чем Debian. Помимо загрузочного файла EFI bootx64.efi есть grub.cfgи другие файлы, которые находятся за пределами моих знаний о GRUB.

Если вы начинаете разработку загрузочного ISO с нуля, то рассмотрите возможность создания вашего ISO с помощью программы GRUB grub-mkrescue. (Вот тогда вам действительно понадобится GRUB xorriso, разработчиком которой я являюсь.)

На Debian нужно установить пакеты grub-pc, grub-efi-ia32-bin, для BIOS и grub-efi-amd64-binдля x86_64 EFI. Подготовьте свою полезную нагрузку в дереве каталогов и запустите

grub-mkrescue -o output.iso my_prepared_dir

Я предполагаю, что SuSE предлагает аналогичные пакеты GRUB, как и Debian, которые настраиваются для grub-mkrescueзапуска оборудования BIOS и/или EFI.

Связанный контент