Я пытаюсь преобразовать существующий пользовательский образ 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.