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