主引導扇區(MBR),分割槽表(DPT)及活動分割槽(DBR)
主引導扇區:硬碟的0柱面、0磁頭、1扇區(也叫主引導記錄MBR),大小為512Byte。
分割槽表(DPT):位於主引導分割槽,從偏移01BEH開始到偏移01FDH結束的64位元組。
活動分割槽DBR:DBR(DOS BOOT RECORD,原意為DOS引導記錄),位於柱面0,磁頭1,扇區1(作業系統可以訪問的第一個扇區),即邏輯扇區0。DBR分為兩部分:DOS載入程式和BPB(BIOS引數塊)
一、硬碟的0柱面、0磁頭、1扇區稱為主引導扇區(也叫主引導記錄MBR),該記錄佔用512個位元組,它用於硬碟啟動時將系統控制權轉給使用者指定的、在分割槽表中登記了某個作業系統分割槽。MBR的內容是在硬碟分割槽時由分割槽軟體(如FDISK)寫入該扇區的,MBR不屬於任何一個作業系統,不隨作業系統的不同而不同,即使不同,MBR也不會夾帶作業系統的性質,具有公共引導的特性。但安裝某些多重引導功能的軟體或LINUX的LILO時有可能改寫它;它先於所有的作業系統被調入記憶體併發揮作用,然後才將控制權交給活動主分割槽內的作業系統。
MBR由三部分構成:
1.主載入程式程式碼,佔446位元組
2.硬碟分割槽表DPT,佔64位元組
3.主引導扇區結束標誌AA55H
地址 | 描述 | 長度 (位元組) |
|||
---|---|---|---|---|---|
Hex | Oct | Dec | |||
0000 |
0000 |
0 | 程式碼區 | 440 (最大 446) |
|
01B8 |
0670 |
440 | 選用軟盤標誌 | 4 | |
01BC |
0674 |
444 | 一般為空值; 0x0000 | 2 | |
01BE |
0676 |
446 | 標準 MBR 分割槽表規劃 (四個16 byte的主分割槽表入口) |
64 | |
01FE |
0776 |
510 | 55h | MBR 有效標誌: 0xAA55 |
2 |
01FF |
0777 |
511 | AAh | ||
MBR, 總大小: 446 + 64 + 2 = | 512 |
二、硬碟的主載入程式程式碼是從偏移0000H開始到偏移01BDH結束的446位元組;主載入程式程式碼包括一小段執行程式碼。啟動PC 機時,系統首先對硬體裝置進行測試,成功後進入自舉程式INT 19H;然後讀系統磁碟0柱面、0磁頭、1扇區的主引導扇區MBR的內容到記憶體指定單元0:7C00 首地址開始的區域,並執行MBR程式段。
主引導程式碼實現下列功能:
1.掃描分割槽表查詢活動分割槽;
2.尋找活動分割槽的起始扇區;
3.將活動分割槽的引導扇區讀到記憶體;
4.執行引導扇區的執行程式碼。
如果主引導程式碼未完成這些功能,系統顯示下列錯誤資訊:
Invalid partition table
Error loading operating system
Missing operating system
三、硬碟分割槽表DPT是從偏移01BEH開始到偏移01FDH結束的64位元組;硬碟分割槽表分為四小部分,每一小部分表示一個分割槽的資訊,佔16位元組。在這裡我們可以看出,硬碟的總分割槽數*(主分割槽+擴充套件分割槽)為什麼不能大於4。擴充套件分割槽數不得大於1,當前活動分割槽數必須小於等於 1。這裡有下面幾點需要注意:
1.Windows系統預設情況下,一般都是隻劃分一個主分割槽給系統,剩餘的部分全部劃入擴充套件分割槽。如果存在多個主分割槽,那麼除活動主分割槽外,其餘分割槽均不可見。(2000/NT之後,在磁碟管理器中可見)
2.在MBR分割槽表中最多4個主分割槽或者3個主分割槽+1個擴充套件分割槽,也就是說擴充套件分割槽只能有一個,然後可以再細分為多個邏輯分割槽。
3.在Linux系統中,硬碟分割槽命名為sda1-sda4或者hda1-hda4(其中a表示硬碟編號可能是a、b、c等等)。在MBR硬碟中,分割槽號1-4是主分割槽(或者擴充套件分割槽),邏輯分割槽號只能從5開始。
4.在MBR分割槽表中,一個分割槽最大的容量為2T,且每個分割槽的起始柱面必須在這個disk的前2T內。你有一個3T的硬碟,根據要求你至少要把它劃分為2個分割槽,且最後一個分割槽的起始扇區要位於硬碟的前2T空間內。如果硬碟太大則必須改用GPT。
偏移 | 長度(位元組) | 意義 |
---|---|---|
00H | 1 | 分割槽狀態:00-->非活動分割槽;80--> 活動分割槽; 其它數值沒有意義 |
01H | 1 | 分割槽起始磁頭號(HEAD),用到全部8位 |
02H | 2 | 分割槽起始扇區號(SECTOR),佔據02H的位0-5; 該分割槽的起始磁柱號(CYLINDER),佔據 02H的位6-7和03H的全部8位 |
04H | 1 | 檔案系統標誌位,如82--> Linux Native分割槽 83--> Linux Swap 分割槽 |
05H | 1 | 分割槽結束磁頭號(HEAD),用到全部8位 |
06H | 2 | 分割槽結束扇區號(SECTOR),佔據06H的位0-5; 該分割槽的起始磁柱號(CYLINDER),佔據 06H的位6-7和07H的全部8位 |
08H | 4 | 分割槽起始絕對扇區 |
0CH | 4 | 分割槽總的扇區數 |
四、主引導扇區的最後兩個位元組(偏移1FEH和偏移1FFH),其值為AA55H,如果這兩個標誌被修改(有些病毒就會修改這兩個標誌),則系統引導時將報告找不到有效的分割槽表。
五、活動分割槽DBR
DBR(Dos Boot Record)原意為DOS引導記錄,通常位於磁碟0磁軌1柱面1扇區(作業系統可以訪問的第一個扇區),其邏輯扇區號為0。
DBR分為兩個部分:
1) DOS載入程式
DOS載入程式的主要任務是當MBR將系統控制權交給它時,判斷本分割槽根目錄前兩個檔案是不是作業系統的引導檔案(即IO.SYS和MSDOS.SYS),如果確定存在,就把它讀入記憶體,並把控制權交給它。
2) BPB(BIOS Parameter Block ,BIOS引數塊)
BPB用來描述本DOS分割槽的磁碟資訊,它位於DBR偏移0BH處,共13位元組。
它的記錄包括本分割槽的起始扇區、結束扇區、檔案儲存格式、硬碟介質描述符、根目錄大小、FAT個數,分配單元的大小等重要引數。
以上僅以DOS(FAT16)分割槽為例,目前DOS已如他日黃花,現在的載入程式已經被更新更先進的載入程式所代替,但不管怎樣的載入程式,仍與DOS載入程式處於相同位置。
所以現在的0磁軌1柱面1扇區這個位置,準確地說不能叫作DBR,而應該改稱為 OBR(OS Boot Record),即作業系統引導扇區, OBR(DBR)是高階格式化程式產生的,如FORMAT、PM、、DISKPART以及Windows的磁碟管理器等。
注:使用WinHex可以讀取磁碟的引導扇區資料。