FreeBSD開機流程

電腦開啟電源後,是由BIOS來掌管開機流程,他會向CMOS取得設定值並偵測硬體狀態,如果都沒問題則啟動CMOS中所記錄的第一優先啟動順序,之後他會讀取所選磁碟第0軌中的MBR(FreeBSD 放在 MBR 的 Boot Manager 程式就叫做 boot0),並將工作交給MBR接手,MBR會去搜尋硬碟中第一個可開機的partition。


圖片說明:sector 0存放bootcode1,sector1存放disklabel,sector 2~15存放bootcode2,如果檔案系統為UFS1則superblock存放於sector16 若檔案系統為UFS2則superblock存放於sector128


因boot0只有512bytes不足以完成開機,因此必須分幾個階段來完成。

FreeBSD的開機使用了三個階段來進行,第一階段:MBR進到partition後會搜尋此partition中的第一個sector(sector 0),裡面存放著boot1,執行boot1。

第二階段:執行boot1之後boot1會去找到長度比boot1還長許多的boot2並執行他。boot2 位於 disklabel 及 UFS 的 superblock 中間,大小約7K,它的功能更複雜一點,可以找到位於 FreeBSD檔案系統根目錄下 /boot 中一個叫 loader 的程式,由 loader來將系統kernel載入並執行。

第三階段:執行/boot/loader,loader執行完一些設定後就會去載入系統的kernel,至此開機就完成了。