问题
我正在从 YUMI USB 驱动器创建一个可启动 iso,以便为朋友刻录到 DVD 上。更多信息请点击这里。
我从可启动的 XBoot iso 中获取了 grldr 和 menu.lst,但现在我想找出一种从 menu.lst 到 syslinux.cfg 菜单的方法?
这完全是无稽之谈吗?我的做法正确吗/我怎样才能做到这一点?
作为一个小测试,我的 menu.lst 中有以下内容:
### MENU START
label Syslinux Menu
kernel vesamenu.c32
append /multiboot/syslinux.cfg
MENU SEPARATOR
### MENU END
但我最终看到的是 grub4dos 命令提示符,而不是我的 syslinux.cfg 菜单!老实说,我并不真正知道我在做什么,只是反复试验,希望得到一些指导!
答案1
这是一种勇敢的关心。
正因为我也想要这样,所以我转向使用 GRUB4DOS(也许如果我熟悉 GRUB 2.0,我就不需要它了)。 GRUB4DOS 非常灵活。如果您将其安装在 menu.lst 分区上,则可以通过以下方式访问任何 syslinux 或 extlinux 分区:
- 将 grub.exe 复制到 menu.lst 分区的根目录,
- 将 grldr 复制到 menu.lst 分区的根目录,以及 menu.lst 文件所在的目录,
- 查看菜单上的文件名。lst 分区根目录不在任何其他分区的根目录中(例如,HD 安装的 SystemRescueCD 上名为“version”的文件),
- 在目标分区上运行 syslinux (或 sysresccd-usbstick syslinux ,或者如果是这种情况 extlinux --install [extlinux 找到目标分区本身]),并且
- 将如下两个条目(我都使用)添加到您的 menu.lst 文件中:
(a) 到达 syslinux-ed FAT32 SystemRescueCD 主分区(我还没有在逻辑分区上尝试过)->
title Boot SRCD
kernel /grub.exe --config-file="find --set-root /version; \
map ()+1 (fd0); map --hook; root (fd0); chainloader +1; boot"
(这必须恰好在两行上,换行符\
只是为了使其在此处可读。)
(b) 到达邻近的 extlinux-ed EXT3 Slax 主分区 (id.) ->
title Boot Slax
kernel /grub.exe --config-file="find --set-root /leame.txt; \
map ()+1 (fd0); map --hook; root (fd0); chainloader +1; boot"
乍一看您就会明白,(1)过程非常相似:只有“独占”分区文件名不同; (2) 它的作用是让 GRUB4DOS 通过给它一个方便的“在线”配置文件(其内容是双引号之间的内容)来识别目标分区,无论它位于磁盘上的任何位置(仍然没有尝试使用分区)不同的磁盘,但对于一个磁盘,您显然可以随机排列分区,而无需编辑 menu.lst 文件);将其找到的目标分区命名为“根” - 此后用“()”表示 -;将找到的已成为根的目标分区映射到软盘并将其牢固地抓住(“--hold”)在那里,然后使软盘成为新的根,最后以非常GRUBbishly的方式链接加载(就像对Windows分区所做的那样)到根即到软盘即到目标分区,然后启动它。
为此您需要哪些工具?我使用的(只是不要混合版本)如下:
- grub4dos-0.4.4.zip,
- grubutil-1.1-bin-w32-19.zip 和
- grubinst-1.1-bin-w32-2008-01-01.zip。
为了舒适起见,我还使用了另外两个工具:
- Hiren 的 Boot 15.1,除了大量优秀工具之外,还包含 grubinst.gui 的兼容版本。我用它来轻松地在分区上安装 GRUB4DOS,以便 syslinux(或关联)对 syslinux-ed 分区的调节,即使它稍微接触到磁盘引导扇区,也不会妨碍我的 Hiren 引导分区正常运行(但我绝对避免损坏磁盘引导扇区 - 您可能会面临只有一个 syslinux-ed 分区引导而丢失其余分区的风险 -);和
- syslinux-4.03.zip(或4.05),因为它包含一个现成的extlinux二进制文件(extlinux对于Linux格式的分区就像syslinux对于FAT颗粒一样),我用它来进一步区分上面两个目标syslinux分区(一个是FAT32)和 syslinux-ed,另一个是 EXT3 和 exlinux-ed),因此,如果引导加载程序将其中一个替换为另一个,则可以通过在丢失的粒子上分别重做 sys(或 ext)linux-ing 来解决该问题。
如果您在 USB 笔上使用像我这样的组合(HBCD、SRCD 和 Slax),那么它上面仍然有很多地方可以放置一个大的好的 FAT32 分区(请使用第一个分区,以便它出现在下面的分区中) Windows)为您的数据 - 在一流的管理工具包之上 - 在所有笔上。因为 HBCD 分区是由 GRUB(4DOS) 管理的,所以您的 menu.lst 上可能有用于重新启动和关闭等操作的条目,这对于 syslinux 配置文件来说并不像看起来那么简单
作为补充,我可以告诉您(如果您已经发现了,请接受我的借口)如何从 sys(+)linux 管理的分区跳回 GRUB(+)、menu.lst(稍微更中心一点,在很多情况下)分区?好吧,您已经在后一个分区的根目录上有了 grub.exe 和 grdlr。现在您可以执行以下操作:
- 将这两个文件复制到 sys(+)linux 管理的粒子上的“活动目录”(即,在许多情况下,“syslinux”目录),该粒子现在成为源;和
将以下条目添加到您的 syslinux.cfg、extlinux.conf 或 slax.cfg(在我的例子中)文件中:
LABEL 启动菜单列表分区 KERNEL grub.exe
请注意,当 grub.exe 位于 syslinux(“活动”)目录中时,您似乎不需要路径:该条目会像这样将您带到 GRUB 管理的分区。然而,在一种情况下,我选择目标目录(上面的)分区之一的 extlinux-ing 参数不是“活动”目录,在这种情况下,我会自发地编写“/ boot/extlinux/grub.exe”而不是简单的“grub.exe” - 而且它也可以工作。
如果您愿意,请享受阅读 GRUB4DOS 长篇、写得很好的自述文件的乐趣。您很可能会获得很多有用的想法,了解如何使分区快乐地共存,以及如何从一个分区跳到另一个分区而不被不可能的事情绊倒。
良好的阅读和问候,费尔南多