FAT32結構資訊 — MBR、FAT32 開機磁區介紹

Gina 於 2024/03/15 更新資料救援|產品相關文章

摘要:

本文詳細介紹了 FAT 32 檔案系統結構資訊、FAT 32 開機磁區、FAT 32 磁碟分割樣式表、FAT 32 MBR。如果您不小心丟失了資料,免費下載 EaseUS Data Recovery Wizard 來復原刪除檔案和丟失的資料、格式化還原磁碟、救援格式化或刪除的硬碟、FAT 32 檔案系統下的磁碟區。

主開機記錄是什麼?

幾乎所有系統的主開機記錄都是相同的。它位於硬碟的第一個磁碟區,位於 Cylinder 0,Head 0,Sector 1。這是您的電腦在檢查所有硬體(POST)並控制載入軟體後執行的第一段代碼在硬碟上。它還包含磁碟分割樣式表,它定義了硬碟的不同部分。基本上,如果這個 512 字元的小部分出現任何問題,您的硬碟就會當機。

Offset 描述 大小
000h 可執行代碼(開機電腦) 446 字元
1BEh 第一個磁碟區條目(見下表) 16 字元
1CEh 第二個磁碟區條目 16 字元
1DEh 第三個磁碟區條目 16 字元
1EEh 第 4 個磁碟區條目 16 字元
1FEh 開機記錄簽名 (55hAAh) 2字元
  • 磁碟區條目(MBR 的一部分)
Offset 描述 大小
00h 磁碟區的當前狀態(00h=不活動,80h=活動) 1字元
01h 磁碟區開始 - 頭 1字元
02h 磁碟區的開始 - 柱面/扇區(見下文) 1個字
04h 磁碟區類型(見下表) 1字元
05h 磁碟區結束 - 頭 1字元
06h 磁碟區結束 - 柱面/扇區 1個字
08h MBR 與磁碟區中第一個扇區之間的扇區數 1個雙字
0Ch 磁碟區中的扇區數 1個雙字
  • 柱面/扇區編碼

我想在 10MB 硬碟和 8086 的時代,代碼非常珍貴。所以他們竭盡全力保護空間。不幸的是現在我們不得不忍受它,但幸運的是他們創造了翻譯系統的新方法,因此 1024 柱面限制 (2^10) 不是太大的問題,至少對於較新的電腦而言。年長的人通常需要某種磁碟覆蓋程序才能讓他們看到整個硬碟。

無論如何,要使扇區擺脫這種情況,您需要對其應用一個 AND 掩碼 ($3F)。要獲得 Cylinder,您需要將高字元與用 ($C0) 屏蔽的低字元進行 OR 運算,然後左移二位。這不是很容易解釋,所以我們將向您展示我是如何用我們製作的兩個例程(在 Pascal 中)對圓柱體/扇區進行編碼和解碼的。希望即使您不了解 Pascal,也能閱讀它。

