mbr[主引導記錄(Master Boot Record)]

mbr[主引導記錄(Master Boot Record)]

MBR,即主引導記錄,是對IBM兼容機的硬碟或者可移動磁碟分區時,在驅動器最前端的一段引導扇區。MBR概念是在1983年PC DOS 2.0支持硬碟後才有的。MBR描述了邏輯分區的信息,包含檔案系統以及組織方式。此外,MBR還包含計算機在啟動的第二階段載入作業系統的可執行代碼或連線每個分區的引導記錄(VBR)。這個MBR代碼通常被稱為引導程式。由於MBR分區表的最大可定址的存儲空間只有2Tb(232×512位元組)。因此,在大硬碟出現的現在,MBR分區方式逐漸被GUID分區表取代。MBR不可能存在於不可分區的媒介如軟碟等中。

基本信息

分區解析

mbrmbr
MBR,全稱為Master Boot Record,即硬碟的主引導記錄。
為了便於理解,一般將MBR分為廣義狹義兩種:廣義的MBR包含整個扇區(引導程式、分區表及分隔標識),也就是上面所說的主引導記錄;而狹義的MBR僅指引導程式而言。
硬碟的0柱面、0磁頭、1扇區稱為主引導扇區(也叫主引導記錄MBR)。它由三個部分組成,主引導程式、硬碟分區表DPT(Disk Partition table)和分區有效標誌。在總共512位元組的主引導扇區里主引導程式(boot loader)占446個位元組,第二部分是Partition table區(分區表),即DPT,占64個位元組,硬碟中分區有多少以及每一分區的大小都記在其中。第三部分是magic number,占2個位元組,固定為0xAA55或0x55AA,這取決於處理器類型, 如果是小端模式處理器(如Intel系列),則該值為0xAA55;如果是大端模式處理器(如Motorola6800),則該值為0x55AA。
標準 MBR 結構
地址 描述 長度
Hex Oct Dec (位元組)
0 0 0 代碼區 440
(最大446)
01B8 670 440 選用軟碟標誌 4
01BC 674 444 一般為空值;0x0000 2
01BE 676 446 標準MBR分區表規劃 64
(四個16byte的主分區表入口)
01FE 776 510 55h MBR有效標誌 2
01FF 777 511 AAh
MBR,總大小: 446+64+2= 512

注意

MBR是不屬於任何一個作業系統,也不能用作業系統提供的磁碟操作命令來讀取它,但可以通過命令來修改和重寫,如在minix3裡面,可以用命令:installboot-m/dev/c0d0/usr/mdec/masterboot來把masterboot這個小程式寫到mbr裡面,masterboot通常用彙編語言來編寫。我們也可以用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:XXXX MOV AX,0201(用功能號2讀1個扇區)
XXXX:XXXX MOV BX,1000(把讀出的數據放入緩衝區的地址為CS:1000)
XXXX:XXXX MOV CX,0001(讀0柱面,1扇區)
XXXX:XXXX MOV DX,0080(指定第一物理盤的0磁頭)
XXXX:XXXX INT 13
XXXX:XXXX INT 3
XXXX:XXXX(按回車鍵)
-G=100(執行以上程式段)
-D 1000 11FF(顯示512位元組的MBR內容)
在windows作業系統下,例如xp,2003,Vista,windows7,有微軟提供的接口直接讀寫mbr;
FILE*fd=fopen("\\\\.\\PHYSICALDRIVE0","rb+");
char buffer[512];
fread(buffer,512,1,fd);
//then you can edit buffer[512]as your wish。
fseek(fd,0,SEEK_SET);//很重要
fwrite(buffer,512,1,fd);//把修改後的MBR寫入到你的機器
fclose(fd);//大功告成

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個位元組值為結束標誌0xAA55或0x55AA,稱為“魔數”(magic number)。如果該標誌錯誤系統就不能啟動。
MBR的結構如下表所示

位元組偏移(16進制) 位元組數 描述
00~1BD 446 引導代碼
1BE~1CD 16 分區表項1
1CE~1DD 16 分區表項2
1DE~1ED 16 分區表項3
1EE~1FD 16 分區表項4
1FE~1FF 2 簽名值0xAA55或0x55AA

具體含義如下:
(1)0x00~0x1BD:446個位元組,包含一段指令,用以通知計算機如何訪問分區表並定位作業系統的位置
這部分的代碼會因為作業系統不同而不同,利用引導代碼可以實現多重系統引導。多系統引導有兩種方法可以實現:一種方法是用Windows作業系統在引導分區中設定一段代碼,先載入進入用戶選擇系統的界面,允許用戶選擇要進入的系統,再進入指定的系統;第二種方法是改變MBR中的引導代碼,該代碼直接呈現給用戶一個選擇系統的界面。
(2)0x1BE~0x1FD:64個位元組,4個分區表項,每個表項占用16個位元組,描述一個分區,最多可以描述4個分區(這就是為什麼MBR分區體系只能分成4個區我們平時看到的分區一般可以從26個字母中選取任意多個當做分區標識(多於4個),這是因為那些分區是邏輯分區,這裡的4個分區指的是主分區和擴展分區的數目,而邏輯分區是在擴展分區中劃分出來的,也叫做二級、三級擴展分區。)。
分區表項並沒有順序要求,即不要求第一個分區表項在第二個分區表項前。
分區表也不要求從第一個分區表項開始
(3)0x1FE~0x1FF:2個位元組,有效結束標誌0xAA55或0x55AA。如果沒有這個標誌,作業系統會認為磁碟沒有初始化,無法正確載入磁碟的分區。
分區表參數含義(位元組)
0活動(80)或非活動分區(00)
123起始的磁頭01柱面01扇區00值
4分區類型符NTFS(07)FAT32(0B)擴展(0F)
567結束的磁FE柱面FF扇區FF值
89AB本分區之前已用扇區數
CDEF本分區大小
虛擬MBR
即EBR(extent boot record)擴展引導記錄
其記錄表項與MBR相同,用於管理擴展還能分區上的邏輯驅動器

MBR修復

MBR在某些情況下,如病毒或者分區操作不當會引起MBR代碼段的損壞,表現的現象就是電腦啟動時,螢幕出現黑底一個或幾個無意義的字母閃游標或無任何提示閃游標。這種情況在確認硬碟無物理故障後,可以使用一些簡單方法進行恢復。
Dos命令
使用任意啟動盤啟動到MSDOS提示符,鍵入命令:
fdisk/mbr
Diskgenius
用啟動盤,無論dos版或者pe版均可,啟動diskgenius,然後選擇選單“硬碟”-“重建主引導記錄”,為避免病毒殘留,還可執行一次”硬碟“-”清除保留扇區“
Windows xp命令
xp之下,需要安裝tool kit附加工具,為系統增加一個fixmbr命令行工具。執行命令之前,先將故障硬碟掛載到一台好的電腦,或者使用xp安裝盤啟動電腦,然後執行命令:
fixmbr\Device\HardDisk0此處的0或其他數字需先通過diskpart工具的list driver進行查找。
Windows 7命令
修複方式同xp,只是命令換成bootrec/fixmbr

相關詞條

相關搜尋

熱門詞條

聯絡我們