8. 启动操作系统

问:Linux 能从 MS-DOS 启动吗?
问:Linux 如何从 OS/2 的启动管理器启动?
问:如何设置启动时配置?
问:如何让 LILO 启动内核镜像?
问:我可以移除 LILO 以便系统再次启动 DOS 吗?
问:为什么系统每次重启都检查 Ext2fs 分区?
问:如何在重新安装操作系统后确保系统启动?
问:如何制作救援软盘

问:Linux 能从 MS-DOS 启动吗?

答:如果 LILO 不工作,并且机器装有 MS-DOS 或 Microsoft Windows,您可能会遇到计算机无法启动的情况。这种情况也可能在升级您的 Linux 发行版时发生。重新安装 LILO 是安装过程的最后一步。

在双启动机器上安装或升级 Linux 时,至关重要的是手边要有一个 MS-DOS 或 Windows 救援盘,这样您就可以FDISK -MBR。然后您可以开始使用LOADLIN.EXE而不是 LILO。

这个config.sys文件是调用LOADLIN.EXE并启动 MS-DOS 或 Linux 的一种可能方法。

 [menu] menuitem=DOS, Dos Boot menuitem=LINUX, Linux Boot

[LINUX] shell=c: edhatloadlin.exe c: edhatautobootvmlinuz vga=5 root=/dev

[DOS] STACKS = 0,0 rem all the other DOS drivers get loaded here.

这会创建一个菜单,您可以在其中直接跳转到LOADLIN.EXE在所有 MS-DOS 驱动程序加载之前。

路径和选项对于一台机器来说是特殊的,对于最普通的观察者来说应该是直观明显的。请参阅LOADLIN.EXE文档以获取选项。它们与 LILO 相同,并且选项无论如何都会传递给内核。

[Jim Harvey]

问:Linux 如何从 OS/2 的启动管理器启动?

答:#使用 OS/2 的FDISK.EXE创建一个分区(不是 Linux 的 fdisk)。

  1. 在 OS/2 下格式化分区,可以使用 FAT 或 HPFS。这是为了让 OS/2 知道分区已被格式化。(OS/2 Warp 3.0 不需要此步骤。)

  2. 将分区添加到启动管理器。

  3. 启动 Linux,并在分区上使用 mkfs -t ext2mke2fs 创建文件系统。此时,如果您愿意,可以使用 Linux 的 fdisk 将新分区的代码更改为类型 83(Linux Native),这可能有助于某些自动化安装脚本找到要使用的正确分区。

  4. 在分区上安装 Linux。

  5. 将 LILO 安装到 Linux 分区,而不是硬盘驱动器的主引导记录上。这会将 LILO 作为二级引导加载程序安装在 Linux 分区本身上,以启动 LILO 配置文件中指定的内核。为此,您应该放入

     boot = /dev/hda2 

    (其中/dev/hda2是您要从中启动的分区)在您的/etc/lilo/config/etc/lilo.config文件中。

  6. 确保标记为活动的分区是启动管理器分区,以便您可以使用启动管理器选择要启动的内容。

在 LDP 主页 https://tldp.cn 上有一组关于多启动系统主题的 HOWTO。

问:如何设置启动时配置?

答:您可以在lilo提示符下配置 Linux,方法是在BOOT lilo提示符下键入内核参数,或者通过将append=指令添加到/etc/lilo.conf文件中;例如,在 LILO 提示符下(仅示例)

BOOT lilo: parport=0x3bc,7
parport=0x3bc,none serial=0x3f8,4 serial=0x2f8,3 

示例语句/etc/lilo.conf:

append="parport=0x3bc,none serial=0x3f8,4 serial=0x2f8,3"

如果您修改了/etc/lilo.conf文件,请务必运行 lilo 命令以安装新配置。

特定硬件设备的配置说明位于内核源代码发行版的文档中,/usr/src/linux/Documentation在大多数发行版中。

