主引導記錄

主引導記錄

位于磁盤最前邊的一段引導代碼
主引導記錄(MBR,MainBootRecord)是位于磁盤最前邊的一段引導(Loader)代碼。它負責磁盤操作系統(DOS)對磁盤進行讀寫時分區合法性的判别、分區引導信息的定位,它由磁盤操作系統(DOS)在對硬盤進行初始化時産生的。·結束标志字,偏移地址01FE--01FF的2個字節值為結束标志55AA,如果該标志錯誤系統就不能啟動。·擴展分區的第一個扇區不是用于一個邏輯盤的DBR,而是指向一個“擴展的”分區表,即第一個虛拟的MBR。BIOS執行内存地址為FFFF:0000H處的跳轉指令,跳轉到固化在ROM中的自檢程序處,對系統硬件(包括内存)進行檢查。
    中文名:主引導記錄 外文名:MBR,MasterBootRecord 别名: 學 科:計算機

簡介

通常,我們将包含MBR引導代碼的扇區稱為主引導扇區。因這一扇區中,引導代碼占有絕大部分的空間,故而将習慣将該扇區稱為MBR扇區(簡稱MBR)。由于這一扇區承擔有不同于磁盤上其他普通存儲空間的特殊管理職能,作為管理整個磁盤空間的一個特殊空間,它不屬于磁盤上的任何分區,因而分區空間内的格式化命令不能清除主引導記錄的任何信息。

主引導扇區由三個部分組成(共占用512個字節):

1.主引導程序即主引導記錄(MBR)(占446個字節)

可在FDISK程序中找到,它用于硬盤啟動時将系統控制轉給用戶指定的并在分區表中登記了的某個操作系統。

2.磁盤分區表項(DPT,DiskPartITionTable)

由四個分區表項構成(每個16個字節)。

負責說明磁盤上的分區情況,其内容由磁盤介質及用戶在使用FDISK定義分區時決定。(具體内容略)

3.結束标志(占2個字節)

其值為AA55,存儲時低位在前,高位在後,即看上去是55AA(十六進制)。

詳解

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=1AH=錯誤代碼

用DEBUG讀取位于硬盤0柱面、0磁頭、1扇區的操作如下:

A>DEBUG

-A100

XXXX:XXXXMOVAX,0201(用功能号2讀1個扇區)

XXXX:XXXXMOVBX,1000(把讀出的數據放入緩沖區的地址為CS:1000)

XXXX:XXXXMOVCX,0001(讀0柱面,1扇區)

XXXX:XXXXMOVDX,0080(指定第一物理盤的0磁頭)

XXXX:XXXXINT13

XXXX:XXXXINT3

XXXX:XXXX(按回車鍵)

-G=100(執行以上程序段)

-D100011FF(顯示512字節的MBR内容)

MBR的組成

一個扇區的硬盤主引導記錄MBR由如圖6-15所示的4個部分組成。

·主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,并運行系統引導程序。

·出錯信息數據區,偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節。

·分區表(DPT,DiskPartitionTable)含4個分區項,偏移地址01BEH--01FDH,每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4。

·結束标志字,偏移地址01FE--01FF的2個字節值為結束标志55AA,如果該标志錯誤系統就不能啟動。

MBR中的分區信息結構

占用512個字節的MBR中,偏移地址01BEH--01FDH的64個字節,為4個分區項内容(分區信息表)。它是由磁盤介質類型及用戶在使用FDISK定義分區說确定的。在實際應用中,FDISK對一個磁盤劃分的主分區可少于4個,但最多不超過4個。每個分區表的項目是16個字節

MBR的主要功能及工作流程

啟動PC機時,系統首先對硬件設備進行測試,測試成功後進入自舉程序INT19H,然後讀系統磁盤0柱面、0磁頭、1扇區的主引導記錄(MBR)内容到内存指定單元0:7C00地址開始的區域,并執行MBR程序段。

硬盤的主引導記錄(MBR)是不屬于任何一個操作系統的,它先于所有的操作系統而被調入内存,并發揮作用,然後才将控制權交給主分區(活動分區)内的操作系統,并用主分區信息表來管理硬盤。

MBR程序段的主要功能如下:

·檢查硬盤分區表是否完好。

·在分區表中尋找可引導的“活動”分區。

·将活動分區的第一邏輯扇區内容裝入内存。在DOS分區中,此扇區内容稱為DOS引導記錄(DBR)。

