1. 程式人生 > >主引導記錄 MBR

主引導記錄 MBR

主引導記錄(MBR,Master Boot Record)是位於磁碟最前邊的一段引導(Loader)程式碼。它負責磁碟作業系統對磁碟進行讀寫時分割槽合法性的差別、分割槽引導資訊的定位,它由磁碟作業系統在對硬碟進行初始化時產生的。

  通常,我們將包含MBR引導程式碼的扇區稱為主引導扇區。因這一扇區中,引導程式碼佔有絕大部分的空間,故而將習慣將該扇區稱為MBR扇區(簡稱MBR)。由於這一扇區承擔有不同於磁碟上其他普通儲存空間的特殊管理職能,作為管理整個磁碟空間的一個特殊空間,它不屬於磁碟上的任何分割槽,因而分割槽空間內的格式化命令FORMAT. COM不能清除主引導記錄的任何資訊。

MBR結構圖

[1]

 主引導扇區由三個部分組成(共佔用512個位元組):

  1.主載入程式即主引導記錄(MBR)(佔446個位元組)

  可在FDISK程式中找到,它用於硬碟啟動時將系統控制轉給使用者指定的並在分割槽表中登記了的某個作業系統。

  2.磁碟分割槽表項(DPT,Disk Partition Table)

  由四個分割槽表項構成(每個16個位元組)。

  負責說明磁碟上的分割槽情況,其內容由磁碟介質及使用者在使用FDISK定義分割槽時決定。(具體內容略)

  3.結束標誌(佔2個位元組)

  其值為AA55,儲存時低位在前,高位在後,即看上去是55AA(十六進位制)。

1.MBR的讀取

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

  用INT13H的讀磁碟扇區功能的呼叫引數如下:

  入口引數:AH=2 (指定功能號)

  AL=要讀取的扇區數

  DL=磁碟號(0、1-軟盤;80、81-硬碟)

  DH=磁頭號

  CL高2位+CH=柱面號

  CL低6位=扇區號

  CS:BX=存放讀取資料的記憶體緩衝地址

  出口引數:CS:BX=讀取資料存放地址

  錯誤資訊:如果出錯CF=1 AH=錯誤程式碼

  用DEBUG讀取位於硬碟0柱面、0磁頭、1扇區的操作如下:

  A>DEBUG

  -A 100

  XXXX:XXXX MOV AX,0201 (用功能號2讀1個扇區)

  XXXX:XXXX MOV BX,1000 (把讀出的資料放入緩衝區的地址為CS:1000)

  XXXX:XXXX MOV CX,0001 (讀0柱面,1扇區)

  XXXX:XXXX MOV DX,0080 (指定第一物理盤的0磁頭)

  XXXX:XXXX INT 13

  XXXX:XXXX INT 3

  XXXX:XXXX (按回車鍵)

  -G=100 (執行以上程式段)

  -D 1000 11FF (顯示512位元組的MBR內容)

2.MBR的組成

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

  ·主載入程式(偏移地址0000H--0088H),它負責從活動分割槽中裝載,並執行系統載入程式。

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

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

  ·結束標誌字,偏移地址01FE--01FF的2個位元組值為結束標誌55AA,如果該標誌錯誤系統就不能啟動。

0000-0088 Master Boot Record
主載入程式
主引導
程式
0089-01BD 出錯資訊資料區 資料區
01BE-01CD 分割槽項1(16位元組) 分割槽表
01CE-01DD 分割槽項2(16位元組)
01DE-01ED 分割槽項3(16位元組)
01EE-01FD 分割槽項4(16位元組)
01FE 55 結束標誌
01FF AA

 圖6-15 MBR的組成結構圖

3.MBR中的分割槽資訊結構

  佔用512個位元組的MBR中,偏移地址01BEH--01FDH的64個位元組,為4個分割槽項內容(分割槽資訊表)。它是由磁碟介質型別及使用者在使用 FDISK定義分割槽說確定的。在實際應用中,FDISK對一個磁碟劃分的主分割槽可少於4個,但最多不超過4個。每個分割槽表的專案是16個位元組,其內容含義如表6-19所示。

  表6-19 分割槽項表(16位元組)內容及含義

存貯位元組位 內容及含義
第1位元組 引導標誌。若值為80H表示活動分割槽,若值為00H表示非活動分割槽。
第2、3、4位元組 本分割槽的起始磁頭號、扇區號、柱面號。其中:
磁頭號——第2位元組;
扇區號——第3位元組的低6位;
柱面號——為第3位元組高2位+第4位元組8位。
第5位元組 分割槽型別符。
00H——表示該分割槽未用(即沒有指定);
06H——FAT16基本分割槽;
0BH——FAT32基本分割槽;
05H——擴充套件分割槽;
07H——NTFS分割槽;
0FH——(LBA模式)擴充套件分割槽(83H為Linux分割槽等)。
第6、7、8位元組 本分割槽的結束磁頭號、扇區號、柱面號。其中:
磁頭號——第6位元組;
扇區號——第7位元組的低6位;
柱面號——第7位元組的高2位+第8位元組。
第9、10、11、12位元組 本分割槽之前已用了的扇區數。
第13、14、15、16位元組 本分割槽的總扇區數。

4.MBR的主要功能及工作流程

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

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

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

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

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

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

  硬碟邏輯驅動器的分割槽錶鏈結構

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

  硬碟的分割槽規則是:一個分割槽的所有扇區必須連續,硬碟可以有最多4個物理上的分割槽,這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所示。

  硬碟 第一個虛擬 第二個虛擬 第三個虛擬

  MBR分割槽表 MBR分割槽表 MBR分割槽表 MBR分割槽表

定義C:盤 ------------> 定義D:盤 -----------> 定義E:盤 ------------> 定義F:盤
描述剩餘空間 描述剩餘空間 描述剩餘空間 描述剩餘空間
未用 未用 未用 未用
未用 未用 未用 未用
55AA 55AA 55AA 55AA

 圖6-17 具有4個邏輯盤的分割槽連結串列示意圖

  舉例來說,本來位於柱面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的分割槽表指向基本分割槽及擴充套件分割槽中的第一個邏輯盤。