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

來源:互聯網
上載者:User

 

硬碟的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由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

 

3.MBR中的分區資訊結構

    佔用512個位元組的MBR中,位移地址01BEH--01FDH的64個位元組,為4個分區項內容(分區資訊表)。它是由磁碟介質類型及使用者在使用 FDISK定義分區時確定的。在實際應用中,FDISK對一個磁碟劃分的主要磁碟分割可少於4個,但最多不超過4個。每個分區表的項目是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的主要功能及工作流程

在CPU上電之後,若由硬碟啟動,則BIOS將硬碟的主引導記錄(位於0柱面、0磁軌、1扇區)讀入7C00處,然後將控制權交給主引導代碼。主引導代碼的任務包括:

掃描分區表,找到一個啟用(可引導)分區;

找到啟用分區的起始扇區;

將啟用分區的開機磁區裝載到記憶體7C00處;

將控制權交給開機磁區代碼;

 

如果主引導代碼無法完成上述任務,它將顯示以下錯誤資訊之一:

No active partition.

Invalid partition table.

Error loading operating system.

Missing operating system.

 

機器加電或按reset鍵後都要進行系統複位,複位後CS=FFFFH,IP=0000H,那麼自然就從FFFF:0000H處開始執行指令,這個地方只有一條JMP指令跳轉到系統自檢程式處,系統自檢完成後把磁碟片的第一個扇區(如果由磁碟片啟動)或者硬碟的第一個扇區,即MBR扇區(如果由硬碟啟動)讀入到0:7C00H處,然後把控制權交出,從0:7C00H處繼續執行。 

 

下面就是硬碟的MBR程式碼分析:

其中的開機磁區是指硬碟相應分區的第一個扇區,是和作業系統有關的。作業系統的引導是由它來完成的,而MBR並不負責,MBR和作業系統無關。開機磁區的任務是把控制權轉交給作業系統的引導程式。

 

程式流程:

1 將程式碼由0:7C00H移動到0:0600H(注,BIOS把MBR放在0:7C00H處)

2 搜尋可引導分區,即80H標誌

成功:goto 3

失敗:跳入ROM BASIC

無效分區表:goto 5

3 讀開機磁區

失敗:goto 5

成功:goto 4

4 驗證開機磁區最後是否為55AAH

失敗:goto 5

成功:goto 6

5 列印錯誤進入無窮迴圈

6 跳到0:7C00H進行下一步啟動工作

 

5、硬碟邏輯磁碟機的分區錶鏈結構

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

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

擴充分區的資訊位於硬碟分區表(DPT)中, 而邏輯磁碟機的資訊則位於擴充分區的起始扇區, 即該分區的起始地址(面/扇區/磁軌)所對應的扇區, 該扇區中的資訊與硬碟主開機磁區的區別是不包含MBR, 而16位元組的分區資訊則表示的是邏輯磁碟機的起始和結束位址等。

MBR( Master Boot Record )主引導記錄包含兩部分的內容,前446位元組為啟動代碼及資料,而從446(0x1BE)開始則是分區表,分區表由四個分區項組成,每個分區項資料為16位元組,記錄了啟動時需要的分區參數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.