Function CylSecEncode(Cylinder, Sector: Word): Word;
Begin
   CylSecEncode: = (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector;
End;

Procedure CylSecDecode(Var Cylinder, Sector: Word; CylSec : Word);
Begin
   Cylinder: = Hi(CylSec) or ((Lo(CylSec) and $C0) shl 2);
   Sector: = (CylSec and $3F);
End;

15 14 13 12 11 10 9 8個 7 6個 5個 4個 3個 2個 1個 0
圓柱鑽頭 7 至 0 圓柱鑽頭 9+8 扇區位 5 到 0

磁碟區類型列表

不僅僅顯示了這些,但我只包括了與 MS 操作系統相關的那些。

描述
00h 未知或無
01h 12 位元 FAT
04h 16 位元 FAT(小於 32MB 的磁碟區)
05h 延伸 MS-DOS 磁碟區
06h 16 位元 FAT(磁碟區大於 32MB)
0Bh 32 位元 FAT(磁碟區最大 2048GB)
0Ch 與 0BH 相同,但使用 LBA 1 13h 延伸
0Eh 與 06H 相同,但使用 LBA 1 13h 延伸
0Fh 與 05H 相同,但使用 LBA 1 13h 延伸

讀取多個磁碟區

儘管在 FAT32 中擁有多個磁碟區的可能性不如在 FAT16 中,但它的工作方式仍然相同。第一個磁碟區是主磁碟區,其他所有磁碟區都儲存在延伸磁碟區中。不過,在讀取這些額外磁碟區時有點棘手(不是很多,只是一點點)。磁碟區表中的第一條記錄顯示了主磁碟區的位置(它有多大,從哪裡開始,從哪裡結束)。磁碟區表中的第二項顯示整個延伸磁碟區所在的位置(可能包括不止一個磁碟區)。要讀取更多磁碟區,請轉到延伸磁碟區開始的位置,然後讀取第一個扇區。它的作用就像 MBR。它應該在代碼所在的地方留有空白,在磁碟區表中,它的第一個條目是硬碟中的下一個磁碟區,如果還有,將有另一個延伸磁碟區,就像以前一樣。但是,所有對扇區號的引用都是使用新的 MBR 點作為參考,使其成為虛擬硬碟。以防萬一這沒有多大意義(順便說一句,如果沒有,我可以解釋我能理解的事情),讓我們展示如何設定具有三個磁碟區的硬碟。

整個硬碟的 MBR

Entry #1 - Points to Partition #1
Entry #2 - Points to the Entire Extended Partition

您將讀取該延伸磁碟區的第一個扇區,並看到另一個 MBR 結構。

延伸磁碟區的 MBR

Entry #1 - Points to Partition #2
Entry #2 - Points to Rest of Extended Partition after Partition #2

現在,這些條目中對扇區號(尤其是偏移 08h 處的條目)的所有引用都不會從硬碟的開頭引用,而是從延伸磁碟區的開頭引用。然而,CHS(柱面、磁頭、扇區)數字仍然是正確的。

再一次,您將讀取該延伸磁碟區的第一個扇區,並查看下一個 MBR。

其餘延伸磁碟區的 MBR

條目 #1 - 指向磁碟區 #3
沒有條目 #2,因為這是最後一個磁碟區

如果有另一個磁碟區,模式將像以前一樣繼續,直到到達最後一個磁碟區。

FAT32 開機記錄資訊

此資訊位於每個磁碟區的第一個扇區。

Offset 描述 尺寸
00h 跳碼+NOP 3字元
03h OEM 名稱(可能是 MSWIN4.1) 8字元
0Bh 每扇區字元數 1個字
0Dh 每個集群的扇區 1字元
0Eh 保留扇區 1個字
10h FAT 拷貝數 1字元
11h 最大根目錄條目數(FAT32 不適用) 1個字
13h 磁碟區中小於 32MB 的扇區數(FAT32 不適用) 1個字
15h 媒體描述符(硬碟為 F8h) 1字元
16h 舊 FAT 系統中每個 FAT 的扇區(FAT32 不適用) 1個字
18h 每磁道扇區 1個字
1Ah 頭數 1個字
1Ch 磁碟區中的隱藏扇區數 1個雙字
20h 磁碟區扇區數 1個雙字
24h 每個 FAT 的扇區數 1個雙字
28h Flags (Bits 0-4 IndicateActive FAT Copy) (Bit 7 Indicates whether FAT Mirroringis Enabled or Disabled) (If FAT Mirroring is Disabled, the FAT Information is onlywritten to the copy indicated by bits 0-4) 1個字
2Ah FAT32 硬碟的版本(高字元 = 主要版本,低字元 = 次要版本) 1個字
2Ch 根目錄起始叢集號 1個雙字
30h 文件系統資訊扇區的扇區號(見下面的結構)(從磁碟區開始引用) 1個字
32h BackupBoot 扇區的扇區號(從磁碟區開始引用) 1個字
34h 預訂的 12 字元
40h 磁碟區的邏輯硬碟號 1字元
41h 未使用(可能是前一個條目的高字元) 1字元
42h 延伸簽名 (29h) 1字元
43h 磁碟區序號 1個雙字
47h 磁碟區的捲名 11 字元
52h FAT 名稱 (FAT32) 8字元
5Ah 可執行代碼 420 字元
1FEh 開機記錄簽名 (55hAAh) 2字元

檔案系統資訊扇區指令

通常,這存在磁碟區的第二扇區,儘管因為在開機扇區中有對它的引用。我假設它可以四處移動。我從來沒有得到這個的完整照片。雖然我們確實知道重要領域在哪裡。

Offset 描述 尺寸
00h 第一個簽名 (52h 52h 61h41h) 1個雙字
04h 未知,當前(可能為空) 480 字元
1E4h FSInfo 扇區的簽名(72h 72h 41h 61h) 1個雙字
1E8h 空閒叢集數(如果未知則設定為 -1) 1個雙字
1ECh 最近分配的集群的集群編號。 1個雙字
1F0h 預訂的 12 字元
1FCh 未知或空 2字元
1FEh 開機記錄簽名 (55hAAh) 2字元

FAT32 硬碟佈局

Offset 描述
Start of Partition 開機扇區
Start + # of ReservedSectors fat 表
Start + # of Reserved + (#of Sectors Per FAT * 2) 資料區(從 Cluster #2 開始)

聚類意義

叢集是硬碟上的一組扇區,其中包含資訊。一個 4K Cluster 有 8 個扇區 (512*8=4096)。每個叢集在 FAT 表中都有一個位置。當您查看 FAT 中的一個條目時,那裡的數字會告訴您該叢集中是否有數據,如果有,它是否是數據的末尾或者在它之後有另一個叢集。磁碟區上的所有數據都以 Cluster #2 開頭。如果 FAT 條目為 0,則該叢集中沒有數據。如果 FAT 條目是 0FFFFFFFh,則它是鏈中的最後一個條目。

這是我的資訊中最大的漏洞之一。當涉及到 FAT 表時,我們無法找到任何顯示數字意味著什麼的地方。我們能夠通過檢視 FAT32 硬碟來判斷鍊的末端,但我們不知道什麼代表壞叢集或顯示數據的最大有效數字是多少。

現在,您可以使用以下公式計算磁碟區中的最大有效集群:

((磁碟區中的扇區數)-(每個 FAT 的扇區數 * 2)-(保留扇區數))/(每個集群的扇區數)

如果該公式的答案中有任何餘數,則僅表示磁碟區末尾有一些額外的叢集(可能不足以構成另一個叢集),因此您可以去掉小數點後的任何內容.

目錄表

在低級別查看文件系統時的另一個方面是目錄表。目錄表是儲存所有文件和目錄條目的地方。基本上,FAT16 和 FAT32 的目錄表只有一個區別。不同之處在於:短文件名結構中的保留 OS/2 字元(偏移量 20 [14h])被替換為叢集號的高位字(因為它現在是 4 個字元而不是 2 個字元)。

文件分配表

腳註

1 - LBA = 邏輯塊尋址 - 使用內置於較新 BIOS 中的 Int 13h 延伸來訪問 8GB 屏障以上的數據,或嚴格以 LBA 模式訪問,而不是 CHS(柱面、磁頭、扇區)

額外提示:使用 EaseUS 硬碟救援軟體從 FAT32 硬碟復原丟失的資料

如果您不小心刪除、刪除或格式化了 FAT32 硬碟、USB 或其他儲存裝置上的資料,請不要驚慌。您最好的選擇就是讓 EaseUS Data Recovery Wizard 來幫忙!在這裡我們想推薦您嘗試EaseUS Data Recovery Wizard,可以在 3 個簡單的步驟內有效地復原刪除、格式化的資料。免費下載軟體以找回所有丟失的 FAT32 資料: