天天看點

硬碟主引導記錄(MBR)及其結構

<b></b><b></b> 

<b></b><b> </b>

<b> </b><b>硬碟的</b><b>0</b><b>柱面、</b><b>0</b><b>磁頭、</b><b>1</b><b>扇區稱為主引導扇區,</b><b>FDISK</b><b>程式寫到該扇區的内容稱為主引導記錄(</b><b>MBR</b><b>)。該記錄占用</b><b>512</b><b>個位元組,它用語硬碟啟動時将系統控制權交給使用者指定的,并在分區表中登記了的某個作業系統區。</b><b></b>

1.MBR<b>的讀取</b><b></b>

    <b>硬碟的引導記錄(</b><b>MBR</b><b>)是不屬于任何一個作業系統,也不能用作業系統提供的磁盤操作指令來讀取它。但我們可以用</b><b>ROM-BIOS</b><b>中提供的</b><b>INT13H</b><b>的</b><b>2</b><b>号功能來讀出該扇區的内容,也可用軟體工具</b><b>Norton8.0</b><b>中的</b><b>DISKEDIT.EXE</b><b>來讀取。</b><b></b>

<b>用</b><b>INT13H</b><b>的讀磁盤扇區功能的調用參數如下:</b><b></b>

<b>入口參數:</b><b>AH=2 </b><b>(指定功能号)</b><b></b>

AL=<b>要讀取的扇區數</b><b></b>

DL=<b>磁盤号(</b><b>0</b><b>、</b><b>1-</b><b>軟碟;</b><b>80</b><b>、</b><b>81-</b><b>硬碟)</b><b></b>

DH=<b>磁頭号</b><b></b>

CL<b>高</b><b>2</b><b>位</b><b>+CH=</b><b>柱面号</b><b></b>

CL<b>低</b><b>6</b><b>位</b><b>=</b><b>扇區号</b><b></b>

CS:BX=<b>存放讀取資料的記憶體緩沖位址</b><b></b>

<b>出口參數:</b><b>CS:BX=</b><b>讀取資料存放位址</b><b></b>

<b>錯誤資訊:如果出錯</b><b>CF=1 AH=</b><b>錯誤代碼</b><b></b>

<b>用</b><b>DEBUG</b><b>讀取位于硬碟</b><b>0</b><b>柱面、</b><b>0</b><b>磁頭、</b><b>1</b><b>扇區的操作如下:</b><b></b>

A&gt;DEBUG

-A 100

XXXX:XXXX MOV AX,0201 <b>(用功能号</b><b>2</b><b>讀</b><b>1</b><b>個扇區)</b><b></b>

XXXX:XXXX MOV BX,1000 <b>(把讀出的資料放入緩沖區的位址為</b><b>CS:1000</b><b>)</b><b></b>

XXXX:XXXX MOV CX,0001 <b>(讀</b><b>0</b><b>柱面,</b><b>1</b><b>扇區)</b><b></b>

XXXX:XXXX MOV DX,0080 <b>(指定第一實體盤的</b><b>0</b><b>磁頭)</b><b></b>

XXXX:XXXX INT 13

XXXX:XXXX INT 3

XXXX:XXXX <b>(按Enter鍵)</b><b></b>

-G=100 <b>(執行以上程式段)</b><b></b>

-D 1000 11FF <b>(顯示</b><b>512</b><b>位元組的</b><b>MBR</b><b>内容)</b><b></b>

2.MBR<b>的組成</b><b></b>

<b>一個扇區的硬碟主引導記錄</b><b>MBR</b><b>由如圖</b><b>6-15</b><b>所示的</b><b>4</b><b>個部分組成。</b><b></b>

<b>·主引導程式(偏移位址</b><b>0000H--0088H</b><b>),它負責從活動分區中裝載,并運作系統引導程式。</b><b></b>

<b>·出錯資訊資料區,偏移位址</b><b>0089H--00E1H</b><b>為出錯資訊,</b><b>00E2H--01BDH</b><b>全為</b><b>0</b><b>位元組。</b><b></b>

<b>·分區表(</b><b>DPT,Disk Partition Table</b><b>)含</b><b>4</b><b>個分區項,偏移位址</b><b>01BEH--01FDH,</b><b>每個分區表項長</b><b>16</b><b>個位元組,共</b><b>64</b><b>位元組為分區項</b><b>1</b><b>、分區項</b><b>2</b><b>、分區項</b><b>3</b><b>、分區項</b><b>4</b><b>。</b><b></b>

