Next Previous Contents

9. How the pros do it

您可能已经注意到,哪些被诸如 Slackware、RedHat、Debian 等主要 distribution 所使用的 bootdisks ,似乎比本文中所描述的还要来得复杂许多。专业的 distribution bootdisks 以在此所提出的相同原则为基础,但是采用各式各样的技巧,因为它们的 bootdisks 有一些额外的需求。第一,它们必须能够在各种不同的硬件上运作,所以它们必须能够与使用者互动,并且能载入各式各样的设备驱动程序。第二,它们必须准备以许多不同的安装选项、不同的自动化程度来运作。最后, distribution bootdisks 通常结合了安装磁片与救援磁片的能力。

某些 bootdisks 使用名为 initrd(initial ramdisk)的特性。这个特性大约在 2.0.x 版时引入,它允许 kernel 以两阶段开机。当 kernel 开机时,它从 boot disk 载入一个initial ramdisk映像档。这个 initial ramdisk 是一个 root filesystem ,包含一个在真正的 root fs 被载入之前所执行的程序。这个程序通常会检查作业环境, 以及/或 要求使用者选择不同的开机选项,例如选择从哪一个设备载入真正的 rootdisk 。一般来说,它会载入未被内建在 kernel 内的额外模块。当这个初始化 (initial) 程序结束 (exit) 时, kernel 就载入真正的 root 映像档,开机动作将依一般情况继续执行下去。若要进一步得知 initrd 的信息,请详阅你机器上的 /usr/src/linux/Documentation/initrd.txt ,以及 ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz

以下是每一家 distribution的安装磁片如何运作的摘要,这份摘要以检阅 (inspect) 它们的filesystems 以及/或 它们的原始码为基础。我们不保证这份信息完全正确无误,或是自从版本noted以来,这些运作方式未被改变。

Slackware(v.3.1) 使用一种与 Transferring the kernel with LILO 这节所描述类似的前向式 (straightforward) LILO 开机法。 Slackware 的 bookdisk 利用 LILO 的 信息 参数印出一个 bootup 信息 (“Welcome to the Slackware Linux boot kernel disk!”) 。假如必要的话,这里会指示使用者输入一个开机参数行(boot parameter line)。在开机之后,一个root文档系统会从第二张磁片载入。此时使用者唤起(invoke)一个 setup script,这个script将启动安装程序。Slackware并非使用一个模块化 kernel ,相反地,它提供许多不同的 kernel ,并且靠使用者自己选择一个符合 他/她 硬件需求的 kernel 。

RedHat(v.4.0) 也使用 LILO 开机法。它从第一张磁片载入一个压缩的 ramdisk ,这动作执行一个 custom init 程序。这个程序查询驱动程序,然后,假如必要的话,从 supplemental 磁片载入额外的文档。

Debian(v1.3) 可能是最复杂的安装磁片集。它使用 SYSLINUX loader 去安排各式各样的载入选项,然后使用一个 initrd 映像档指示使用者完成安装程序。它显然使用了一个客制化的 init 与一个客制化的 shell 两者。


Next Previous Contents