请参阅 lilo/etc/lilo.conf手册页,以及 LDP BootPrompt-HowTo,请参阅 文档在哪里? 以及/usr/doc/lilo.

问:如何让 LILO 启动内核镜像?

答:从内核版本 1.1.80 开始,压缩的内核镜像(LILO 需要找到的)位于arch/i386/boot/zImage,或arch/i386/boot/bzImage构建时,通常存储在/boot/目录中。/etc/lilo.conf文件应引用vmlinuz符号链接,而不是实际的内核镜像。

更改此设置是为了更容易地从一个源代码树为多个不同的处理器构建内核版本。

问:我可以移除 LILO 以便系统再次启动 DOS 吗?

答:lilo 程序(不是完整的 LILO 包)使用命令行选项 -u 来卸载 LILO 引导加载程序。您必须提供安装 LILO 的设备的设备名称,例如

 lilo -u /dev/hda

这会将原始的、LILO 之前的 Master Boot Record 写回到第一个硬盘驱动器,从保存在/boot/boot.0300中的引导记录。/dev/hda1lilo 会从保存文件/boot/boot.0301重新安装原始引导扇区。

如果您有早期版本的 LILO,您将必须使用 DOS(MS-DOS 5.0 或更高版本,或 OS/2)FDISK /MBR(未记录在案)。这将用标准的 MS-DOS Master Boot Record 覆盖 lilo 引导加载程序。如果您有 DR-DOS 6.0,请以正常方式进入FDISK.EXE,然后选择重写 Master Boot Record选项。

如果您在 Windows 安装过程中创建了启动软盘,请确保它包含程序 FDISK.EXEFORMAT.COMSYS.COM,并使用它在硬盘上重新安装 MS-DOS。

如果您没有 MS-DOS 或 DR-DOS,您需要拥有 LILO 首次安装时保存的引导扇区。您保留了该文件,不是吗?它可能被称为boot.0301或类似的文件。输入

 dd if=boot.0301 of=/dev/hda bs=445 count=1

(或/dev/sda如果您使用的是 SCSI 磁盘)。这也可能会擦除您的分区表,请注意!如果您走投无路,可以使用

 dd if=/dev/zero of=/dev/hda bs=512 count=1

这将完全擦除您的分区表和引导扇区:然后您可以使用您喜欢的软件重新格式化磁盘。但这将使您无法访问磁盘内容,除非您是专家,否则您将丢失所有内容。

请注意,DOS MBR 启动标记为“活动”的任何(单个!)分区。您可能需要使用 fdisk 来适当设置和清除分区上的活动标志。

问:为什么系统每次重启都检查 Ext2fs 分区?

问:如何在重新安装操作系统后确保系统启动?

答:无论您重新安装的是 Linux 还是其他商业操作系统,这都应该有效

  • 在 A 驱动器中插入一张空白、格式化的软盘

  • 通过执行命令将引导硬盘驱动器的 Master Boot Record 的副本保存到软盘

     #dd if=/dev/hda of=/dev/fd0 count=1

    dd是 Linux 系统上的标准程序。MS-Windows 兼容版本可从 ftp://ftp.gnu.org/ 以及许多 MS 软件存档中获得。

  • 通过在 A: 驱动器中放入软盘并重新启动来测试软盘是否启动系统。

  • 然后您应该能够安装其他操作系统(如果不想卸载 Linux,则在不同的硬盘驱动器和/或分区上)。

  • 安装后,再次从软盘启动 Linux,并使用命令重新安装 MBR/sbin/lilo.

[Jacques Guy]

问:如何制作救援软盘

答:在上面创建一个文件系统,其中包含 bin、etc、lib 和 dev 目录,以及您需要的一切。在上面安装一个内核,并安排 LILO 从软盘启动它(请参阅 LILO 文档,在lilo.u.*.ps).

如果您构建内核(或告诉 LILO 告诉内核)使其 RAM 磁盘与软盘大小相同,则 RAM 磁盘将在启动时加载并作为根目录挂载,以代替软盘。

请参阅 Bootdisk HOWTO