Chainloading von Syslinux mit grub2

Chainloading von Syslinux mit grub2

Ich habe ein Syslinux/Isolinux-Hybrid-CD-ISO erstellt, um je nach Bedarf entweder das Legacy-BIOS oder eufi zu booten. Der Legacy-BIOS-Teil funktioniert gut und das schon seit vielen Jahren. Ich verwende die neueste (6.0.3) Version von Syslinux. Ich habe ein rhel7 efiboot.img verwendet, das ich von einer rhel7-Boot-CD erhalten habe, um den eufi-Teil zu booten, nur als Test. Ich kann dieses CD-ISO in einer VM mit einem UEFI-BIOS booten.

Dadurch lande ich in einer Grub2-Shell, was auch zu erwarten ist, da ich noch keine verwendbare Grub.cfg erstellt habe (nur die Standarddatei, die mit der Image-Datei geliefert wurde). So kann ich diese CD zumindest im UEFI-Modus booten.

Ich versuche, syslinux.efi über die Grub2-Shell kettenzuladen, um herauszufinden, ob ich Syslinux überhaupt kettenzuladen kann (und wie), und um dann zu sehen, ob es das Menü laden kann, das ich für das Legacy-BIOS verwende.

Ich habe verschiedene Kombinationen von Grub2-Befehlen verwendet, aber ich bekomme immer diesen Fehler, egal was ich versuche. Die Suche nach diesem Fehler liefert mir nicht viele nützliche Informationen

grub> set root='(cd0)'
grub> chainloader /syslinux/efi/syslinux.efi
grub> boot
Failed to locate root device to prep for file operations & ADV initialization
error: unknown error
grub>

Ich frage mich, ob dies ein Problem mit grub2 oder der Datei syslinux.efi oder etwas ganz anderes ist.

Ich glaube nicht, dass es mit der von mir verwendeten Datei efiboot.img ein Problem gibt, da sie von einer CD stammt, die nachweislich mit UEFI funktioniert.

Beachten Sie, dass der Befehl „chainloader“ die Datei meiner Meinung nach als etwas betrachtet, das Grub2 möglicherweise zum Laden verwenden könnte. Wenn ich eine andere oder eine nicht vorhandene Datei verwende, erhalte ich die folgenden Fehler:

grub> chainloader /isolinux/efi/libmenu.c32
error: cannot load image.
grub> chainloader /isolinux/efi/doesnotexist
error: file 'isolinux/efi/doesnotexist' not found.

Bearbeiten 9. August 2019

Ich glaube, das ist mit der aktuellen (6.03) Version von Syslinux eigentlich nicht möglich. Als Workaround habe ich ein Rhel7-Boot-Image verwendet, das EFI-Verzeichnis kopiert und daraus eine bootfähige Hybrid-CD erstellt, die sowohl im UEFI-Modus als auch im Legacy-BIOS-Modus bootet. Um ein Boot-Menü zu erstellen, muss die Datei EFI/BOOT/grub.cfg nur an Ihre Bedürfnisse angepasst werden. Ich glaube, das verwendet tatsächlich Gummiboot/Systemd-Boot. Ich habe dasselbe verwendet, um das UEFI-Netzwerkbooten zu konfigurieren.

verwandte Informationen