歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 硬盤主引導記錄MBR結構詳解

硬盤主引導記錄MBR結構詳解

日期:2017/2/27 16:05:03   编辑:Linux教程
硬盤的0柱面、0磁頭、1扇區稱為主引導扇區,FDISK程序寫到該扇區的內容稱為主引導記錄(MBR)。該記錄占用512個字節,它用語硬盤啟動時將系統控制權交給用戶指定的,並在分區表中登記了的某個操作系統區。

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)。
MBR引導程序段的執行流程如圖6-16所示。

硬盤邏輯驅動器的分區表鏈結構
硬盤是由很多個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所示。
硬盤 第一個虛擬 第二個虛擬 第三個虛擬
MBR分區表 MBR分區表 MBR分區表 MBR分區表 定義C:盤 ------------> 定義D:盤 -----------> 定義E:盤 ------------> 定義F:盤 描述剩余空間 描述剩余空間 描述剩余空間 描述剩余空間 未用 未用 未用 未用 未用 未用 未用 未用 55AA 55AA 55AA 55AA 圖具有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就是用這種方法來使一個擴展分區看起來象是有多個硬盤。
從圖中可以看到,位於磁盤柱面0、磁頭0、扇區1上MBR的分區表指向基本分區及擴展分區中的第一個邏輯盤。

圖6-16 MBR引導程序段執行流程
Copyright © Linux教程網 All Rights Reserved