1. 程式人生 > >主引導扇區(MBR),分割槽表(DPT)及活動分割槽(DBR)

主引導扇區(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

標準 MBR 結構
地址描述長度
(位元組)
HexOctDec
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可以讀取磁碟的引導扇區資料。