如何从 menu.lst 到 syslinux.cfg?

如何从 menu.lst 到 syslinux.cfg?

问题

我正在从 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 长篇、写得很好的自述文件的乐趣。您很可能会获得很多有用的想法,了解如何使分区快乐地共存,以及如何从一个分区跳到另一个分区而不被不可能的事情绊倒。

良好的阅读和问候,费尔南多

相关内容