10. 专业人士是如何做的

您可能注意到,诸如 Slackware、RedHat 或 Debian 等主要发行版使用的启动盘似乎比本文档中描述的更为复杂。专业的发行版启动盘基于此处概述的相同原理,但由于它们的启动盘有额外的要求,因此采用了各种技巧。首先,它们必须能够与各种各样的硬件配合工作,因此它们必须能够与用户交互并加载各种设备驱动程序。其次,它们必须准备好处理许多不同的安装选项,具有不同程度的自动化。最后,发行版启动盘通常结合了安装和救援功能。

一些启动盘使用名为 initrd (initial ramdisk,初始内存盘) 的功能。此功能大约在 2.0.x 版本中引入,允许内核分两个阶段启动。当内核首次启动时,它会从启动盘加载一个初始内存盘镜像。这个初始内存盘是一个根文件系统,其中包含一个在加载真正的根文件系统之前运行的程序。该程序通常检查环境和/或要求用户选择各种启动选项,例如从中加载真正根磁盘的设备。它通常加载内核中未内置的附加模块。当这个初始程序退出时,内核加载真正的根镜像,启动继续正常进行。有关 initrd 的更多信息,请参阅本地文件 /usr/src/linux/Documentation/initrd.txtftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz

以下是基于检查每个发行版的安装盘的文件系统和/或源代码,对它们的安装盘工作方式的总结。我们不保证这些信息是完全准确的,也不保证自注明版本以来它们没有发生变化。

Slackware (v.3.1) 使用直接的 LILO 引导,类似于 第 6.1 节 中描述的内容。Slackware 启动盘打印启动消息(“欢迎使用 Slackware Linux 启动内核盘!”)使用 LILO 的message参数。这指示用户在必要时输入启动参数行。启动后,从第二张磁盘加载根文件系统。用户调用 setup 脚本来启动安装。Slackware 没有使用模块化内核,而是提供了许多不同的内核,并依赖用户选择与其硬件要求相匹配的内核。

RedHat (v.4.0) 也使用 LILO 引导。它在第一张磁盘上加载一个压缩的内存盘,该内存盘运行一个自定义的 init 程序。该程序查询驱动程序,然后在必要时从补充磁盘加载其他文件。

Debian (v.1.3) 可能是安装盘集中最复杂的。它使用 SYSLINUX 加载器来安排各种加载选项,然后使用一个initrd镜像来引导用户完成安装。它似乎同时使用了自定义的 init 和自定义的 shell。