来自GRUB2的Chainload syslinux-显示syslinux.cfg菜单


9

我正在使用Clonezilla实时USB磁盘重新映像系统。根据http://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameters.doc中解释的内容,我的磁盘会提示我包含菜单在syslinux.cfg除了将在UEFI机器的最新之外的所有系统(以及已在BIOS配置为从UEFI设备第一次开机),在那里我提示的grub.cfg菜单。

鉴于我对syslinux.cfg菜单进行了大量定制,因此我想将grub.cfg文件修改为仅自动链加载到syslinux,以便syslinux.cfg在所有情况下都显示菜单。

这有可能吗?怎么样?

磁盘上有GRUB2,我的理解(从Internet上看)是可能的,但是我还不知道如何。任何帮助表示赞赏。

编辑:
我想澄清一下,系统使用grub引导时没有出现问题grub.cfg,默认情况下没有选择Conezilla下载提供的菜单中的任何选项,但是我想做的是显示syslinux的菜单(在中syslinux.cfg)而不是grub.cfg

第二次编辑中的默认菜单,而是如何执行的:
最终,建议的解决方案对我不起作用,因此我只是将“ EFI \ boot”文件夹设置为“不可用”(重命名);这样,UEFI引导失败,并且系统从syslinux像旧系统一样引导:没有对BIOS的修改,没有新的菜单,没有chainload ...


我猜想,您可以configfile在grub.conf中使用参数链式加载syslinux.cfg
SHW 2014年

Answers:


1

这表明它是与此有关的一些错误,并且是一些补丁,因此很难确定:https : //bugs.launchpad.net/ubuntu/+source/grub2/+bug/469568

首先,如果您的操作系统更新了grub,它将重新生成grub.cfg并清除您的配置,因此请勿手动修改/boot/grub.cfg,而要修改/etc/grub.d中的文件(文件名为40_custom或类似名称)并致电grub-mkconfig -o /boot/grub/grub.cfg

您可以尝试类似以下的简单操作:

menuentry“ Syslinux根驱动器” {

设置根=(hd1,3)

链式装载机+1

}

(hd1,3)是sdb3磁盘分区,grub支持uuid标识,因此可以创建安装程序,在该安装程序中所有PC都可以检测到您的分区。但是,根据我的经验,有时这还不够。

您也可以尝试类似 chainloader (hd1,3)/path/to/syslinux/isofile.bin

如果一切都失败了,则可以从其中带有syslinux的iso进行引导,但是对于您而言,这似乎不是一个选择。


我首先从grub命令行尝试过此操作(在grub中按一次c),我确定了syslinux.cfg分区,并直接尝试了“ chainloader(hd0,msdos2)+1”,但出现错误“无效的EFI文件路径”。请注意,以上分区的内容不包含任何.bin文件。(为了更加清楚起见,我还编辑了问题)
rodedo

它可能不是,它的名称和二进制格式扩展名(.bin)取决于发行版(活动CD通常具有bin才能通过syslinux和isolinux进行启动,但是在您的情况下,它可能是.bs文件,请在此处查看命令syslinux.org/wiki/index.php/SYSLINUX#LABEL_command)。但是我现在正在研究一件事:不使用casper模块直接启动内核(又名live cd / live usb模式)不会运行它的引导程序菜单。几分钟后,我将写结果。
2013年

好的,我看到候选文件夹是该文件夹中的.c32文件。更确切地说,这是文件夹的内容:“ chain.c32”,“ menu.c32”,“ reboot.c32”,“ vesamenu.c32”,“ memdisk”,“ syslinux.cfg” <br>(不包括cfg文件) ,我可以一一尝试吗?环顾四周,我了解到chain32应该用于反方向的缠绕(所以不是我所需要的),对吗?
rodedo

调用casper不会调用bootloader菜单。我不知道该如何存档。如果有帮助的话,我可以使用我自己的grub链加载示例,但是我怀疑它是否与syslinux一起使用:menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
IBr 2013年

0

4年后... :)

尝试这个:

menuentry 'menuentry' {
    set root=(hd0,1)
    syslinux_source /path/isolinux/isolinux.bin
    syslinux_configfile /path/isolinux/isolinux.cfg
}

1
请详细说明一下为什么可以解决问题。
countermode

-1

您必须执行目录安装而不是引导扇区安装。如果执行引导扇区安装,则将分区的前512个字节dd加载到文件中,并链加载到该文件。为我工作。


这可能是正确的,但可以从有关如何执行所描述步骤的一些解释中受益(并从大写字母开始)。
Caleb 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.