硬盤邏輯驅動器的分區表鍊結構

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

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

從MS-DOS3.2問世以後,用戶就可以在一個物理硬盤驅動器上劃分一個主分區和一個擴展分區,并在擴展分區上創建多個邏輯驅動器,也即我們常說的一個物理盤上多個邏輯盤。

舉一個例子,一個10G的硬盤,安裝Windows,有C:、D:、E:三個邏輯盤,那麼它的分區情況可以是如下的方式:

分區一:主分區2GB,格式化為C:盤。

分區二:擴展分區8GB。它被再劃分為兩個各4GB的邏輯盤,格式化為以D:和E:盤。

在一個劃分有多個主分區的硬盤上,則可安裝多個不同的操作系統。如Windows、Linux、Solaris等。每個操作系統自己去管理分配給自己的分區。但是,每個操作系統對分區的操作方式是不同的。對于DOS/Windows來說,它能夠把它所能管轄的一個主分區和一個擴展分區格式化,然後按照C:、D:、E:邏輯盤的方式來管理。而Linux則不同,它是把“分區”看作一個設備,既沒有“擴展分區”的概念,也沒有“邏輯盤”的概念。

1.邏輯盤的鍊接關系

在FAT文件系統中,硬盤的邏輯盤字符用字符C:、D:、E:、...、Z:來表示。主分區一般被格式化成C:盤,從D:盤開始的邏輯盤是建立在擴展分區之上的。在系統進行讀寫操作時,DOS首先查看主引導記錄(MBR)中的分區信息表,分區項将指向活動主分區的DOS引導記錄(DBR)。

MBR中的分區表位于0柱面、0磁頭、1扇區内,以位移1BEH開始的第一分區表作為鍊首,有表内的鍊接表項指示下一分區表的物理位置(xx柱面、0磁頭、1扇區),在該位置的扇區内同樣位移1BEH處,保存着第2張分區表,依次類推,直至指向最後一張分區表的物理位置(yy柱面、0磁頭、1扇區)。因該分區表内不存在鍊接表項,即作為分區表鍊的鍊尾。如圖6-17所示。

硬盤第一個虛拟第二個虛拟第三個虛拟

舉例來說,本來位于柱面0、磁頭0、扇區1上的分區表的每一項記錄和主分區的DBR之間有一對應的關系,但是,如果在擴展分區中建立了多個邏輯盤,例如D:、E:、F:,該分區表中的分區項可指向第一個邏輯盤:,但對于其它的邏輯盤,則就沒有這種對應關系了。為能夠查找擴展分區中的多個邏輯盤,DOS系統可做如下安排:

·如果硬盤隻有一個主分區,即是将整個硬盤作為一個邏輯盤C:,則分區命令FDISK隻在硬盤的柱面0、磁頭0、扇區1上建立一個MBR。

·如果硬盤被劃分成2--4個分區,則FDISK除了在柱面0、磁頭0、扇區1上建立一個MBR之外,還在擴展分區的每個邏輯盤的起始扇區上都建立一個虛拟MBR,每一個虛拟MBR用于擴展分區上的一個邏輯盤。

·擴展分區的第一個扇區不是用于一個邏輯盤的DBR,而是指向一個“擴展的”分區表,即第一個虛拟的MBR。該邏輯盤DBR扇區的起點應為虛拟MBR的下一個磁道1扇區。

這些MBR中的各個分區表鍊接成一個如圖6-17所示的分區表鍊。這是一個硬盤具有4個表項所描述的内容。

DOS就是用這種方法來使一個擴展分區看起來象是有多個硬盤。

從圖6-17中可以看到,位于磁盤柱面0、磁頭0、扇區1上MBR的分區表指向基本分區及擴展分區中的第一個邏輯盤。

主引導記錄的組成

1啟動代碼

主引導記錄最開頭是第一階段引導代碼。其中的硬盤引導程序的主要作用是檢查分區表是否正确并且在系統硬件完成自檢以後将控制權交給硬盤上的引導程序(如GNUGRUB)。它不依賴任何操作系統,而且啟動代碼也是可以改變的,從而能夠實現多系統引導。

2硬盤分區表

硬盤分區表占據主引導扇區的64個字節(偏移01BEH--偏移01FDH),可以對四個分區的信息進行描述,其中每個分區的信息占據16個字節。具體每個字節的定義可以參見硬盤分區結構信息。下面是一個例子:如果某一分區在硬盤分區表的信息如下

