硬碟由許多磁盤構成,包括
- 磁頭 (Head):硬碟讀寫頭,磁頭數目表示總共有多少磁盤讀寫面。
- 磁軌 (Track):每個磁盤有許多儲存資料的同心圓。
- 磁柱 (Cylinder):同半徑的磁軌所組成的圓柱。
- 磁區 (Sector):硬碟最小儲存單位,一般 512-byte。
MBR 放第一個磁區 (編號 0),剩下的磁區最多可切出四個區塊,稱為分割區 (partition)。分割區分成主要分割 (Primary Partition) 跟擴充分割 (Extended Partition) 兩種。主要分割就是一個邏輯硬碟。擴充分割的架構就像一個實體硬碟,其第一個磁區放格式類似 MBR 的的 Extend Boot Record (EBR),但只能切出一個邏輯硬碟、以及一個擴充分割。邏輯硬碟以 DOS/Windows 觀點就是 C:、D:、E:... 這些硬碟機名稱。透過擴充分割再切出擴充分割,可分割出一系列邏輯硬碟。
MBR/EBR 內容
| 偏移 | byte 數 | 內容 | 說明 |
|---|---|---|---|
| 0 ~ 445 | 446 | 啟動資料與程式 | |
| 446 ~ 509 | 64 | 分割表 | 可描述 4 個分割區,每個用 16 bytes。MBR 可用掉 1~ 4 個描述主要分割,如有剩下可描述 1 個擴充分割。EBR 第 1 個描述一個邏輯硬碟,第 2 個可描述內部的擴充分割,第 3、4 個不能使用。 |
| 510, 511 | 2 | 0xAA55 | 識別用 |
分割區描述
每個分割區描述用 16 bytes,如下:| 偏移位址 | byte 數 | 名稱 | 說明 |
|---|---|---|---|
| 00H | 1 | 啟動狀態 | 80h 表示可啟動 00h 表示不可啟動 |
| 01H | 3 | 起始磁頭、磁柱、及磁區 | 位置為相對於 MBR。其中起始磁頭 8-bit、起始磁柱 10-bit、起始磁區 6-bit。 |
| 04H | 1 | 檔案系統識別碼(partition types) | 識別是擴充分割,還是主要分割所用的檔案系統。 |
| 05H | 3 | 結束磁頭、磁柱、及磁區 | 格式同起始磁頭、磁柱、及磁區 |
| 08H | 4 | 分割區相對位置 | 相對於目前磁區的磁區數。 |
| 0CH | 4 | 磁區數 | 該分割磁區總數 |
磁柱、磁頭、及磁區合稱 CHS (cylinder, head and sector),可用作為磁區定址使用。另一種定址方式稱為 Logical Block Address (LBA),將一顆硬碟的磁區從 0 開始依序編碼。每個分割區需要從分割區描述知道其使用的磁區範圍:
| 定址方式 | CHS | LBA |
|---|---|---|
| 開始磁區 | 起始 CHS | 分割區相對磁區數 |
| 結束磁區 | 結束 CHS | 分割區相對磁區數 + 磁區數 |
| 最大容量 | 8.4 GB = 210*28*(26-1)*512B | 2199 GB = 232*512B |
| BIOS 中斷 | INT 13h | Extended INT 13h (使用 64-bit LBA 定址,可支援達 9400000000 TB 的硬碟,實際上分割表只有 32-bit 的 LBA。) |
檔案系統識別碼
- 06h (CHS)、0Eh (LBA):FAT16
- 0Bh (CHS)、0Ch (LBA):FAT32
- 05h (CHS)、0Fh (LBA):擴充分割
- 07h:NTFS 或 OS/2 HPFS
- 83h:
- 其餘可參閱 Andries Brouwer 所寫的 Partition types
參考
- 小木偶的組合語言教學之Ch 32 硬碟 (1) 分割區
- http://www.48bitlba.com/
- http://ata-atapi.com/
- spfdisk
- Jamyy's《復原 Windows MBR 的各種方式》
沒有留言:
張貼留言