5.2. 開機磁區:開機步驟的一和二

開機 指的是電腦開始偵測硬體裝置並初始化, 好讓程式開始執行。

這牽涉到了一個特殊的唯讀晶片,這個晶片將決定進一步的開機程序, 通常是送訊號至其他晶片作訊號的調節,及記憶體測試,設定硬體週置, 並提供一個機制去設定各種的硬體詳細組態。

在標準的個人電腦上,這通常是 BIOS (掌管整個開機流程),和 CMOS (儲存各項設定) ,BIOS 和 CMOS 必須要偵測到磁碟機, 並要知道可以載入作業系統的程式是放在磁碟機的哪個位置。

這個章節不會解釋第一階段的開機流程,而將重點放在這個磁碟機上的系統載入程式。

開機磁區負責找到 boot loader (通常是這樣),並執行它, 這必須要了解要如何在檔案系統中找到它, 要怎麼執行,和要如何做一些適當的設定讓這程式正常執行。

5.2.1. boot0

這通常是最前面的一個開機磁區,稱為 boot0,儲存在 Master Boot Record, 這個區域也就是 BIOS 所要去搜尋和執行的, 這裡所需要儲存的資訊為一個可以開機的區域列表。

boot0 所佔的容量很小,因為放在 MBR 的程式無法超過 512 bytes.

顯示如下表:

Example 5-1. boot0 的顯示畫面

    F1 DOS
    F2 FreeBSD
    F3 Linux
    F4 ??
    F5 Drive 1
    
    Default: F2

5.2.2. boot1

boot1 位於開機磁區上的開機磁軌裡,這裡就是 boot0 或是任何其他存放於 MBR 的程式所要尋找以繼續完成開機程序的地方。

boot1 也是很小,因為容量無法超過 512 bytes,不過這對 FreeBSD disklabel 的而言已經足夠。 disklabel 是用來儲存 slice 的相關訊息, 並去找到和執行 boot2。

5.2.3. boot2

boot2 比較高階,boot2 必須要在 FreeBSD 的檔案系統上找到檔案, 並提供一個介面去選擇 kernel 或 loader 來執行。

因為 loader 比 boot2 又更加高級,而且易於設定,所以 boot2 通常會執行它, 不過之前 boot2 設定是直接執行 kernel。

Example 5-2. boot2 的畫面

    >> FreeBSD/i386 BOOT
    Default: 0:wd(0,a)/kernel
    boot: