主引導(dǎo)記錄(MBR,Master Boot Record)是位于磁盤最前邊的一段引導(dǎo)(Loader)代碼。它負(fù)責(zé)磁盤操作系統(tǒng)對磁盤進(jìn)行讀寫時分區(qū)合法性的差別、分區(qū)引導(dǎo)信息的定位,它由磁盤操作系統(tǒng)在對硬盤進(jìn)行初始化時產(chǎn)生的。
通常,我們將包含MBR引導(dǎo)代碼的扇區(qū)稱為主引導(dǎo)扇區(qū)。因這一扇區(qū)中,引導(dǎo)代碼占有絕大部分的空間,故而將習(xí)慣將該扇區(qū)稱為MBR扇區(qū)(簡稱MBR)。由于這一扇區(qū)承擔(dān)有不同于磁盤上其他普通存儲空間的特殊管理職能,作為管理整個磁盤空間的一個特殊空間,它不屬于磁盤上的任何分區(qū),因而分區(qū)空間內(nèi)的格式化命令FORMAT. COM不能清除主引導(dǎo)記錄的任何信息。
主引導(dǎo)扇區(qū)由三個部分組成(共占用512個字節(jié)):
1.主引導(dǎo)程序即主引導(dǎo)記錄(MBR)(占446個字節(jié))
可在FDISK程序中找到,它用于硬盤啟動時將系統(tǒng)控制轉(zhuǎn)給用戶指定的并在分區(qū)表中登記了的某個操作系統(tǒng)。
2.磁盤分區(qū)表項(DPT,Disk Partition Table)
由四個分區(qū)表項構(gòu)成(每個16個字節(jié))。
負(fù)責(zé)說明磁盤上的分區(qū)情況,其內(nèi)容由磁盤介質(zhì)及用戶在使用FDISK定義分區(qū)時決定。(具體內(nèi)容略)
3.結(jié)束標(biāo)志(占2個字節(jié))
其值為AA55,存儲時低位在前,高位在后,即看上去是55AA(十六進(jìn)制)。
1.MBR的讀取
硬盤的引導(dǎo)記錄(MBR)是不屬于任何一個操作系統(tǒng),也不能用操作系統(tǒng)提供的磁盤操作命令來讀取它。但我們可以用ROM-BIOS中提供的INT13H的2號功能來讀出該扇區(qū)的內(nèi)容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來讀取。
用INT13H的讀磁盤扇區(qū)功能的調(diào)用參數(shù)如下:
入口參數(shù):AH=2 (指定功能號)
AL=要讀取的扇區(qū)數(shù)
DL=磁盤號(0、1-軟盤;80、81-硬盤)
DH=磁頭號
CL高2位+CH=柱面號
CL低6位=扇區(qū)號
CS:BX=存放讀取數(shù)據(jù)的內(nèi)存緩沖地址
出口參數(shù):CS:BX=讀取數(shù)據(jù)存放地址
錯誤信息:如果出錯CF=1 AH=錯誤代碼
用DEBUG讀取位于硬盤0柱面、0磁頭、1扇區(qū)的操作如下:
A>DEBUG
-A 100
XXXX:XXXX MOV AX,0201 (用功能號2讀1個扇區(qū))
XXXX:XXXX MOV BX,1000 (把讀出的數(shù)據(jù)放入緩沖區(qū)的地址為CS:1000)
XXXX:XXXX MOV CX,0001 (讀0柱面,1扇區(qū))
XXXX:XXXX MOV DX,0080 (指定第一物理盤的0磁頭)
XXXX:XXXX INT 13
XXXX:XXXX INT 3
XXXX:XXXX (按回車鍵)
-G=100 (執(zhí)行以上程序段)
-D 1000 11FF (顯示512字節(jié)的MBR內(nèi)容)
2.MBR的組成
一個扇區(qū)的硬盤主引導(dǎo)記錄MBR由如圖6-15所示的4個部分組成。
·主引導(dǎo)程序(偏移地址0000H--0088H),它負(fù)責(zé)從活動分區(qū)中裝載,并運行系統(tǒng)引導(dǎo)程序。
·出錯信息數(shù)據(jù)區(qū),偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節(jié)。
·分區(qū)表(DPT,Disk Partition Table)含4個分區(qū)項,偏移地址01BEH--01FDH,每個分區(qū)表項長16個字節(jié),共64字節(jié)為分區(qū)項1、分區(qū)項2、分區(qū)項3、分區(qū)項4。
·結(jié)束標(biāo)志字,偏移地址01FE--01FF的2個字節(jié)值為結(jié)束標(biāo)志55AA,如果該標(biāo)志錯誤系統(tǒng)就不能啟動。
| 0000-0088 |
Master Boot Record
主引導(dǎo)程序 |
主引導(dǎo)
程序 |
| 0089-01BD | 出錯信息數(shù)據(jù)區(qū) | 數(shù)據(jù)區(qū) |
| 01BE-01CD | 分區(qū)項1(16字節(jié)) | 分區(qū)表 |
| 01CE-01DD | 分區(qū)項2(16字節(jié)) | |
| 01DE-01ED | 分區(qū)項3(16字節(jié)) | |
| 01EE-01FD | 分區(qū)項4(16字節(jié)) | |
| 01FE | 55 | 結(jié)束標(biāo)志 |
| 01FF | AA |
圖6-15 MBR的組成結(jié)構(gòu)圖
3.MBR中的分區(qū)信息結(jié)構(gòu)
占用512個字節(jié)的MBR中,偏移地址01BEH--01FDH的64個字節(jié),為4個分區(qū)項內(nèi)容(分區(qū)信息表)。它是由磁盤介質(zhì)類型及用戶在使用 FDISK定義分區(qū)說確定的。在實際應(yīng)用中,F(xiàn)DISK對一個磁盤劃分的主分區(qū)可少于4個,但最多不超過4個。每個分區(qū)表的項目是16個字節(jié),其內(nèi)容含義如表6-19所示。
表6-19 分區(qū)項表(16字節(jié))內(nèi)容及含義
| 存貯字節(jié)位 | 內(nèi)容及含義 |
| 第1字節(jié) | 引導(dǎo)標(biāo)志。若值為80H表示活動分區(qū),若值為00H表示非活動分區(qū)。 |
| 第2、3、4字節(jié) |
本分區(qū)的起始磁頭號、扇區(qū)號、柱面號。其中:
磁頭號——第2字節(jié); 扇區(qū)號——第3字節(jié)的低6位; 柱面號——為第3字節(jié)高2位+第4字節(jié)8位。 |
| 第5字節(jié) |
分區(qū)類型符。
00H——表示該分區(qū)未用(即沒有指定); 06H——FAT16基本分區(qū); 0BH——FAT32基本分區(qū); 05H——擴展分區(qū); 07H——NTFS分區(qū); 0FH——(LBA模式)擴展分區(qū)(83H為Linux分區(qū)等)。 |
| 第6、7、8字節(jié) |
本分區(qū)的結(jié)束磁頭號、扇區(qū)號、柱面號。其中:
磁頭號——第6字節(jié); 扇區(qū)號——第7字節(jié)的低6位; 柱面號——第7字節(jié)的高2位+第8字節(jié)。 |
| 第9、10、11、12字節(jié) | 本分區(qū)之前已用了的扇區(qū)數(shù)。 |
| 第13、14、15、16字節(jié) | 本分區(qū)的總扇區(qū)數(shù)。 |
4.MBR的主要功能及工作流程
啟動PC機時,系統(tǒng)首先對硬件設(shè)備進(jìn)行測試,測試成功后進(jìn)入自舉程序INT 19H,然后讀系統(tǒng)磁盤0柱面、0磁頭、1扇區(qū)的主引導(dǎo)記錄(MBR)內(nèi)容到內(nèi)存指定單元0:7C00地址開始的區(qū)域,并執(zhí)行MBR程序段。
硬盤的主引導(dǎo)記錄(MBR)是不屬于任何一個操作系統(tǒng)的,它先于所有的操作系統(tǒng)而被調(diào)入內(nèi)存,并發(fā)揮作用,然后才將控制權(quán)交給主分區(qū)(活動分區(qū))內(nèi)的操作系統(tǒng),并用主分區(qū)信息表來管理硬盤。
MBR程序段的主要功能如下:
·檢查硬盤分區(qū)表是否完好。
·在分區(qū)表中尋找可引導(dǎo)的“活動”分區(qū)。
·將活動分區(qū)的第一邏輯扇區(qū)內(nèi)容裝入內(nèi)存。在DOS分區(qū)中,此扇區(qū)內(nèi)容稱為DOS引導(dǎo)記錄(DBR)。
硬盤邏輯驅(qū)動器的分區(qū)表鏈結(jié)構(gòu)
硬盤是由很多個512字節(jié)的扇區(qū)組成,而這些扇區(qū)會被組織成一個個的“分區(qū)”。
硬盤的分區(qū)規(guī)則是:一個分區(qū)的所有扇區(qū)必須連續(xù),硬盤可以有最多4個物理上的分區(qū),這4個物理分區(qū)可以是4個主分區(qū)或者3個主分區(qū)加一個擴展分區(qū)。在DOS/Windows管理下的擴展分區(qū)里,可以而且必須再繼續(xù)劃分邏輯分區(qū)(邏輯盤)。
從MS-DOS3.2問世以后,用戶就可以在一個物理硬盤驅(qū)動器上劃分一個主分區(qū)和一個擴展分區(qū),并在擴展分區(qū)上創(chuàng)建多個邏輯驅(qū)動器,也即我們常說的一個物理盤上多個邏輯盤。
舉一個例子,一個10G的硬盤,安裝Windows,有C:、D:、E:三個邏輯盤,那么它的分區(qū)情況可以是如下的方式:
分區(qū)一:主分區(qū)2GB,格式化為C:盤。
分區(qū)二:擴展分區(qū)8GB。它被再劃分為兩個各4GB的邏輯盤,格式化為以D:和E:盤。
在一個劃分有多個主分區(qū)的硬盤上,則可安裝多個不同的操作系統(tǒng)。如Windows、Linux、Solaris等。每個操作系統(tǒng)自己去管理分配給自己的分區(qū)。但是,每個操作系統(tǒng)對分區(qū)的操作方式是不同的。對于DOS/Windows來說,它能夠把它所能管轄的一個主分區(qū)和一個擴展分區(qū)格式化,然后按照 C:、D:、E:邏輯盤的方式來管理。而Linux則不同,它是把“分區(qū)”看作一個設(shè)備,既沒有“擴展分區(qū)”的概念,也沒有“邏輯盤”的概念。
1.邏輯盤的鏈接關(guān)系
在FAT 文件系統(tǒng)中,硬盤的邏輯盤字符用字符C:、D:、E:、...、Z:來表示。主分區(qū)一般被格式化成C:盤,從D:盤開始的邏輯盤是建立在擴展分區(qū)之上的。在系統(tǒng)進(jìn)行讀寫操作時,DOS首先查看主引導(dǎo)記錄(MBR)中的分區(qū)信息表,分區(qū)項將指向活動主分區(qū)的DOS引導(dǎo)記錄(DBR)。
MBR中的分區(qū)表位于0柱面、0磁頭、1扇區(qū)內(nèi),以位移1BEH開始的第一分區(qū)表作為鏈?zhǔn)祝斜韮?nèi)的鏈接表項指示下一分區(qū)表的物理位置(xx柱面、0磁頭、1扇區(qū)),在該位置的扇區(qū)內(nèi)同樣位移1BEH處,保存著第2張分區(qū)表,依次類推,直至指向最后一張分區(qū)表的物理位置(yy柱面、0磁頭、1扇區(qū))。因該分區(qū)表內(nèi)不存在鏈接表項,即作為分區(qū)表鏈的鏈尾。如圖6-17所示。
硬盤 第一個虛擬 第二個虛擬 第三個虛擬
MBR分區(qū)表 MBR分區(qū)表 MBR分區(qū)表 MBR分區(qū)表
| 定義C:盤 | ------------> | 定義D:盤 | -----------> | 定義E:盤 | ------------> | 定義F:盤 |
| 描述剩余空間 | 描述剩余空間 | 描述剩余空間 | 描述剩余空間 | |||
| 未用 | 未用 | 未用 | 未用 | |||
| 未用 | 未用 | 未用 | 未用 | |||
| 55AA | 55AA | 55AA | 55AA |
圖6-17 具有4個邏輯盤的分區(qū)鏈表示意圖
舉例來說,本來位于柱面0、磁頭0、扇區(qū)1上的分區(qū)表的每一項記錄和主分區(qū)的DBR之間有一對應(yīng)的關(guān)系,但是,如果在擴展分區(qū)中建立了多個邏輯盤,例如D:、E:、F:,該分區(qū)表中的分區(qū)項可指向第一個邏輯盤:,但對于其它的邏輯盤,則就沒有這種對應(yīng)關(guān)系了。為能夠查找擴展分區(qū)中的多個邏輯盤,DOS系統(tǒng)可做如下安排:
·如果硬盤只有一個主分區(qū),即是將整個硬盤作為一個邏輯盤C:,則分區(qū)命令FDISK只在硬盤的柱面0、磁頭0、扇區(qū)1上建立一個MBR。
·如果硬盤被劃分成2--4個分區(qū),則FDISK除了在柱面0、磁頭0、扇區(qū)1上建立一個MBR之外,還在擴展分區(qū)的每個邏輯盤的起始扇區(qū)上都建立一個虛擬MBR,每一個虛擬MBR用于擴展分區(qū)上的一個邏輯盤。
·擴展分區(qū)的第一個扇區(qū)不是用于一個邏輯盤的DBR,而是指向一個“擴展的”分區(qū)表,即第一個虛擬的MBR。該邏輯盤DBR扇區(qū)的起點應(yīng)為虛擬MBR的下一個磁道1扇區(qū)。
這些MBR中的各個分區(qū)表鏈接成一個如圖6-17所示的分區(qū)表鏈。這是一個硬盤具有4個表項所描述的內(nèi)容。
DOS就是用這種方法來使一個擴展分區(qū)看起來象是有多個硬盤。
從圖6-17中可以看到,位于磁盤柱面0、磁頭0、扇區(qū)1上MBR的分區(qū)表指向基本分區(qū)及擴展分區(qū)中的第一個邏輯盤。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

