硬碟分割槽表詳解(轉)

post0發表於2007-08-11
硬碟分割槽表詳解(轉)[@more@]

2000年12月13日 16:26

硬碟主引導扇區 = 硬碟主開機記錄(MBR)+ 硬碟分割槽表(DPT)

--------------------------------------------------------------

物理位置:0面0道1扇區(clindyer 0, side 0, sector 1)

大小: 512位元組

其中:MBR 446位元組(0000--01BD),DPT 64位元組(01BE--01FD),結束標誌2位元組(55 AA)

功能:MBR透過檢查DPT分割槽資訊引導系統跳轉至DBR;

讀取: 使用NORTON DISKEDIT, 在OBJECT選單中選擇DRIVE——>PHYSICAL DISK-—HARD DISK,

然後, 在OBJECT選單中選擇DISK PARTITION TABLE即可讀取, 並使用TOOLS選單中的WRITE OBJECT TO 選項存入指定檔案備份;

寫入: 使用NORTON DISKEDIT, 在OBJECT選單中選擇DRIVE——>FLOOPY DISK, 選擇備份的DPT

檔案, 然後使用TOOLS選單中的WRITE OBJECT TO——>PHYSICAL SECTOR 選項寫入001

(clindyer 0, side 0, sector 1);

詳解:

000H--08AH MBR啟動程式(尋找開機分割槽)

08BH--0D9H MBR啟動字串

0DAH--1BCH 保留("0")

1BEH--1FDH 硬碟分割槽表

1FEH--1FFH 結束標誌(55AA)

活動分割槽主引導扇區(DBR)

--------------------------

物理位置:1面0道1扇區(clindyer 0, side 1, sector 1)

大小: FAT16 1扇區 512位元組

FAT32 3扇區 1536位元組

功能:包含機器CMOS等資訊(0000--0059), 核對該資訊並引導指定的系統檔案, 如NTLDR等;

讀取: 使用NORTON DISKEDIT, 在OBJECT選單中選擇DRIVE——>LOGICAL DISK-—DISK C,

然後, 在OBJECT選單中選擇BOOT RECORD即可讀取, 並使用TOOLS選單中的

WRITE OBJECT TO 選項存入指定檔案備份;

寫入: 使用NORTON DISKEDIT, 在OBJECT選單中選擇DRIVE——>FLOOPY DISK, 選擇備份的DBR

檔案, 然後使用TOOLS選單中的WRITE OBJECT TO——>PHYSICAL SECTOR 選項寫入011

(clindyer 0, side 1, sector 1);

詳解:

000H--002H 3 BYTE的跳轉指令(去啟動程式, 跳到03EH)

003H--03DH BIOS引數區

03EH--19DH DOS啟動程式

19EH--1E5H 開機字串

1E6H--1FDH 檔名(IO.SYS, MSDOS.SYS)

1FEH--1FFH 結束標記(55AA)

硬碟分割槽表(DPT)

---------------------

偏移地址 位元組數 含義分析

01BE 1 分割槽型別:00表示非活動分割槽:80表示活動分割槽;其他為無效分割槽。

01BF~01C1 3 *分割槽的起始地址(面/扇區/磁軌),通常第一分割槽的起始地址開始

於1面0道1扇區,因此這三個位元組應為010100

01C2 1 #分割槽的作業系統的型別。

01C3~01C5 3 *該分割槽的結束地址(面/扇/道)

01C6~01C9 4 該分割槽起始邏輯扇區

01CA~01CD 4 該分割槽佔用的總扇區數

註釋: * 注意分割槽的起始地址(面/扇區/磁軌)和結束地址(面/扇/道)中位元組分配:

00000000 01000001 00010101

~~~~~~~~ ==^^^^^^ ========

~ 面(磁頭) 8 位

^ 扇區 6 位

= 磁軌 10 位

# 分割槽的作業系統型別(檔案格式標誌碼)

4---DOS FAT16<32M

5---EXTEND

6---DOS FAT16>32M

7---NTFS(OS/2)

83---LINUX>64M

DPT 總共64位元組(01BE--01FD), 如上所示每個分割槽佔16個位元組, 所以可以表示四個分割槽, 這也

就是為什麼一個磁碟的主分割槽和擴充套件分割槽之和總共只能有四個的原因.

邏輯驅動器

-----------

擴充套件分割槽的資訊位於以上所示的硬碟分割槽表(DPT)中, 而邏輯驅動器的資訊則位於擴充套件分割槽的

