双重引导
尽管 comp.os.linux.advocacy Usenet 新闻组中充斥着 Linux 狂热分子呼吁彻底消除 MS-Windows——通常也包括微软——但仍有许多人希望能够在 Linux 和 Windows 95 之间切换。许多使用 LILO 在 Windows 3.x 和 Linux 之间轻松选择的用户安装了 Windows 95,然后发现 Linux 无法再启动。一些使用 LOADLIN 的人也发现他们遇到了麻烦。
Windows 95 在安装时遵循“世界统治”策略;它会覆盖硬盘驱动器上的主引导记录,默认情况下,该记录仅引导 Windows。主引导记录本质上是一个非常小的程序,它在从硬盘驱动器加载操作系统的第一步时从硬盘驱动器上的固定位置加载。旧版本的 MS-DOS 和 Windows 95 安装的引导记录非常有限:它只能允许引导过程继续到标记为“活动”分区的单个分区。
相比之下,Linux 附带的 LILO 加载器安装了一个引导记录,该记录允许您非常轻松地选择从任何分区继续引导。事实上,LILO 甚至允许您从第二个驱动器上的分区引导,这是 DOS 主引导记录无法做到的。LILO 的引导记录确实能够引导 Windows 95。
请注意,我没有将 LILO 的引导记录称为“主”引导记录。这是因为虽然它可以作为主引导记录安装,但它不必如此。在硬盘驱动器上的每个分区上,都有另一个引导记录。当 DOS 主引导记录从活动分区引导时,它是通过加载活动分区上的引导记录来实现的。LILO 的引导记录可以安装为硬盘驱动器上的主引导记录,也可以安装为 Linux 分区的引导记录。
因此,为了使用 LILO,您需要将 LILO 的引导加载程序安装为主引导加载程序,或者将其安装为 Linux 分区上的引导加载程序,并将您的 Linux 分区设置为活动分区。将其安装为 Linux 分区上的引导加载程序并将 Linux 分区设置为活动分区的优点是,下次您安装 Windows 时,您只需使用 DOS fdisk 程序将您的 Linux 分区设置为活动分区,即可使用 LILO 选择您的操作系统。
恢复秘诀: 使用紧急启动软盘或从您的安装启动/根软盘或软盘组启动。获取 shell 提示符,可能是通过从菜单中选择它或按 Alt-F2(如果您不知道如何获取 shell 提示符,请参阅您的 Linux 发行版的文档)。然后执行以下命令
mkdir /mnt
mount -t ext2 /dev/rootdevice /mnt
/mnt/sbin/lilo -r /mnt
umount /mnt
这假设 /mnt 不存在;如果它已经存在,则无需创建它。rootdevice 是你的根文件系统所在设备的名称,例如 hda2(你的第一个 IDE 硬盘的第二个分区)或 sda1(你的第一个 SCSI 硬盘的第一个分区)。如果您不记得是哪个,您可能必须使用 fdisk 程序,该程序应包含在安装程序和紧急启动盘中,以找到它。-r /mnt 部分的意思是假装 /mnt 是你的根目录。如果你的发行版没有将 lilo 放入 /sbin 目录,你可能需要查找它。
此时,您应该能够使用安装 Windows 95 之前的相同选项重新启动。
备用恢复秘诀: 再次,从您的紧急启动软盘或安装启动软盘启动,但添加命令行参数 root=/dev/hda2 或 root=/dev/sda1 或任何分区是您的根分区。这最终应该看起来就像您只是从硬盘驱动器正常启动一样。现在,只需以 root 用户身份登录并运行 lilo 命令。您现在应该拥有与安装 Windows 95 之前相同的启动选项。
避免未来 LILO 灾难的秘诀: 在您的 /etc/lilo.conf 文件中,将 boot=/dev/hda 或 boot=/dev/sda 更改为指向保存您的启动映像的主分区。这在大硬盘驱动器上很重要;您可能有一些分区使用的磁盘空间不是磁盘上第一个千兆字节的一部分,而且,您可能知道,BIOS 无法访问该空间,BIOS 启动了引导过程。在 /etc/lilo.conf 中放置 boot=/dev/hda3 或 boot=/dev/sda4 语句后,运行 lilo 命令。这会将 LILO 引导扇区安装在 boot= 语句中命名的分区上。
现在,使用 fdisk 程序将您刚刚安装引导扇区的 Linux 分区设置为活动分区。您可以使用 Linux fdisk 程序或 DOS fdisk 程序来完成此操作。
现在,下次您必须重新安装 Windows 95,因为您的 .INI 文件已彻底混乱,或者 Windows 95 无缘无故拒绝运行时,您将能够通过运行 DOS/Windows fdisk 程序并将 Linux 分区设置为活动分区来启动 Linux。重新启动,LILO 将再次工作。
如果您愿意启动 DOS 以引导 Linux,则可以使用 LOADLIN 程序。在某些情况下,这实际上是引导 Linux 的最佳方式。特别是,某些声卡只有在首先在 DOS 下初始化后才能在 Linux 下工作。
一些使用 LOADLIN 从 DOS 提示符启动 Linux 的人发现,在安装 Windows 95 后,他们无法调出 DOS 命令提示符窗口并从那里引导 Linux——为了最终进入 Linux 而重新启动到 DOS 并不是一件有趣的事情。也许您就是其中之一。
正如您所发现的,LOADLIN 有一些限制。例如,您不能在使用 Windows 时使用它来引导 Linux。即使您没有运行 Windows,如果您正在使用扩展内存管理器,它也必须支持 VCPI 才能使 LOADLIN 工作。但是,如果您从 CONFIG.SYS 菜单项运行它,这些约束不会引起问题。如果尚未添加菜单支持,则您的整个 CONFIG.SYS 文件可能如下所示
DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE FILES=40 DOS=HIGH,UMB
让我们称之为您的 DOS 部分。您还需要一个 LINUX 部分,并且您需要能够在它们之间进行选择。为了使 DOS 允许您在启动时在它们之间进行选择,您将需要一个 MENU 部分。结果如下所示
[MENU] MENUITEM=DOS, Boot DOS MENUITEM=LINUX, Boot Linux [DOS] DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE FILES=40 DOS=HIGH,UMB [LINUX] REM Here is where you would load a driver for REM a sound card that is not completely REM supported by Linux. SHELL=c:\LOADLIN\LOADLIN.exe @c:\LOADLIN\params
@c:\LOADLIN\params 表示内核的启动参数保存在文件 c:\LOADLIN\params 中。此文件可能如下所示
root=/dev/hda2 ro
LOADLIN 附带的文档更详细地解释了这一点,但您可能会发现此解释足以在大多数情况下开始使用 LOADLIN。
许多发行版都包含 LOADLIN 的副本。您还可以从 tsx-11.mit.edu 的 /pub/linux/dos_utils/ 目录中的 LOADLIN15.tar.gz 文件中通过 ftp 下载 LOADLIN 的副本。
Michael K. Johnson 是Linux Journal的编辑,并且必须启动 Windows 95 才能进行 OCR(光学字符识别),以将纸质书转换为在线书籍。他希望不久的将来,他将不再需要具备撰写此类文章的经验...