Linux

如何從 grub 連結引導到 syslinux?

  • July 24, 2020

我正在擴展我的救援 USB 快閃記憶體盤。USB 的分區是可引導的,我已經將 GRUB 安裝到了跳轉驅動器的 MBR。它工作得很好——我可以啟動Freedos並執行一些實用程序,我可以啟動PING

我想將 Ubuntu 9.10 LiveCD 添加到這個救援 USB 驅動器。我有一個可以工作的 jumpdrive,所以我可以很容易地複製文件。我可以menu.lst找到 GRUB 所需的條目,但 Ubuntu LiveUSB 使用相當複雜的 syslinux 配置。此外,我想保留盡可能多的目前 LiveCD/LiveUSB 外觀而不將 syslinux 配置移植到 GRUB。

在〜quack的建議下,我嘗試了以下menu.lst條目:

title Ubuntu 9.10 LiveCD
root=(hd0,0)
kernel /ubuntu-9.10/syslinux/isolinux.bin

但 GRUB 以Error 13: Invalid or unsupported executable format. 然後我在 GRUB 命令行嘗試:

grub> root=(hd0,0)
grub> kernel /syslinux/isolinux.bin

因為我在那個位置有第二個isolinux.bin文件,但是 GRUB 以同樣的錯誤響應。我也試過:

grub> chainloader /syslinux/isolinux.bin

並再次收到錯誤 13。最後,我嘗試了 GRUB 命令行:

grub> root=(hd0,0)
grub> kernel /ubuntu-9.10/install/mt86plus
grub> boot

那行得通

我真正想要的是一種讓 GRUB 呼叫 syslinux/isolinux 引導載入程序的方法。然後 syslinux 可以載入它自己的菜單等等。

有人知道怎麼做嗎?

**更新:**根據您的條目,我找到了文章“Grub chainloads syslinux and back”,它基本上說的是“patch grub”:

更新檔頁面提到了一個類似的更新檔已發佈到grub-devel for Grub v2;這個文章可能就是那個更新檔。或者這條消息,它指向Grub v2 更新檔的這個錯誤報告(日期為 2009 年 11 月,所以它是最新的)。

要使用其中一個更新檔,您需要下載首選 Grub 版本的 Grub 原始碼,檢查它是否已包含該更新檔,嘗試應用該更新檔,然後重新編譯並重新安裝您的新 Grub。


原答案:

我會先嘗試測試一個簡單的 Grub 條目。這是 Debian 系統上 Memtest86+ 實用程序的標準 Grub 條目:

title           Debian, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin

只需嘗試使用您的值調整它們(根據需要更改根分區或核心路徑):

title           Ubuntu LiveUSB SysLinux boot
root            (hd0,0)
kernel          /syslinux/isolinux.bin

我認為您不需要chainloader+此任務的命令。

引用自:https://serverfault.com/questions/98950