起始扇區, 即該分割槽的起始地址(面/扇區/磁軌)所對應的扇區, 該扇區中的資訊與硬碟主引導

扇區的區別是不包含MBR, 而16位元組的分割槽資訊則表示的是邏輯驅動器的起始和結束地址等.

所以, 在磁碟僅含有一個主分割槽, 一個擴充套件分割槽(包含多個邏輯驅動器)的情況下, 即使由於病毒

或其他原因導致硬碟主引導扇區的資料丟失(包括DPT), 也可以透過邏輯驅動器的資料來恢復整個硬碟.

例如: 以下是一個硬碟的分割槽情況.

道 面 扇 道 面 扇 起始扇(邏輯) 結束扇 總共扇區

MBR 0 0 1 - - - - - -

C 0 1 1 276 239 63 63 4,188,239 4,188,177

擴 277 0 1 554 239 63 4,188,240 8,391,599 4,203,360

D 277 1 1 554 239 63 4,188,303 8,391,599 4,203,297

如果主分割槽表損壞, 則可以透過手工查詢擴充套件分割槽表中所包含的邏輯驅動器資料, 在本例中就是D盤所對應的資料, 然後將其起始扇(邏輯)減去63就是所對應的擴充套件分割槽的起始扇(邏輯), 將其起始地址(面/扇區/磁軌)改為0面就是擴充套件分割槽的起始地址. 然後透過擴充套件分割槽就可以得到主分割槽C的資訊, 然後就可以使用FDISK/MBR命令和手工填寫分割槽表恢復整個硬碟.

實際使用這種方法比較麻煩, 如果知道每個分割槽的大小, 則可以透過使用PQ MAGIC 5 將磁碟重新分割槽為原來大小(注意: 千萬不能應用, 我們只是透過它來獲得資料), 並檢視INFO來獲得以上

資料, 記錄以後取消該分割槽操作, 然後使用NORTON DISK2000手工修改DPT表, 恢復整個硬碟.

該例所對應的分割槽表資料:

80 01

01 00 06 EF 7F 14 3F 00 00 00 11 E8 3F 00 00 00

41 15 05 EF BF 2A 50 E8 3F 00 60 23 40 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

擴充套件分割槽表資料:

00 01

41 15 07 EF BF 2A 8F E8 3F 00 21 23 40 00

注意: 邏輯起始扇區和總共分割槽數是左邊為低位, 如該例的擴充套件分割槽的起始地址為50 E8 3F 00轉換十進位制時要先變為00 3F E8 50, 總共佔用分割槽數60 23 40 00要先變為00 40 23 60, 同理當手工填寫該值時也要進行高低位轉換.

李家芳 2K.7.22 哈爾濱

------------------------------------------------------------------

原有資訊:

序 號:17942

標 題:再貼!硬碟分割槽結構介紹(修復必讀) (3千字)

發信人:crack007

時 間:2001-5-6 12:01:22

閱讀次數:15

詳細資訊:

硬碟分割槽結構介紹(修復必讀)

作者: RobertYore

--------------------------------------------------------------------------------

硬碟分割槽的主要結構說明: (Cylinder柱面/磁軌-Side磁頭-Sector扇區地址以下簡稱為?-?-?) 《主分割槽》 名稱 地址 長度(扇區)

-----------------------------------------------------------