<b>·結束标志字,偏移位址</b><b>01FE--01FF</b><b>的</b><b>2</b><b>個位元組值為結束标志</b><b>55AA,</b><b>如果該标志錯誤系統就不能啟動。</b><b></b>

<b>0000-0088</b>

<b> </b>

<b>Master Boot Record </b>

<b>主引導程式</b>

<b>主引導</b>

<b>程式</b>

<b>0089-01BD</b>

<b>出錯資訊資料區</b>

<b>資料區</b>

<b>01BE-01CD</b>

<b>分區項1(16位元組)</b>

<b>分區表</b>

<b>01CE-01DD</b>

<b>分區項2(16位元組)</b>

<b>01DE-01ED</b>

<b>分區項3(16位元組)</b>

<b>01EE-01FD</b>

<b>分區項4(16位元組)</b>

<b>01FE</b>

<b>55</b>

<b>結束标志</b>

<b>01FF</b>

<b>AA</b>

<b></b>

<b>圖6-15 MBR的組成結構圖</b>

3.MBR中的分區資訊結構

    占用512個位元組的MBR中,偏移位址01BEH--01FDH的64個位元組,為4個分區項内容(分區資訊表)。它是由磁盤媒體類型及使用者在使用FDISK定義分區說确定的。在實際應用中,FDISK對一個磁盤劃分的主分區可少于4個,但最多不超過4個。每個分區表的項目是16個位元組,其内容含義如表6-19所示。

表6-19 分區項表(16位元組)内容及含義

<b>存貯位元組位</b>

<b>内容及含義</b>

<b>第1位元組</b>

<b>引導标志。若值為80H表示活動分區,若值為00H表示非活動分區。</b>

<b>第2、3、4位元組</b>

<b>本分區的起始磁頭号、扇區号、柱面号。其中:</b>

<b>    </b><b>磁頭号——第2位元組;</b>

<b>    </b><b>扇區号——第3位元組的低6位;</b>

<b>    </b><b>柱面号——為第3位元組高2位+第4位元組8位。</b>

<b>第5位元組</b>

<b>分區類型符。</b>

<b>    00H</b><b>——表示該分區未用(即沒有指定);</b>

<b>    06H</b><b>——FAT16基本分區;</b>

<b>    0BH</b><b>——FAT32基本分區;</b>

<b>    05H</b><b>——擴充分區;</b>

<b>    07H</b><b>——NTFS檔案系統;</b>

<b>    0FH</b><b>——(LBA模式)擴充分區(83H為Linux分區等)。</b>

<b>第6、7、8位元組</b>

<b>本分區的結束磁頭号、扇區号、柱面号。其中:</b>

<b>    </b><b>磁頭号——第6位元組;</b>

<b>    </b><b>扇區号——第7位元組的低6位;</b>

<b>    </b><b>柱面号——第7位元組的高2位+第8位元組。</b>

<b>第9、10、11、12位元組</b>

<b>本分區之前已用了的扇區數。</b><b> </b>

<b>第13、14、15、16位元組</b>

<b>本分區的總扇區數。</b><b> </b>

4.MBR<b>的主要功能及工作流程</b><b></b>

    <b>啟動PC機時,系統首先對硬體裝置進行測試,測試成功後進入自舉程式INT 19H,然後讀系統磁盤0柱面、0磁頭、1扇區的主引導記錄(MBR)内容到記憶體指定單元0:7C00位址開始的區域,并執行MBR程式段。</b>

    硬碟的主引導記錄(MBR)是不屬于任何一個作業系統的,它先于所有的作業系統而被調入記憶體,并發揮作用,然後才将控制權交給主分區(活動分區)内的作業系統,并用主分區資訊表來管理硬碟。

MBR程式段的主要功能如下:

·檢查硬碟分區表是否完好。

·在分區表中尋找可引導的“活動”分區。

·将活動分區的第一邏輯扇區内容裝入記憶體。在DOS分區中,此扇區内容稱為DOS引導記錄(DBR)。

MBR引導程式段的執行流程如圖6-16所示。

硬碟主引導記錄(MBR)及其結構

                             <b>圖6-16 MBR引導程式段執行流程</b>

    硬碟邏輯驅動器的分區表鍊結構

    硬碟是由很多個512位元組的扇區組成,而這些扇區會被組織成一個個的“分區”。

硬碟的分區規則是:一個分區的所有扇區必須連續,硬碟可以有最多4個實體上的分區,這4個實體分區可以時個主分區或者3個主分區加一個擴充分區。在DOS/Windows管理下的擴充分區裡,可以而且必須再繼續劃分邏輯分區(邏輯盤)。

