搜尋此網誌

2011年5月5日 星期四

Master Boot Record (MBR) [主要開機紀錄]

Master Boot Record (MBR)[主要開機紀錄]在x86電腦是一個分割磁區位於硬碟的第一個磁區(C/H/S=0/0/1). MBR佔用正好一個磁區(512 bytes)。
CHS(Cylinder-Head-Sector)
LBA(Logical block addressing)



Partition sector(分割磁區)
每個分割需求附帶分割磁區。分割磁區描述這劃分,換言,它包含的資訊像是分割區的開始與結束,還有分割型態。所有分割磁區有相同的結構,請看format of partition sector(分割磁區格式)。
MBR是一般的分割磁區作為主要跟延伸劃分。相反地,每個邏輯磁碟適用於一個隔離的分割磁區,它描述在操作上的邏輯分割與在其他的操作上包含分割磁區的位置,當作下一個邏輯的磁碟。


Boot Sectot(開機磁區)
開機磁區是一個可啟動作業系統分割的起始磁區。開機磁區包含一個小程式。當這程式被載入,然後執行開機對應其作業系統。開機磁區的內容與格式取決於作業系統。某種開機磁區可因此只被使用於開起一種特殊作業系統,但對於其他作業系統將沒有開機的功能。

Format of partition sector(分割磁區的格式)
一個分割磁區描述一個或多個分割。那就是,它包含資訊關於分割的位置、容量、型態。


所有分割磁區有完全相同格式(如下圖)。它應該被提到,不管怎樣,那開機載入程式是只能存在於MBR分割磁區。在此分割磁區對於邏輯磁碟這個開機載入程式將是空白的。


分隔磁區 (長度 512 bytes)
Offset Bytes Meaning
000h 446 boot loader code(開機載入程式)
1BEh 16 1. partition entry(分割欄位1)
1CEh 16 2. partition entry(分割欄位2)
1DEh 16 3. partition entry(分割欄位3)
1EEh 16 4. partition entry(分割欄位4)
1FEh 2 signature 標記 (55h AAh)
Partition entry 分割欄位 (長度 16 bytes)

偏移 位元組  Meaning
00h   1       80h = active partition / 00h = not active
01h   1       begin of partition (head number)
02h   1       begin of partition (sector number) [*]
03h   1       begin of partition (cylinder number) [*]
04h   1       partition ID(分割型態碼)
05h   1       end of partition (head number)
06h   1       end of partition (sector number) [*]
07h   1       end of partition (cylinder number) [*]
08h   4       rel. sectors (# sec. to begin of partition)
0Ch   4       number of sectors in partition

[*] Remark 註記

位元組(byte)為磁區數量(Offset 2 resp.6)包含CHS磁區數量在位元0~5。因此在CHS格式中磁區數量佔領6個位元。這剩餘兩個位元6+7屬於CHS磁柱數量,它們意味著CHS磁柱數量高位元8+9。位元組(byte)為磁柱數量(offset 3 resp.7)包含CHS磁柱數量這低位元0-7。因此在CHS格式中磁柱數量佔用10位元。

位元組(byte)在偏移位址0詳細指名這分割是活動中或不是。在標準開機處理(沒有開機管理程式)分個被標記當作活動是讓開機自動地。


顯然的這裡有兩個方法去指示分割位置。那就是CHS與LBA格式。在CHS格式中,分割位置被具體指明經由cylinder(磁柱)/head(磁頭)/sector(磁區)數量,這三個欄位也指示開始與結束的分割區(分別為24位元)。在LBA格式中,分割位置被具體指明經由相關磁區(起始磁區)與磁區數量總計(分別為32位元)。

關於磁碟容量8G用CHS格式24位元就足以說明所有的分割。

對於大磁碟此24位元不再足夠。LBA 32位元允許全磁碟磁區的定址空間上升到2048 GB(2TB)的最大磁碟空間。跟當今典型磁碟容量(50-100GB)此上限以被提升(20~40倍)。

x86 Boot Process(開機處理)
當x86機器第一次開啟,系統BIOS檢查對於特殊的系統參數,路如機器上的RAM容量、日期與時間,目前的磁碟裝置,還有會檢查這些可開機磁碟的順序。通常BIOS被配置檢查機器的軟碟機或光碟機(或許兩者都有),在此之前嘗試的從硬碟開機。如果無法開機的媒體被找到在可移動的裝置上,BIOS通常轉向第一個硬碟的第一個磁區為了指令可以找到並載入作業系統的地方。這第一個磁區-MBR-開始載入處理一個預選的作業系統,一個作業系統的GRUB選單選取,或是一個GRUB命令列的介面去執行一個特殊的項目。


GRUB的載入處理,然後是作業系統,涉及幾個作業步驟:
1. 載入主要開機載入程式,通常稱之為階段1。這主要開機載入程式必須存在一個非常小的空間配置作為MBR,它需小於512Bytes。因此,主要開機載入程式只有一件事,就是載入次要開機載入程式,由於MBR這裡沒有足夠空間。
2. 載入次要開機載入程式,通常稱之為階段2。這次要開機載入程式真正的帶起先進的機能那將允許你載入一個特殊的作業系統。有GRUB,這程式它永許你去顯示一個表單或輸入指令。
3. 載入作業系統,例如Linux核心,在一個明確指定的分割區。一旦GRUB收到正確的指令對作業系統啟始,不是從它的指令列或是配置檔案,它找到必要開機檔案與支配全部機器作業系統的控制。
注意:一些檔案系統,和檔案系統配置一樣,可能需要一個階段1.5 ,檔案實質上缺口的橋樑介於主要與次要開機載入程式。


例如,如果階段2開機載入程式檔案是利用一個檔案系統去切割出來的分割區,那階段1開機載入程式不能存取,它可能被指向階段1開機載入程式去載入附加的指令,從階段1.5檔案允許她去讀取階段2開機載入程式檔案。關於更多資訊,請參考GRUB資訊網頁。

上述的開機方法是被呼叫直接載入,因為指令被使用直接載入作業系統,在沒有媒介程式碼在開機載入程式與作業系統的主要檔案(像是核心)之間,這開機處理使用藉由不同作業系統可能有些微的不同。

例如,微軟的DOS與視窗作業系統有徹底覆寫在MBR上的任何東西的傾向,當它們被安裝沒有包含正確MBR的任何配置。
這毀壞存在MBR上的所有資訊由其他的作業系統,例如Red Hat Linux。微軟作業系統,像各式各樣其他種作業系統,被載入使用鏈結載入開機的方法。
有了這個方法,MBR簡易指向持有作業系統的第一個分割磁區,哪裡它找出特殊必要的檔案,去開啟那真正的作業系統。

GRUB支援兩者直接跟鏈結載入開機方法。幾乎任何形式的作業系統,最受歡迎的檔案系統都可能使用它,還有幾乎所有系統BIOS都可以識別它。


GRUB包含特徵的數值,那會使得它比其他可利用的開機載入程式更好。這些都是重要的:




沒有留言:

張貼留言