主開機記錄(Main Boot Record): 0-0-1 1 系統扇區(System Secotrs): 0-0-2,0-0-63 62 引導扇區(Boot): 0-1-1 1 FAT16系統中,此扇區包含BPB(BIOS Parameter Block)表,描述邏輯盤結構組成,包含 隱藏扇區數目(從0-1-1開始計算)、FAT扇區數、FAT複製數、硬碟磁頭總數、根目錄表項 最大值等。 FAT32系統中,BPB表的偏移與FAT16不同,但表項基本相同。整個隱藏扇區部分都作為邏輯 盤的描述區域。 隱藏扇區(Hidden Secotrs): FAT16 0-1-1 1 FAT32 0-1-1 32 檔案分配表(File Allocation Table): FAT16 0-1-2 根據邏輯盤容量變化 FAT32 0-1-33 根據邏輯盤容量變化 說明: FAT16的每個表項由2位元組(16位)組成,通常每個表項指向的簇包含64個扇區,即32K位元組。 邏輯盤容量最大為2047MB。 FAT32的每個表項由4位元組(32位)組成,通常每個表項指向的簇包含8個扇區,即4K位元組。 邏輯盤容量最小為2048MB。 對於C分割槽,在MBR的偏移01c2H處,FAT16為06H,FAT32為0CH。 *** 有關計算公式為: 每個扇區長度=512位元組 總簇數=邏輯盤容量/簇容量 總簇數=FAT表長度(位元組)/每個表項長度(位元組)-2 FAT表長度=邏輯盤容量/簇容量*每個表項長度 FAT表的開始由介質描述符+一串“已佔用”標誌組成: FAT16硬碟----F8 FF FF 7F FAT32硬碟----F8 FF FF 0F FF FF FF 0F 每個有效的FAT結構區包含兩個完全相同的複製:FAT1、FAT2 檔案目錄表(File Directory Table),即根目錄區,又稱為ROOT區: 緊跟在FAT2的下一個扇區,長度為32個扇區(256個表項)。如果支援長檔名,則每個表項 為64個位元組,其中,前32個位元組為長檔案連結說明;後32個位元組為檔案屬性說明,包括檔案長 度、起始地址、日期、時間等。如不支援長檔名,則每個表項為32個位元組的屬性說明。 資料區(Data Area): 緊跟在FDT的下一個扇區,直到邏輯盤的結束地址。 《擴充套件分割槽》 名稱 地址 長度(扇區)

-----------------------------------------------------------

擴充套件分割槽(Extend Partition): ?-y-1 1 系統扇區(System Secotrs): ?-y-2,?-y-63 62 引導扇區(Boot): ?-(y+1)-1 1 其後各項與主分割槽相同…… 擴充套件邏輯盤尋找說明: 1 在主分割槽的分割槽表中,尋找擴充套件分割槽的實體地址(道-頭-扇) 2 在擴充套件分割槽地址所指扇區尾部,查詢擴充套件分割槽表(擴充套件卷),結構與主分割槽表相同 3 擴充套件分割槽表的實體地址中,將磁頭數加1,其餘不變,則為第一個邏輯驅動器(如D盤)的BOOT扇 區實體地址 4 根據擴充套件驅動器的系統分類(FAT16/FAT32,以2048MB為界限),檢視FAT表與ROOT區 5 如果還有E、F……等盤,則繼續尋找符合要求的BOOT扇區,BOOT扇區規定在每個磁頭的1號扇區 附錄:分割槽表項結構說明 分割槽表自MBR扇區偏移01BEH開始,共4個分割槽,每個分割槽16位元組; 第一個分割槽的結構如下: 偏移 值 說明 01BE 80 ;啟動標誌 01BF 01 ;分割槽開始的磁頭號 01C0 01 ;分割槽開始的扇區號,低6位;柱面號,高2位 01C1 00 ;分割槽開始的柱面號,低8位 01C2 ?? ;分割槽型別,06=FAT16的C,0C=FAT32的C,05=擴充套件分割槽 01C3 ?? ;分割槽結束的磁頭號 01C4 ?? ;分割槽結束的扇區號,低6位;柱面號,高2位 01C5 ?? ;分割槽結束的柱面號,低8位 01C6-01C9 ?? ;相關扇區數,通常為63 01CA-01CD ?? ;分割槽的總扇區數 分割槽表結束標誌: 01FE 55 01FF AA 關於MS-DOS 6.xx以上版本的兩個明顯BUG的說明: 1 FDISK.EXE 在FDISK建立分割槽時,將對每個磁頭的1號、7號扇區進行覆蓋,填入512位元組的F6;覆蓋 區域範圍從BOOT區開始,結束地址不詳。 2 啟動過程 在MS-DOS啟動過程中(包括WINDOWS 9X啟動的MS-DOS 7.XX),將搜尋每個邏輯驅動器, 如果在擴充套件分割槽表中的某個邏輯盤的分割槽型別標誌被病毒或其他因素(如王江民的KV???的 某個版本,為“懲罰”盜版……)改寫為05H後,又將該分割槽指標指向硬碟頭部的主開機記錄, 那麼……呵呵,你再看看你的硬碟還能啟動嗎?用軟盤(MS-DOS 5.0以上版本)還能啟動嗎? ……要嘛改個位元組,要嘛就用DOS 3.31(還找得到嗎?)來啟動…… 注意,上述分割槽表中的實體地址資料較為陳舊,哪位朋友有LBA硬碟BIOS的新資料,請不吝賜教

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-946260/,如需轉載,請註明出處,否則將追究法律責任。

相關文章