分区表和主引导记录
分區表和主引導記錄
By Robbie (Decheng) Fan, Reference: http://www.fandecheng.com/personal/interests/pwindows/msdos_functional/mbr.htm 分區表是硬盤邏輯結構的一個重要組成部分。如果一個硬盤的空間太大,我們通常把它分割成幾個部分。每個部分有一個固定的大小,并被稱為邏輯驅動器。為什么我們要做這件事情?因為兩個原因: 1. 如果一個硬盤的空間沒有被分割,一個邏輯驅動器可能會太大并且文件碎片(參見 DEFRAG.EXE 程序——磁盤碎片整理)會增長得更快。為了避免這種情況的發生,我們把一個磁盤的空間分割成幾個部分。(這種情況在 Windows NT/2000 及更高版本上已不再發生)。 2. 雖然把信息保存在不同目錄是一個把不同類型的文件放在不同位置的好方法(特別當把它們重定向為網絡驅動器的時候,參見 SUBST.EXE),但是有時我們仍然要格式化一個磁盤來讓它變得干凈。這個時候,一個占據整個磁盤空間的邏輯驅動器會帶來麻煩。(自從 Windows Vista 開始,這種需求就變得少多了,因為它的可引導安裝光盤有一個預安裝環境(WinPE),并且它會在安裝前把老的 Windows 文件移動到一個叫 Windows.old 的目錄中去)。 在分區表中,數據包括分區的起始扇區,分區的大小以及分區的類型。 在使用一個硬盤之前,它應該被分區。一個新的硬盤通常是低級格式化過的(意味著表示磁道和扇區的標記已經在磁盤上了;軟盤有時在出售時沒有被低級格式化過),并且有一個可以使用的位于第一個扇區中的主引導程序;這個扇區叫主引導記錄(MBR)。還有一個同樣重要的扇區,就是活動的(可引導的)分區的第一個扇區。這個扇區叫做引導扇區。 主引導程序用于引導在磁盤上一個可引導的分區內安裝的操作系統。主引導程序先在主分區表(是主引導記錄中的一部分)中查找它所需的信息,接著把標記為“活動”的分區的引導扇區讀到內存中,然后運行在引導扇區中的引導程序來引導操作系統。 在 2001 年,我剛開始寫這篇文章時,市場上流行的硬盤大小是 40GB。在 2011 年,當我審閱并更新這篇文章時,主引導記錄即將被 GUID 分區表和相關的英特爾統一可擴展固件接口所取代,因為它無法表示大于 2TB 的分區的緣故。(說明:GUID 是“全球唯一標識”(Global Unique Identification)的縮寫,它用于唯一地標識一個對象,即使是從不同的兩臺電腦上生成的對象,其 GUID 也不會重復。統一可擴展固件接口的英文名稱是 UEFI,Unified Extensible Firmware Interface。) 讓我們來看看主引導扇區有一些什么。以下是我在我的 8GB 硬盤上跑的 Windows 98 中所做的操作。 C:\WINDOWS\Desktop>debug -a 100 17C2:0100 mov ax, 0201 17C2:0103 mov bx, 0200 17C2:0106 mov cx, 0001 17C2:0109 mov dx, 0080 17C2:010C int 13 17C2:010E int 3 17C2:010F -g=100 AX=0050? BX=0200? CX=0001? DX=0080? SP=FFEE? BP=0000? SI=0000? DI=0000 DS=17C2? ES=17C2? SS=17C2? CS=17C2? IP=010E?? NV UP EI PL NZ NA PO NC 17C2:010E CC??????????? INT???? 3 -d 200 3ff 17C2:0200? FA 33 C0 8E D0 BC 00 7C-8B F4 50 07 50 1F FB FC?? .3.....|..P.P... 17C2:0210? BF 00 06 B9 00 01 F2 A5-EA 1D 06 00 00 BE BE 07?? ................ 17C2:0220? B3 04 80 3C 80 74 0E 80-3C 00 75 1C 83 C6 10 FE?? ...<.t..<.u..... 17C2:0230? CB 75 EF CD 18 8B 14 8B-4C 02 8B EE 83 C6 10 FE?? .u......L....... 17C2:0240? CB 74 1A 80 3C 00 74 F4-BE 8B 06 AC 3C 00 74 0B?? .t..<.t.....<.t. 17C2:0250? 56 BB 07 00 B4 0E CD 10-5E EB F0 EB FE BF 05 00?? V.......^....... 17C2:0260? BB 00 7C B8 01 02 57 CD-13 5F 73 0C 33 C0 CD 13?? ..|...W.._s.3... 17C2:0270? 4F 75 ED BE A3 06 EB D3-BE C2 06 BF FE 7D 81 3D?? Ou...........}.= 17C2:0280? 55 AA 75 C7 8B F5 EA 00-7C 00 00 49 6E 76 61 6C?? U.u.....|..Inval 17C2:0290? 69 64 20 70 61 72 74 69-74 69 6F 6E 20 74 61 62?? id partition tab 17C2:02A0? 6C 65 00 45 72 72 6F 72-20 6C 6F 61 64 69 6E 67?? le.Error loading 17C2:02B0? 20 6F 70 65 72 61 74 69-6E 67 20 73 79 73 74 65??? operating syste 17C2:02C0? 6D 00 4D 69 73 73 69 6E-67 20 6F 70 65 72 61 74?? m.Missing operat 17C2:02D0? 69 6E 67 20 73 79 73 74-65 6D 00 00 80 20 06 17?? ing system... .. 17C2:02E0? 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4?? V3.VVRP.SQ...V.. 17C2:02F0? 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72?? PR..B.V$..ZX.d.r 17C2:0300? 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7?? .@u.B......^..t. 17C2:0310? D6 C7 F8 B1 ED CE DE D0-A7 A1 A3 B0 B2 D7 B0 B3?? ................ 17C2:0320? CC D0 F2 CE DE B7 A8 BC-CC D0 F8 A1 A3 00 BC D3?? ................ 17C2:0330? D4 D8 B2 D9 D7 F7 CF B5-CD B3 CA B1 B3 F6 CF D6?? ................ 17C2:0340? B4 ED CE F3 A1 A3 B0 B2-D7 B0 B3 CC D0 F2 CE DE?? ................ 17C2:0350? B7 A8 BC CC D0 F8 A1 A3-00 C8 B1 C9 D9 B2 D9 D7?? ................ 17C2:0360? F7 CF B5 CD B3 00 00 00-00 00 00 00 00 00 00 00?? ................ 17C2:0370? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00?? ................ 17C2:0380? 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00?? ......W......... 17C2:0390? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00?? ................ 17C2:03A0? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00?? ................ 17C2:03B0? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 01?? ................ 17C2:03C0? 01 00 17 FE BF 8C 3F 00-00 00 0E 12 A0 00 80 00?? ......?......... 17C2:03D0? 81 8D 0C FE FF FF 4D 12-A0 00 4D 12 A0 00 00 FE?? ......M...M..... 17C2:03E0? FF FF 0F FE FF FF 9A 24-40 01 FE E6 19 01 00 00?? .......$@....... 17C2:03F0? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA?? ..............U. - 在上表中: 1. 一開始是主引導程序。它啟動“活動分區”中的操作系統。 2. 從位于偏移 0x1BE 開始(也就是 17C2:03BE)是主分區表。其中共有四個表項。每個記錄使用 16 字節。它們的內容如下: 偏移量??? 內容 0x00????? 分區是否是活動的。如果值是 0x80 ~ 0x8F,分區就是活動的。如果 值是 0x00,這個分區是不活動的。 0x01-0x03 分區的起始磁頭號、扇區號和柱面號。在 P-CHS(物理柱面-磁頭-扇區 號)模式下供在硬盤的前 504 兆字節中的分區使用。在 L-CHS(邏輯 柱面-磁頭-扇區號)模式下供在硬盤的前 8 吉字節中的分區使用。 0x04????? 分區的類型。見下表(引用自 BootStar 幫助):MS-DOS: FAT 12,分區小于 32 兆字節:類型“01” FAT 16,分區小于 504 兆字節,版本高于 3.3:類型“04” FAT 16,分區小于 2 吉字節并且在硬盤的前 8 吉字節以內:類型“06” 視窗 95: FAT 16,分區小于 2 吉字節并且在硬盤的前 8 吉字節以內:類型“06” FAT 16,分區小于 2 吉字節并且不在硬盤的前 8 吉字節以內:類型“0E” 視窗 95b OSR 2,視窗 98: FAT 16,分區小于 2 吉字節并且在硬盤的前 8 吉字節以內:類型“06” FAT 16,分區小于 2 吉字節并且不在硬盤的前 8 吉字節以內:類型“0E” FAT 32,在硬盤的前 8 吉字節以內:類型“0B” FAT 32,在硬盤的不前 8 吉字節以內:類型“0C” 視窗 NT: FAT 16,分區小于 4 吉字節并且在硬盤的前 8 吉字節以內:類型“06” NTFS;分區在前 1024 柱面以內開始:類型“07” 視窗 2000: FAT 16,分區小于 4 吉字節并且在硬盤的前 8 吉字節以內:類型“06” FAT 16,分區小于 4 吉字節并且不在硬盤的前 8 吉字節以內:類型“0E” FAT 32,分區小于 127 吉字節并且在硬盤的前 8 吉字節以內:類型“0B” FAT 32,分區小于 127 吉字節并且不在硬盤的前 8 吉字節以內:類型“0C” NTFS;分區在前 1024 柱面以內開始:類型“07” OS/2: HPFS;分區小于 2 吉字節并且在硬盤的前 8 吉字節以內:類型“07” FAT 16,分區小于 2 吉字節并且在硬盤的前 8 吉字節以內:類型“06” Linux: ext2fs,分區在前 1024 柱面以內開始:類型“83” 交換分區(要另外設置):類型“82” 擴展分區: 標準:類型“05” 分區不在硬盤的前 8 吉字節以內:類型“0F” Novell Netware: Netware 286:類型“64” Netware 3.11:類型“65”
0x05-0x07 分區的結束磁頭號、扇區號和柱面號。在 P-CHS 模式下供在硬盤的前 504 兆字節中的分區使用。在 L-CHS 模式下供在硬盤的前 8 吉字節中 的分區使用。 0x08-0x0B 分區的第一個扇區的相對扇區號。換句話說,把分區的起始扇區的絕對 扇區號減去包含這分區表的扇區的絕對扇區號就是相對扇區號。這個數 字對小于 2048 吉字節的硬盤都是有效的。這個數字可以用于擴展的 INT 13H 中斷調用,它支持高達 48 位扇區號的 LBA(邏輯塊地址)模 式(在 2003 年的 ATA-6 標準中)。 0x0C-0x0F 分區包含的扇區數。這個數字對小于 2048 吉字節的硬盤都是有效的。 3. 0x1FE 和 0x1FF 這兩個字節組成硬盤主引導記錄有效標志“55 AA”。 如果你在使用 MS-DOS 或者視窗 9x 或者視窗 NT/2000,你會看見一個主 DOS 分區和一個擴展分區。它們加在一起占用了整個硬盤的空間(在這里的例子中看不出來,因為我的硬盤空間沒有被全部分配掉)。通常,C 盤是一個可引導的分區并且它應該是一個主 DOS 分區。為了能在計算機啟動的時候引導它,它應該被標記為“活動”。你的硬盤的其他驅動器字母通常是擴展分區中的邏輯驅動器。常見的情況是,在擴展分區中有超過一個的邏輯驅動器。為了標記這些在硬盤上的邏輯驅動器,子分區表就被采用了。這些分區表是這樣被鏈接起來的:主分區表中有關擴展分區的信息指向第一個子分區表。在第一個子分區表中包含指向第一個邏輯驅動器和第二個子分區表的信息(記錄在一個扇區中,也被稱為“擴展引導記錄”,雖然里面并沒有任何程序代碼),以此類推。這樣,擴展分區可以有多個邏輯驅動器。 為了獲得大于 504 兆字節的硬盤的準確信息,MS-DOS 或者視窗 9x/NT/2000 對照系統 BIOS(基本輸入輸出系統)配置來找出硬盤的參數,以使它們可以從相對扇區號和分區包含的扇區數來計算真實的柱面號、磁頭號和扇區號。它們也可以略過這種檢查而直接使用邏輯柱面-磁頭-扇區號并直接調用 INT 13H(BIOS 磁盤操作程序)中斷。對于現代的硬盤,LBA 模式被廣泛地支持,因此通常不需要考慮柱面號、磁頭號和扇區號。 當你使用 FDISK 創建分區的時候,它不僅僅在磁盤上寫入分區信息,它也清除分區的引導扇區。所以當你使用 FORMAT 命令格式化這個分區之前,MS-DOS 不會允許你使用它。由于這個操作,如果你刪除一個分區然后使用 FDISK 創建一個新的,這個新的分區在硬盤的相同位置,也有相同的大小,你仍然看不見原來分區中的信息。所以請你在刪除和創建分區的時候千萬小心!另一件有關 FDISK 的事:“/MBR”開關。這個開關讓 FDISK 只是用它的標準版本主引導程序來重寫主引導程序。它不影響系統的分區表。如果你在使用修改分區表的多啟動工具,比如 BootStar,SystemCommander 等等,不要使用那個開關。 市場上有其他分區工具比如 Partition Magic(由 PowerQuest 公司出品)、Disk Manager(由 IBM 公司出品)以及開源軟件 GParted(Gnome 分區編輯器)。它們支持調整分區大小、復制和移動分區這些 FDISK 所不支持的特殊操作。同時,諾頓 Ghost 是一個分區復制和備份工具(另一個是 PowerQuest DriveImage)。當然你可以使用它們中的任何一種,但是為了你好,不要同時使用好幾個同類型的工具,除非有官方的文件指出你所使用的產品是互相兼容的。有時一個工具有某方面的缺陷或不兼容等情況,而另一個工具有另一方面的問題。同樣地,你最好不要在分區工具在執行操作的時候中止它(不管它是否有一個“取消”按鈕),因為這樣做可能會帶來問題。
總結
 
                            
                        - 上一篇: surface屏幕闪烁重影_如何解决su
- 下一篇: 记股诗
