首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将引导从grub链接到syslinux?

如何将引导从grub链接到syslinux?
EN

Server Fault用户
提问于 2010-01-03 08:33:03
回答 4查看 38.2K关注 0票数 5

我正在扩展我的救援usb闪存盘。USB的分区是可引导的,我已经在跳转驱动器的MBR上安装了GRUB。它运行得很好--我可以引导费多斯并运行一些实用程序,也可以引导PING

我想添加Ubuntu9.10 LiveCD到这个拯救的usb驱动器。我有一个工作的jumpdrive,所以我可以很容易地复制文件。我可以找到GRUB所需的menu.lst条目,但是Ubuntu LiveUSB使用相当复杂的syslinux配置。此外,我希望保持现有的LiveCD/LiveUSB外观-n-感觉,而不将syslinux配置移植到GRUB。

在~quack的建议下,我尝试了一个menu.lst条目:

代码语言:javascript
复制
 title Ubuntu 9.10 LiveCD
 root=(hd0,0)
 kernel /ubuntu-9.10/syslinux/isolinux.bin

但GRUB以Error 13: Invalid or unsupported executable format作为回应。在GRUB命令行中,我尝试:

代码语言:javascript
复制
 grub> root=(hd0,0)
 grub> kernel /syslinux/isolinux.bin

因为我在那个位置有第二个isolinux.bin文件,但是GRUB用相同的错误进行响应。我也试过:

代码语言:javascript
复制
 grub> chainloader /syslinux/isolinux.bin

最后,我尝试使用GRUB命令行:

代码语言:javascript
复制
 grub> root=(hd0,0)
 grub> kernel /ubuntu-9.10/install/mt86plus
 grub> boot

这起作用了

我真正想要的是一种让GRUB调用syslinux/isolinux引导加载器的方法。然后syslinux可以加载它自己的菜单什么的。

有人知道怎么做吗?

EN

回答 4

Server Fault用户

回答已采纳

发布于 2010-01-03 08:47:57

更新:基于您的条目,我找到了一篇文章Grub链装载syslinux和back,主要内容是“修补程序grub":

  • 从GRUB中链接syslinux似乎不可能是没有补丁。我不知道GRUB2的事。这对于多引导(基于syslinux)分区很有用。
  • 从GRUB4dos (在不同分区上)链接syslinux是可能的。我通过映射来管理它,(再次)解释了这里。它解决了一些多引导usb设备中的问题问题。

补丁页面提到了一个类似的补丁发布到粗食中,用于Grub v2;这个职位可能就是该修补程序。或者这条信息,它指的是这个错误报告 (日期为2009年11月,所以是最近的) Grub v2补丁

要使用其中一个补丁程序,您需要下载Grub源代码,检查它是否已经包含了修补程序,尝试应用补丁,重新编译和重新安装新的Grub。

原始答案:

我试着先测试一个简单的Grub条目。这是Debian系统上Memtest86+实用程序的标准Grub条目:

代码语言:javascript
复制
title           Debian, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin

只需尝试使用您的值来调整这些值(根据需要更改根分区或内核路径):

代码语言:javascript
复制
title           Ubuntu LiveUSB SysLinux boot
root            (hd0,0)
kernel          /syslinux/isolinux.bin

我不认为这个任务需要chainloader+命令。

票数 4
EN

Server Fault用户

发布于 2010-01-06 06:07:16

标题Ubuntu9.1 ISO Boot

查找-集-根/ubuntu9.1.iso

map /ubuntu9.1.iso (hd32)

地图钩

根(hd32)

链式装载机(hd32)

将其添加到您的menu.lst中,并将ubuntu9.1.iso复制到menu.lst存在的驱动器中。

票数 1
EN

Server Fault用户

发布于 2019-01-28 03:09:08

您可以轻松地从grub2链接syslinux。最简单和最普遍的方法是:

点击grub菜单中的“c”命令行。

代码语言:javascript
复制
set root='hd1,msdos1'
chainloader +1
boot

其中'hd1,msdos1‘是一个常见的值引导,但是您可以使用ls搜索大多数文件系统,例如,ls (hd1,msdos1)会告诉您这个部分,然后ls (hd1,msdos1)/会给您显示文件。如果它是grub normal无法识别的文件系统,那么您可能必须安装一个带有insmod的fs模块。您可以使用grub的search命令来找到它。search --no-floppy --set=root

但是,您可能不需要链接syslinux (或其他任何东西)。grub很灵活。例如,在我的高山USB手柄上,我经常这样做:

代码语言:javascript
复制
set root='hd2,msdos1'
configfile /boot/grub/grub.cfg

就在菜单上。当然,上面有个稀饭的cfg。您还可以从磁盘上的grub / on或grub手动设置引导。

代码语言:javascript
复制
set root='hd2,msdos1' # or search...
linux /boot/vmlinuz
initrd /boot/initramfs

对我来说,我甚至可以在我的Xen‘s’d‘s阿尔卑斯USB手柄上做这样的事情

代码语言:javascript
复制
multiboot2 /boot/xen.gz
module2 /boot/vmlinuz-vanilla modules=loop,squashfs,sd-mod,usb-storage
module2 /boot/initramfs-vanilla

但是,这基本上就是现在阿尔卑斯山所带来的/boot/grub.cfg。关键是它可以做不同的和变化的操作系统,initramfs和内核。我认为您也可以使用chainloader $path_to_bin直接加载syslinux二进制文件,而且我的grub实际上有一个syslinux_configfilesyslinux_source命令,所以这似乎也有效:

代码语言:javascript
复制
syslinux_source /boot/syslinux.bin
syslinux_configfile /boot/syslinux/syslinux.cfg

希望其中之一对你有用。在grub中学习我的方法是一种拯救生命的方法。我已经从美国阿姆斯特丹的一台远程机器上保存了一个带有损坏配置的linux安装或移动/更改的HDD,方法是从现有的HDD上点击grub- have >并加载模块,并引导到旧的分区/OS中,以便修复/重新配置它。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/98950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档