硬碟的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
結束標誌
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位元組,記錄了啟動時需要的分割槽引數。
硬碟主引導記錄 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 是不屬於任何乙個作業系統,也不能用作業系統提供的磁...