我正在使用 Clonezilla live 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,我的理解(通过在互联网上查找)应该是可能的,但我还不明白如何实现。任何帮助表示赞赏。
编辑:
我想澄清的是,系统使用 grub 启动时不会出现选择grub.cfg
Conezilla 下载提供的默认菜单中的任何选项的问题,但我想做的是显示 syslinux 的菜单(在syslinux.cfg
)而不是默认菜单在grub.cfg
第二次编辑,我是如何做到的:
最后,建议的解决方案对我不起作用,所以我只是将“EFI\boot”文件夹设置为“不可用”(重命名);这样,UEFI 启动失败,系统从 syslinux 启动,就像在旧系统上一样:没有修改 BIOS,没有新菜单,没有链加载...
答案1
4年后...:)
尝试这个:
menuentry 'menuentry' {
set root=(hd0,1)
syslinux_source /path/isolinux/isolinux.bin
syslinux_configfile /path/isolinux/isolinux.cfg
}
答案2
这表明这是一些与此相关的错误以及一些补丁,因此很难确定: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 启动,但在你的情况下这似乎不是一个选择。
答案3
您必须进行目录安装而不是引导扇区安装。如果您进行引导扇区安装,则将分区的前 512 字节添加到文件中并链式加载到该文件。为我工作。