從MS-DOS3.2問世以後,使用者就可以在一個實體硬碟驅動器上劃分一個主分區和一個擴充分區,并在擴充分區上建立多個邏輯驅動器,也即我們常說的一個實體盤上多個邏輯盤。

舉一個例子,一個10G的硬碟,安裝Windows,有C:、D:、E:三個邏輯盤,那麼它的分區情況可以是如下的方式:

分區一:主分區2GB,格式化為C:盤。

分區二:擴充分區8GB。它被再劃分為兩個各4GB的邏輯盤,格式化為以D:和E:盤。

在一個劃分有多個主分區的硬碟上,則可安裝多個不同的作業系統。如Windows、Linux、Solaris等。每個作業系統自己去管理配置設定給自己的分區。但是,每個作業系統對分區的操作方式是不同的。對于DOS/Windows來說,它能夠把它所能管轄的一個主分區和一個擴充分區格式化,然後按照C:、D:、E:邏輯盤的方式來管理。而Linux則不同,它是把“分區”看作一個裝置,既沒有“擴充分區”的概念,也沒有“邏輯盤”的概念。

1.邏輯盤的連結關系

在FAT檔案系統中,硬碟的邏輯盤字元用字元C:、D:、E:、...、Z:來表示。主分區一般被格式化成C:盤,從D:盤開始的邏輯盤是建立在擴充分區之上的。在系統進行讀寫操作時,DOS首先檢視主引導記錄(MBR)中的分區資訊表,分區項将指向活動主分區的DOS引導記錄(DBR)。

MBR中的分區表位于0柱面、0磁頭、1扇區内,以位移1BEH開始的第一分區表作為鍊首,有表内的連結表項訓示下一分區表的實體位置(xx柱面、0磁頭、1扇區),在該位置的扇區内同樣位移1BEH處,儲存着第2張分區表,依次類推,直至指向最後一張分區表的實體位置(yy柱面、0磁頭、1扇區)。因該分區表内不存在連結表項,即作為分區表鍊的鍊尾。如圖6-17所示。

<b>   </b><b>硬碟                      第一個虛拟              第二個虛拟                   第三個虛拟 </b>

<b> MBR</b><b>分區表                    MBR分區表               MBR分區表                    MBR分區表 </b>

<b>定義</b><b>C:</b><b>盤</b><b> ------------&gt; </b><b>定義</b><b>D:</b><b>盤</b><b> -----------&gt; </b><b>定義</b><b>E:</b><b>盤</b><b> ------------&gt; </b><b>定義</b><b>F:</b><b>盤</b><b> </b>

<b>描述剩餘空間</b>

<b>描述剩餘空間</b><b> </b><b>描述剩餘空間</b><b> </b><b>描述剩餘空間</b><b> </b>

<b>未用</b>

<b>未用</b><b> </b><b>未用</b><b> </b><b>未用</b><b> </b>

<b>55AA</b>

<b>55AA 55AA 55AA </b>

<b>圖6-17 具有4個邏輯盤的分區連結清單示意圖</b>

舉例來說,本來位于柱面0、磁頭0、扇區1上的分區表的每一項記錄和主分區的DBR之間有一對應的關系,但是,如果在擴充分區中建立了多個邏輯盤,例如D:、E:、F:,該分區表中的分區項可指向第一個邏輯盤:,但對于其它的邏輯盤,則就沒有這種對應關系了。為能夠查找擴充分區中的多個邏輯盤,DOS系統可做如下安排:

·如果硬碟隻有一個主分區,即是将整個硬碟作為一個邏輯盤C:,則分區指令FDISK隻在硬碟的柱面0、磁頭0、扇區1上建立一個MBR。

·如果硬碟被劃分成2--4個分區,則FDISK除了在柱面0、磁頭0、扇區1上建立一個MBR之外,還在擴充分區的每個邏輯盤的起始扇區上都建立一個虛拟MBR,每一個虛拟MBR用于擴充分區上的一個邏輯盤。

·擴充分區的第一個扇區不是用于一個邏輯盤的DBR,而是指向一個“擴充的”分區表,即第一個虛拟的MBR。該邏輯盤DBR扇區的起點應為虛拟MBR的下一個磁道1扇區。

這些MBR中的各個分區表連結成一個如圖6-17所示的分區表鍊。這是一個硬碟具有4個表項所描述的内容。

DOS就是用這種方法來使一個擴充分區看起來象是有多個硬碟。

從圖6-17中可以看到,位于磁盤柱面0、磁頭0、扇區1上MBR的分區表指向基本分區及擴充分區中的第一個邏輯盤。

<b> </b>

繼續閱讀