Erstellen eines UEFI-bootfähigen Images mit mkisofs und -eltorito-boot efiboot.img

Erstellen eines UEFI-bootfähigen Images mit mkisofs und -eltorito-boot efiboot.img

Ich versuche, ein vorhandenes benutzerdefiniertes USB-ISO-Installationsimage, das derzeit über das BIOS bootet, in ein Image zu konvertieren, das über UEFI bootet. Ich verwende mkisofsund isohybridzum Erstellen des ISO, und es bootet über ISOLINUX. Ich weiß, dass ich die -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.imgOptionen zum Aktivieren des UEFI-Boots verwenden soll, aber ich kann beim besten Willen keine Seite bei Google finden, die mir sagt, wo ich die schwer auffindbare efiboot.imgQuelldatei bekomme. Jeder erwähnt sie, aber jeder geht davon aus, dass Sie sie bereits haben. Wie wird dies erstellt oder erhalten? Die manSeite für mkisofsist keine Hilfe. Muss ich verwenden xorriso?

Zu Ihrer Information: Ich versuche, dies über libvirt/kvm/qemu/virt-manager zu booten, obwohl es letztendlich auf echter Hardware booten muss. Die Entwicklungsumgebung ist openSUSE Leap 42.1. Es besteht keine Notwendigkeit, BIOS oder mehrere Plattformen zu unterstützen. Ich möchte lieber nicht zu viel an vorhandenem Build-Code herumbasteln, aber mindestens ein Kommentar (@mikeserv) hat vorgeschlagen, dass ein ISO dafür der völlig falsche Mechanismus ist (was bedeutet, dass es ein grober Hack und völlig unnötig ist). Aber das würde eine vollständige Überarbeitung des Builds bedeuten, was viel Zeit in Anspruch nehmen würde.

Links zu Tutorials oder anderen gut geschriebenen Seiten zu diesem Thema werden dankbar entgegengenommen. Ich habe mir bereits die Syslinux-Website und die Seite von Rod Smith angesehen und mich beim Durchsehen von allem anderen völlig erschöpft.

Antwort1

Muss ich xorriso verwenden?

Nicht unbedingt. Sie benötigen einen ISO-Produzenten, der die EFI-Systempartition als El Torito-Bootimage markieren kann. mkisofsDie von Ihnen genannten Optionen reichen wahrscheinlich aus. isohybrid --uefiKann nachträglich angewendet werden, um es von festplattenähnlichen Geräten bootfähig zu machen. (Damit das funktioniert, ist möglicherweise auch ein ISOLINUX-BIOS-Bootimage erforderlich isohybrid .)

Das Hauptproblem besteht darin, dass Sie eine EFI-Systempartitionsdatei benötigen, die ein FAT-Dateisystemabbild mit den erforderlichen Programmen sein muss, um die Betriebssystemdateien aufzurufen, die sich entweder im FAT-Abbild oder im umgebenden ISO 9660-Dateisystem befinden.

Die SYSLINUX EFI-Software bootet nicht von optischen Medien. Daher verwenden die meisten Projekte zu diesem Zweck GRUB 2 (nicht GRUB Legacy) und kombinieren es mit der ISOLINUX BIOS-Software. Debian netinst amd64 ISOhat beispielsweise ein kleines FAT-Image mit gerade genug GRUB-Gehirn, um auf die GRUB-Konfiguration im ISO zu springen. Das imopenSUSE NET-x86_64 ISOist größer.

Um Debians EFI-Ausrüstung zu überprüfen, mounten Sie sie als ISO und dann die Datei /boot/grub/efi.imgals FAT. Darin finden Sie eine Datei /efi/boot/bootx64.efi, die bei der Überprüfung durch das Programm stringszeigt, dass sie eine eingebettete GRUB-Konfiguration enthält

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

Ich verstehe, dass die FAT-Image-Datei vom GRUB-Programm erstellt wurde mkimage. Die Datei /.disk/infoexistiert vermutlich nur im Debian-ISO, sodass searchsie zum Suchen des ISO-Dateisystems verwendet werden kann.

Im SuSE-ISO heißt das FAT-Image /boot/x86_64/efi. Es enthält mehr als das Debian-Image. Neben der EFI-Bootdatei bootx64.efi gibt es eine grub.cfgund andere Dateien, die über meine GRUB-Kenntnisse hinausgehen.

Wenn Sie mit der Entwicklung bootfähiger ISO-Dateien von Grund auf beginnen, sollten Sie erwägen, Ihre ISO-Datei mit dem GRUB-Programm zu erstellen grub-mkrescue. (Das ist der Punkt, den Sie wirklich brauchen xorriso, dessen Entwickler ich bin.)

Unter Debian müsste man die Pakete grub-pc, grub-efi-ia32-bin, für BIOS und grub-efi-amd64-binfür x86_64 EFI installieren. Bereiten Sie Ihre Nutzlast in einem Verzeichnisbaum vor und führen Sie sie aus

grub-mkrescue -o output.iso my_prepared_dir

Ich gehe davon aus, dass SuSE ähnliche GRUB-Pakete wie Debian anbietet, die sich für den grub-mkrescueBetrieb konfigurieren lassen, um BIOS- und/oder EFI-Geräte zu erstellen.

verwandte Informationen