FreeBSD的boot0階段介紹(轉)

BSDLite發表於2007-08-12
FreeBSD的boot0階段介紹(轉)[@more@]【導讀】本文介紹了FreeBSD系統啟動的第一階段。


讓我們看一下檔案/boot/boot0。這是一個僅512位元組的小檔案。如果在FreeBSD安裝過程中選擇“bootmanager”,這個檔案中的內容將被寫入硬碟MBR 如前所述,INT 0x19指令裝載MBR,也就是boot0的內容,至記憶體地址0x7c00。再看檔案sys/boot/i386/boot0/boot0.s,可以猜想這裡面發生了什麼 - 這是引導管理器,一段由 Robert Nordier書寫的令人起敬的程式片段。

MBR裡,也就是boot0裡,從偏移量0x1be開始有一個特殊的結構,稱為分割槽表。其中有4條記錄(稱為分割槽記錄),每條記錄16位元組。分割槽記錄表示硬碟如何被劃分,在FreeBSD的術語中,這被稱為slice(d)。16位元組中有一個標誌位元組決定這個分割槽是否可引導。有僅只能有一個分割槽可設定這一標誌。否則,boot0的程式碼將拒絕繼續執行。

一個分割槽記錄有如下域:
*1位元組 檔案系統型別
*1位元組 可引導標誌
*6位元組 CHS格式描述符
*8位元組 LBA格式描述符
一個分割槽記錄描述符包含某一分割槽在硬碟上的確切位置資訊。LBA和CHS兩種描述符指示相同的資訊,但是指示方式有所不同:LBA (邏輯塊定址,Logical Block Addressing)指示分割槽的起始扇區和分割槽長度,而CHS(柱面 磁頭扇區)指示首扇區和末扇區。 引導管理器掃描分割槽表,並在螢幕上顯示選單,以便使用者可以選擇用於引導的磁碟和分割槽。在鍵盤上按下相應的鍵後,boot0進行如下動作:
*標記選中的分割槽為可引導,清除以前的可引導標誌
*記住本次選擇的分割槽以備下次引導時作為預設項
*裝載選中分割槽的第一個扇區,並跳轉執行之
什麼資料會存在於一個可引導扇區(這裡指FreeBSD扇區)的第一扇區裡呢?正如你已經猜到的,那就是boot2。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-949202/,如需轉載,請註明出處,否則將追究法律責任。

相關文章