假设在设置中,SYSLINUX 或 EXTLINUX 的任何部分均未写入未使用文件系统格式化的磁盘区域(例如引导扇区、BIOS 引导分区),那么如何从 GRUB2 链式加载 SYSLINUX/EXTLINUX?
答案1
您实际上要问的是“如何启动尚未完全安装的 SYSLINUX 或 EXTLINUX?”
我建议(半开玩笑地)启动 FreeDOS,使用它来完成 SYSLINUX/EXTLINUX 的安装,然后重新启动到 SYSLINUX/EXTLINUX(如果仍必须涉及 GRUB,则通过从 GRUB 链式加载其分区引导记录 (PBR) 代码)在此刻) :-)
如果没有 PBR 代码,SYSLINUX/EXTLINUX 安装是不完整的。安装程序不仅写入PBR代码,还将一些磁盘块编号信息直接修补到文件中ldlinux.sys
,因此如果您只是将此文件从一个磁盘复制到另一个磁盘,则此信息很可能是错误的。如果您尝试链接加载这样的副本ldlinux.sys
,它很可能会因以下两个原因而崩溃:
- 补丁后的磁盘块号信息不正确
- GRUB 链式加载的执行环境可能与 SYSLINUX PBR 代码执行后的执行环境不完全相同。
您可以在以下位置找到 PBR 代码:diskboot.inc 汇编程序文件SYSLINUX源码包,文件的开头ldlinux.sys
是从diskstart.inc 汇编程序文件。即使您不知道如何阅读汇编代码,注释也能提供丰富的信息。
如果您尝试将 SYSLINUX/EXTLINUX 可引导的实时 Linux 发行版或实用程序组合到某些使用 GRUB 的多重引导系统中,更简单的方法是读取 SYSLINUX 的配置文件,并将 GRUB 配置为使用相同的内核文件, initrd/initramfs 文件(如果适用)和内核引导选项(如 SYSLINUX 一样)。
这些是引导 Linux 内核的基本要素,因此除非引导的操作系统/实用程序不厌其烦地显式检查使用了哪个引导加载程序,否则无论使用 GRUB 还是 SYSLINUX/EXTLINUX 引导,结果都应该完全相同它。 (如果存在差异,则可能是一个错误。)