BIOS parameter block (BPB) là tập hợp của các thông số liên quan đến File Allocation Table.
FAT12/16
Bảng các thông số có trong BPB của FAT12/16:
| Offset | Name | Length | Note | Notation |
|---|---|---|---|---|
| 0x0B | Số byte của mỗi sector | 1 word (2 bytes) | Thường có giá trị là 2. | |
| 0x0D | Số sector mỗi cluster | 1 byte | Thường có giá trị là 8. | |
| 0x0E | Số sector dành riêng | 1 word | Giá trị tối thiểu là 1, bao gồm cả boot sector. Nếu giá trị lớn hơn 1, điều đó có nghĩa là đoạn code khởi động máy quá lớn nên không thể lưu vừa vào boot sector. | |
| 0x10 | Số bảng FAT | 1 byte | Thường có giá trị là 2. | |
| 0x11 | Số entries trong RDET | 1 word | Dành cho FAT12/16. | |
| 0x13 | Số sector của volume | 1 word | Chỉ lưu được số sectors có giá trị nhỏ hơn 16 bits (65535 sectors, tương ứng với 32 GB). Nếu số lượng các sector lớn hơn 65535, field này sẽ có giá trị là 0 và field ở offset 0x20 sẽ được sử dụng. | |
| 0x15 | Media descriptor | 1 byte | ||
| 0x16 | Số sector của mỗi bảng FAT | 1 word | Dành cho FAT12/16. | |
| 0x18 | Số sector mỗi track | 1 word | ||
| 0x1A | Số head | 1 word | ||
| 0x1C | Số sector phía trước phân vùng | 1 double word | ||
| 0x20 | Số sector của volume | 1 double word | Nếu field ở offset 0x13 có giá trị là 0, field này sẽ mang giá trị khác 0. | |
| 0x24 | Physical drive number | 1 byte | ||
| 0x25 | Current head | 1 byte | Không được sử dụng bởi hệ thống tập tin FAT. | |
| 0x26 | Signature | 1 byte | Cần phải là 0x28 hoặc 0x29. | |
| 0x27 | Volume serial number | 4 bytes | ||
| 0x2B | Volume label | 11 bytes | Từng được dùng để lưu nhãn của volume. | |
| 0x36 | Loại hệ thống tập tin | 8 bytes | Có thể là FAT12 hoặc FAT16. |
FAT32
BPB của FAT32 có 36 bytes đầu tiên (tính từ offset 0x24 trở về trước) là tương tự với FAT12 và FAT16.
Các bytes còn lại sẽ có vài chỗ khác biệt:
| Offset | Name | Length | Decription |
|---|---|---|---|
| 0x24 | Số sector của mỗi bảng FAT | 1 double word | |
| 0x28 | Các cờ | 1 word | Bits 0-3 cho biết FAT hiện hành. Bit 7 cho biết bản sao chép của FAT có được sử dụng hay không. |
| 0x2A | Phiên bản của ổ đĩa FAT32 | 1 word | Byte cao = major version, byte thấp = minor version. |
| 0x2C | Chỉ số cluster của bảng RDET | 1 double word | Giá trị thường thấy là 2. |
| 0x30 | Chỉ số sector của FSINFO | 1 word | Thường có giá trị là 1. |
| 0x32 | Chỉ số sector của backup boot sector | 1 word | Thường có giá trị là 6. |
| 0x34 | Dành riêng | 12 bytes | |
| 0x40 | Physical drive number | 1 byte | Với 0x00 là đĩa mềm và 0x80 là đĩa cứng. |
| 0x41 | Dành riêng | 1 byte | Có thể là phần byte cao của field trước đó. |
| 0x42 | Signature | 1 byte | Có giá trị là 0x29 |
| 0x43 | Volume serial number | 1 double word | |
| 0x47 | Volume label | 11 bytes | |
| 0x52 | FAT Name | 8 bytes | Có giá trị là FAT32. |
Formulas
Các công thức tính vị trí
Vị trí sector đầu tiên của bảng FAT:
Vị trí sector đầu tiên của RDET
Vị trí sector đầu tiên của vùng dữ liệu