
我創建了一個 syslinux/isolinux 混合 CD iso 來根據需要啟動傳統 BIOS 或 eufi。遺留BIOS部分運作良好並且已經運作了很多年。我正在使用最新(6.0.3)版本的 syslinux。我使用從 rhel7 bood CD 取得的 rhel7 efiboot.img 來引導 eufi 部分,只是作為測試。我可以在具有 uefi BIOS 的虛擬機器中啟動此 CD iso。
這會讓我進入 grub2 shell,這是預期的行為,因為我還沒有建立可用的 grub.cfg(只是影像檔案附帶的預設 grub.cfg)。所以至少我可以在 uefi 模式下啟動這張 CD。
我正在嘗試透過 grub2 shell 鍊式載入 syslinux.efi,以查明我是否可以鍊式載入 syslinux(以及如何),然後查看它是否可以載入我用於舊版 BIOS 的選單。
我使用過 grub2 命令的各種組合,但無論我嘗試什麼,我總是會遇到此錯誤。搜尋此錯誤並沒有提供太多有用的信息
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>
我想知道這是否是 grub2 或 syslinux.efi 檔案的問題,或是完全不同的問題。
我認為這不會是我正在使用的 efiboot.img 的問題,因為它來自已知可與 uefi 配合使用的 CD。
請注意,我認為“chainloader”命令將該檔案視為 grub2 可能用來載入的檔案。如果我使用不同的文件或不存在的文件,我會收到以下錯誤:
grub> chainloader /isolinux/efi/libmenu.c32
error: cannot load image.
grub> chainloader /isolinux/efi/doesnotexist
error: file 'isolinux/efi/doesnotexist' not found.
2019 年 8 月 9 日編輯
我相信這對於 syslinux 的當前版本(6.03)實際上是不可能的。我所做的解決方法是使用 rhel7 啟動映像並複製 EFI 目錄,並以此為基礎建立可啟動混合 CD,該 CD 可在 uefi 模式以及舊版 BIOS 模式下啟動。要建立啟動選單,EFI/BOOT/grub.cfg 檔案只需根據您的需求進行調整。我認為這實際上使用了gummiboot/systemd-boot。我用同樣的方法來設定 uefi 網路啟動。