800101000BFEBFFC3F0000007E86BB00

則我們可以看到,最前面的“80”是一個分區的激活标志,表示系統可引導;“010100”表示分區開始的磁頭号為1,開始的扇區号為1,開始的柱面号為0;“0B”表示分區的系統類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);“FEBFFC”表示分區結束的磁頭号為254,分區結束的扇區号為63、分區結束的柱面号為764;“3F000000”表示首扇區的相對扇區号為63;“7E86BB00”表示總扇區數為12289662。

對于現代大于8.4G的硬盤,CHS已經無法表示,BIOS使用LBA模式,對于超出的部分,CHS值通常設為FEFFFF,并加以忽略,直接使用08-0f的4字節相對值,再進行内部轉換。

3結束标志字

結束标志字55AA(偏移1FEH-偏移1FFH)最後兩個字節,是檢驗主引導記錄是否有效的标志。

主引導扇區的讀取流程

系統開機或者重啟時主引導扇區的讀取流程如下所述。

1.BIOS加電自檢(PowerOSelfTest--POST)。BIOS執行内存地址為FFFF:0000H處的跳轉指令,跳轉到固化在ROM中的自檢程序處,對系統硬件(包括内存)進行檢查。

2.讀取主引導記錄(MBR)。當BIOS檢查到硬件正常并與CMOS中的設置相符後,按照CMOS中對啟動設備的設置順序檢測可用的啟動設備。BIOS将相應啟動設備的第一個扇區(也就是MBR扇區)讀入内存地址為0000:7C00H處。

3.檢查0000:7CFEH-0000:7CFFH(MBR的結束标志位)是否等于55AAH,若不等于則轉去嘗試其他啟動設備,如果沒有啟動設備滿足要求則顯示“NOROMBASIC”然後死機。

4.當檢測到有啟動設備滿足要求後,BIOS将控制權交給相應啟動設備。啟動設備的MBR将自己複制到0000:0600H處,然後繼續執行。

5.根據MBR中的引導代碼啟動引導程序。

事實上,BIOS不僅檢查0000:7CFEH-0000:7CFFH(MBR的結束标志位)是否等于55AAH,往往還對磁盤是否有寫保護、主引導扇區中是否存在活動分區等進行檢查。如果發現磁盤有寫保護,則顯示磁盤寫保護出錯信息;如果發現磁盤中不存在活動分區,則顯示類似如下的信息“RemovediskorothermediaPressanykeytorestart”。

主引導記錄與硬盤分區

從主引導記錄的結構可以知道,它僅僅包含一個64個字節的硬盤分區表。由于每個分區信息需要16個字節,所以對于采用MBR型分區結構的硬盤,最多隻能識别4個主要分區(Primarypartition)。所以對于一個采用此種分區結構的硬盤來說,想要得到4個以上的主要分區是不可能的。這裡就需要引出擴展分區了。擴展分區也是主要分區的一種,但它與主分區的不同在于理論上可以劃分為無數個邏輯分區。

擴展分區中邏輯驅動器的引導記錄是鍊式的。每一個邏輯分區都有一個和MBR結構類似的擴展引導記錄(EBR),其分區表的第一項指向該邏輯分區本身的引導扇區,第二項指向下一個邏輯驅動器的EBR,分區表第三、第四項沒有用到。

Windows系統默認情況下,一般都是隻劃分一個主分區給系統,剩餘的部分全部劃入擴展分區。這裡有下面幾點需要注意:

在MBR分區表中最多4個主分區或者3個主分區+1個擴展分區,也就是說擴展分區隻能有一個,然後可以再細分為多個邏輯分區。

在Linux系統中,硬盤分區命名為sda1-sda4或者hda1-hda4(其中a表示硬盤編号可能是a、b、c等等)。在MBR硬盤中,分區号1-4是主分區(或者擴展分區),邏輯分區号隻能從5開始。

在MBR分區表中,一個分區最大的容量為2T,且每個分區的起始柱面必須在這個disk的前2T内。你有一個3T的硬盤,根據要求你至少要把它劃分為2個分區,且最後一個分區的起始扇區要位于硬盤的前2T空間内。如果硬盤太大則必須改用GPT。

MBR分區表與GPT分區表的關系

