Contributed by Poul-Henning Kamp <phk@FreeBSD.org>. v1.1, April 26th.
啟動 FreeBSD 需要三個步驟: 載入 kernel, 測定root所在的檔案系統,以及初始化一些關於使用者方面的東西。
我們現在介紹以下三種載入 kernel 的基本方法: 它們全部都會給 kernel 一些資訊,幫助 kernel 決定接下來要做什麼。
Biosboot 是我們的 ``bootblocks''。 它由兩個檔案組成。這兩個檔案會被安裝在軟碟或硬碟中用來啟動的 slice 之第一個 8K bytes 的地方。
Biosboot 可以從一個 FreeBSD 的檔案系統載入 kernel。
Dosboot 是由 DI. Christian Gusenbauer 撰寫的, 可惜現在很不幸地有一小部份的程式碼與 FreeBSD本身並不相容, 因為這些程式碼是寫給 Microsoft compilers 的。
Dosboot 可以從一個 MS-DOS 的檔案或是磁碟上的一個 FreeBSD file system partiton 來啟動FreeBSD。 它嘗試去克服隱藏在 MS/DOS 系統的 high memory 中多種奇怪的 memory manglers,結果通常都能騙過它們以繼續動作。
Netboot 會嘗試去尋找所支援的 Ethernet 網路卡, 並且用 BOOTP、TFTP 和 NFS 去找到 kernel 檔案來啟動 FreeBSD。
從 kernel 被載入,啟動程式跳到 kernel,kernel就開始初始化, 嘗試判定現在有什麼樣的硬體等等, 之後它需要找到根目錄所在的檔案系統。
我們現有支援以下幾種 root filesystems:
這是最普通的一種 root filesystem。它可以用在軟碟或硬碟上。
這只是技術上可行,實際上並不實用,因為 FAT 的檔案系統不能產生 links、 device nodes 和一些 ``UNIXisms'' (譯注:與 UNIX 相關的產物)。
這是一個被編譯在 kernel 內部的 UFS 檔案系統。代表了 kernel 不真正需要任何的硬碟/軟碟或是其他的硬體來動作。
拿 CD-ROM 來當作 root filesystem 時用。
Root filesystem 放在檔案伺服器上, 基本上是用於一台沒有硬碟的機器。
要令使用者方面的東西執行,是在 kernel 結束初始化後, 它將會產生一個 pid == 1 的 process, 在 root filesystem 上執行一個程式,一般這個程式就是 /sbin/init。
你可以以任何程式取代 /sbin/init, 只要你記住:
這裡沒有 stdin/out/err 除非你自己打開。 如果你離開,機器會 panics。並會對 pid == 1 產生的訊號作處理。
在安裝磁碟上的 /stand/sysinstall 就是一個例子。
啟動 kernel,在 MFS 裡有一個特別的 /sbin/init 它會...
把您的 C: 掛在 /C:
把 C:/freebsd.fs 設定成 /dev/vn0
把 /dev/vn0 掛到 /rootfs
做一些 symlinks /rootfs/bin -> /bin /rootfs/etc -> /etc /rootfs/sbin -> /sbin (etc...)
現在你跑 FreeBSD 而不用重新分割你的硬碟...
用 NFS 把 server:~you/FreeBSD 掛在 /nfs,把 root 位置改變成 /nfs 並在那�堸鶡� /sbin/init
現在你不用磁碟而可以跑 FreeBSD, 就算你沒有 NFS server 的控制權...
現在你有一個 X 終端機,這總比你在 windows 下跑 X 視窗模擬器好,不但速度快很多,也省下不少硬體的錢。
製作一份 /dev/rwd0 的拷貝並寫到遠端的磁帶機或是檔案伺服器。
這樣你終於能夠做一份你應該在一年之前就做好的備份...
這是十分有趣的,當你從防寫的軟碟啟動後, 仍然可以寫入你的 root filesystem...