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 mkisofs
und isohybrid
zum Erstellen des ISO, und es bootet über ISOLINUX. Ich weiß, dass ich die -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img
Optionen 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.img
Quelldatei bekomme. Jeder erwähnt sie, aber jeder geht davon aus, dass Sie sie bereits haben. Wie wird dies erstellt oder erhalten? Die man
Seite für mkisofs
ist 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. mkisofs
Die von Ihnen genannten Optionen reichen wahrscheinlich aus. isohybrid --uefi
Kann 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.img
als FAT. Darin finden Sie eine Datei
/efi/boot/bootx64.efi
, die bei der Überprüfung durch das Programm strings
zeigt, 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/info
existiert vermutlich nur im Debian-ISO, sodass search
sie 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.cfg
und 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-bin
fü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-mkrescue
Betrieb konfigurieren lassen, um BIOS- und/oder EFI-Geräte zu erstellen.