與支持最大卷為2TB(Terabytes)并且每個磁盤最多有4個主分區(或3個主分區,1個擴展分區和無限制的邏輯驅動器)的MBR磁盤分區的樣式相比,GPT磁盤分區樣式支持最大卷為128EB(Exabytes)并且每磁盤的分區數沒有上限,隻受到操作系統限制(由于分區表本身需要占用一定空間,最初規劃硬盤分區時,留給分區表的空間決定了最多可以有多少個分區,IA-64版Windows限制最多有128個分區,這也是EFI标準規定的分區表的最小尺寸)。與MBR分區的磁盤不同,至關重要的平台操作數據位于分區,而不是位于非分區或隐藏扇區。另外,GPT分區磁盤有備份分區表來提高分區數據結構的完整性。

注釋

對于一個操作系統而言,系統分區設為活動分區并不是必須的,這主要視引導程序而定,如果使用的引導程序是Grub4Dos,MBR中的引導代碼僅僅按照分區的順序依次探測第二階段引導器grldr的位置,并運行第一個探測到的grldr文件。

一個硬盤的分區個數還要受到分區大小的限制,因為硬盤是按照柱面分區的:一個分區至少要占一個柱面。但有一點需要注意,由于現在的硬盤結構已經和老式硬盤有了很大區别,其尋址結構也不再是CHS尋址,所以這裡的柱面大小不同于相關軟件顯示的柱面大小。對于物理結構上有n個面的硬盤,其分區空間的最小值為:n×扇區/磁道×512字節。

根據16字節分區表的結構:當前分區的扇區數用4個字節表示,前面各分區扇區數的總和也是4個字節,而232×512=2199023255552Byte

作用

主引導記錄是非常重要的一個扇區,其中引導代碼用來告訴計算機如何處理分區表,如何定位操作系統等;分區表用來管理硬盤的分區情況;标志表明該扇區是一個有效的引導記錄扇區。

軟件層面上的MBR數據恢複方法

硬盤是計算機的主要外部存儲設備,大多數用戶的數據都存儲在硬盤上,如果硬盤出現故障,不僅需要維修硬盤,而且還需要搶救硬盤數據。硬盤的故障常見有兩類:一類是硬盤的硬件發生故障,稱為硬故障。硬件故障一般為磁盤劃傷、磁組變形、芯片組或其它元器件損壞等。表現為系統一般不認硬盤,常有一種“咔嚓咔嚓”的磁組撞擊聲或電機不轉、通電後無任何聲音、磁頭錯位造成讀寫錯誤等。另一類是寫在硬盤上的軟件發生故障,稱為軟故障,一般是病毒感染、誤操作、操作時斷電等引起的。本文僅讨論軟故障中MBR數據恢複的軟件層面上的解決辦法。

Fdisk/MBR命令修複MBR

用Win98的引導盤或DOS引導盤引導系統到純DOS命令提示符下執行“Fdisk/MBR”命令進行無條件重寫,主引導記錄一般都能成功,且保留原有數據。Fdisk命令行格式語法為:“Fdisk/參數開關”,其中/MBR參數功能:重新建立主磁盤的主引導記錄。其它的一些隐藏參數,其功能對于有病毒感染主引導扇區時,用來清除病毒時用。需要提醒的是,隐藏參數危險系數比較大,使用時需謹慎。

FIXMBR修複MBR

Fixmbr是DOS下的一個專門針對MBR的修複程序工具,它通過全盤搜索來确定硬盤分區,并重新構造主引導記錄。操作方法是将Fixmbr下載并保存在軟盤,在軟盤上運行FIXMBR,由FIXMBR負責檢查MBR結構,如發現系統有錯誤,則将出現是否進行硬盤主引導記錄修複的提示。回答“YES”,FIXMBR将對整個硬盤進行分區搜索,當搜索到相應的分區後,系統将提示是否修改MBR,回答“YES”則開始自動修複。如搜索的結果不正确,可使用/Z開關符,重新啟動系統後将恢複到原來狀态。值得注意的是,如果使用Fixmbr修複的過程中出現死機等現象,則需要進入BIOS修改參數,即到“AdvanceBIOSFeatures”選項,将“Anti-VirusProtection”中的參數設置為“Disabled”即可。

編制彙編程序結合FDISK重建硬盤的MBR

用彙編語言編制一個内存駐留程序,其控制中斷為INT13H,目的是實現阻止對硬盤格式化和硬盤主引導區以外的寫操作,該方法既可解決不丢失硬盤原數據文件,又可修複MBR。

相關詞條

相關搜索

其它詞條