天天看點

主引導記錄

 簡介

  主引導記錄(mbr,master boot record)是位于磁盤最前邊的一段引導(loader)代碼。它負責磁盤作業系統(dos)對磁盤進行讀寫時分區合法性的判别、分區引導資訊的定位,它由磁盤作業系統(dos)在對硬碟進行初始化時産生的。

  通常,我們将包含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 (按Enter鍵)

  -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的分區表指向基本分區及擴充分區中的第一個邏輯盤。