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

2021-06-20 09:03:33 字數 3644 閱讀 3060

**:

硬碟的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=存放讀取資料的記憶體緩衝位址

錯誤資訊:如果出錯cf=1 ah=錯誤**

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

a>debug

-a 100

***x:***x mov ax,0201 (用功能號2讀1個扇區)

***x:***x mov bx,1000 (把讀出的資料放入緩衝區的位址為cs:1000)

***x:***x mov cx,0001 (讀0柱面,1扇區)

***x:***x mov dx,0080 (指定第一物理盤的0磁頭)

***x:***x int 13

***x:***x int 3

***x:***x (按回車鍵)

-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結束標誌

01ffaa

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位元組,記錄了啟動時需要的分割槽引數。

硬碟主引導記錄 MBR 及其結構

硬碟的0柱面 0磁頭 1扇區稱為主引導扇區,fdisk程式寫到該扇區的內容稱為主引導記錄 mbr 該記錄占用512個位元組,它用語硬碟啟動時將系統控制權交給使用者指定的,並在分割槽表中登記了的某個作業系統區。1.mbr的讀取 硬碟的引導記錄 mbr 是不屬於任何乙個作業系統,也不能用作業系統提供的磁...

硬碟主引導記錄 MBR 及其結構

硬碟的0柱面 0磁頭 1扇區稱為主引導扇區,fdisk程式寫到該扇區的內容稱為主引導記錄 mbr 該記錄占用512個位元組,它用語硬碟啟動時將系統控制權交給使用者指定的,並在分割槽表中登記了的某個作業系統區。1.mbr的讀取 硬碟的引導記錄 mbr 是不屬於任何乙個作業系統,也不能用作業系統提供的磁...

硬碟主引導記錄 MBR 及其結構

硬碟的0柱面 0磁頭 1扇區稱為主引導扇區,fdisk程式寫到該扇區的內容稱為主引導記錄 mbr 該記錄占用512個位元組,它用語硬碟啟動時將系統控制權交給使用者指定的,並在分割槽表中登記了的某個作業系統區。1.mbr的讀取 硬碟的引導記錄 mbr 是不屬於任何乙個作業系統,也不能用作業系統提供的磁...