Đĩa cứng - 3 - EBR


 (Tiếp theo Đĩa cứng_2)


EBR (Extended Boot Record)

Như đã đề cập ở phần trước, có hai loại partition là: primary partition và extended partition.
Khi extended partition được tạo, hệ thống sẽ dành một entry trong partition table của MBR để mô tả thông tin cho extended partition. Đây được xem như chỉ dẫn để đến được EBR đầu tiên (EBR1).
Mỗi đĩa cứng chỉ có duy nhất một extended partition. Từ extended partition này có thể tiếp tục chia nhỏ thành nhiều logical partition.
EBR là sector chứa thông tin mô tả cho logical partition (ổ đĩa logic) nằm trong extended partition. Như vậy, trong một đĩa cứng có thể không có EBR nào, có một EBR, hoặc có rất nhiều EBR.
Trong các hệ thống DOS/Windows, mỗi logical partition được gán bằng một kí tự trong bảng chữ cái (D:\, E:\ ...v.v).
Khi tạo primary partition, thông tin mô tả về primary partition được lưu trong partition table tại MBR, do chỉ có bốn entry nên số lượng primary partition tạo được nhiều nhất là bốn. Với logical partition thì khác, EBR là sector đầu tiên trong mỗi logical partition, mô tả thông tin về logical partition đó, và nếu có logical partition đằng sau nữa, EBR sẽ chứa một con trỏ (địa chỉ) để trỏ tới EBR kết tiếp. Như vậy, EBR trước sẽ liên kết với EBR sau tạo thành một chuỗi các EBR. Nghĩa là việc tạo các logical partition là không giới hạn, nó chỉ phụ thuộc vào dung lượng của đĩa cứng cấp cho extended partition.
Hình sau minh họa về các EBR :



Cấu trúc của EBR
EBR đầu tiên (EBR1) nằm tại sector bắt đầu của extended partition (logical partition đầu tiên).
Cấu trúc của EBR cũng tương tự như MBR, gồm 512 byte, được mô tả trong bảng dưới đây:
Địa chỉ (offset)
Mô tả
Số byte
Hệ 16
Hệ 8
Hệ 10
0000
0000
0
Không sử dụng
446
01BE
0676
446
Bảng thông tin về các logical partition (partition table)
64
01FE
0776
510
55h
Dấu hiệu nhận dạng
boot sector (0xAA55)
2
01FF
0777
511
AAh
Tổng kích thước:
512
Partition table của EBR gồm 64 byte, gồm bốn entry, mỗi entry 16 byte. Cụ thể như sau:
Địa chỉ
(offset)
Kích thước
(byte)
Mô tả
01BE
16
Thông tin mô tả cho logical partition hiện tại
01CE
16
Nếu có giá trị, là liên kết tới logical partition kế tiếp
01DE
16
Không sử dụng
01EE
16
Không sử dụng
Ví dụ về EBR
Quan sát một phần MBR của đĩa cứng sau:

Entry thứ ba của partition table, bắt đầu tại địa chỉ 0x01DE, kết thúc tại 0x01ED, có trường “partition type” mang giá trị 0x0F, nên đây là entry chứa thông tin về extended partition.
Các trường của entry thứ ba:
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“00 81 FD” (ba byte địa chỉ bắt đầu dạng CHS)
0x01
1
0 (head)
0x02
1
1 (sector)
0x03
1
765 (cylinder)
0x04
1
0x0F: extended partition
0x05
3
“FE FE FF” (ba byte địa chỉ kết thúc dạng CHS)
0x05
1
 254(head)
0x06
1
 63(sector)
0x07
1
 1023(cylinder)
0x08
4
“BD 86 BB 00” (sector bắt đầu là: 12289725)
0x0C
4
“57 64 44 00” (tổng số sector: 4482135; ~2,3GB)
Từ thông tin mô tả của extended partition ở trên, có hai thông tin quan trọng: sector bắt đầu của extended partition là 12289725 và kích thước là ~2,3GB.
Nội dung của EBR đầu tiên (EBR1) nằm tại sector 12289725.
Sector 12289725 được minh họa trong hình sau:

EBR1 gồm 512 byte, trong đó chỉ có trường partition table là có dữ liệu. Trường partition table bắt đầu tại địa chỉ 0x01BE, gồm 64 byte. Cụ thể:
Địa chỉ
(offset)
Kích thước (byte)
Mô tả
01BE
16
Thông tin mô tả về logical partition đầu tiên (ổ đĩa D:\)
01CE
16
Liên kết tới phần mô tả thông tin cho logical partition kế tiếp (EBR2)
01DE
16
Không sử dụng
01EE
16
Không sử dụng
Entry đầu tiên của partition table, bắt đầu tại 0x01BE, kết thúc tại 0x01CD là thông tin mô tả cho logical partition đầu tiên (ổ đĩa logic đầu tiên của Extended partition), cụ thể:
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“01 81 FD” (ba byte địa chỉ bắt đầu dạng CHS)
0x01
1
1 (head)
0x02
1
1 (sector)
0x03
1
765 (cylinder)
0x04
1
0x0B: FAT32
0x05
3
“FE FF 7C” (ba byte địa chỉ kết thúc dạng CHS)
0x05
1
 254(head)
0x06
1
 63(sector)
0x07
1
 892(cylinder)
0x08
4
“3F 00 00 00” (sector bắt đầu là: 63)
0x0C
4
“41 60 1F 00” (tổng số sector: 2056257; ~1GB)
Lưu ý: sector bắt đầu của ổ đĩa logic (dạng LBA) là số sector tương đối, nghĩa là, tính từ nơi bắt đầu của extended partition.
Entry thứ hai của partition table, bắt đầu tại 0x01CE, kết thúc tại 0x01DD là thông tin liên kết đến EBR2. Cụ thể:
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“00 C1 7D” (3 byte địa chỉ bắt đầu dạng CHS)
0x01
1
0 (head)
0x02
1
1 (sector)
0x03
1
893 (cylinder)
0x04
1
“05” – extended partition
0x05
3
“FE FF FF” (3 byte địa chỉ kết thúc dạng CHS)
0x05
1
 254(head)
0x06
1
 63(sector)
0x07
1
 1023(cylinder)
0x08
4
“80 60 1F 00” (địa chỉ LBA, sector bắt đầu là: 2056320)
0x0C
4
“D7 03 25 00” (tổng số sector: 2425815; ~1,2GB)
Từ thông tin về EBR2, biết được EBR2 bắt đầu tại sector: 2056320. Đây cũng chính là sector chứa nội dung của EBR2.
Vì sector bắt đầu của EBR2 là vị trí tương đối, nên để tới được sector vật lý của EBR2, cần phải cộng thêm sector bắt đầu của Extended partition: 2.056.320 + 12.289.725 = 14.346.045.
Đọc sector 14.346.045, được kết quả như hình dưới đây:

Vì trong extended partition chỉ tạo hai logical partition (hai ổ đĩa logic), nên chỉ có 2 EBR, EBR2 không còn liên kết tới EBR nào nữa.
Dưới đây là nội dung partition table của EBR2:
Địa chỉ dạng Hex (offset)
Kích thước (byte)
Mô tả
01BE
16
Thông tin mô tả cho logical partition thứ hai (ổ đĩa E:\)
01CE
16
Không sử dụng
01DE
16
Không sử dụng
01EE
16
Không sử dụng
Thông tin mô tả cho logical partition thứ hai của extended partition (ổ đĩa E:\):
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“01 C1 7D” (3 byte địa chỉ bắt đầu dạng CHS)
0x01
1
1 (head)
0x02
1
1 (sector)
0x03
1
893 (cylinder)
0x04
1
“0B”: FAT32
0x05
3
“FE FF FF” (3 byte địa chỉ kết thúc dạng CHS)
0x05
1
 254(head)
0x06
1
 63(sector)
0x07
1
 1023(cylinder)
0x08
4
“3F 00 00 00” (địa chỉ LBA, sector bắt đầu là: 63)
0x0C
4
“98 03 25 00” (tổng số sector: 2425752; ~1,2GB)

----------------------
Cập nhật: 2013_3_5
----------------------
Tham khảo:
[3] FAT32_Hardware White Paper
[4] http://en.wikipedia.org



Đĩa cứng - 2 - MBR

(tiếp theo của Đĩa cứng_1)



Ví dụ minh họa về MBR


Sử dụng phần mềm Partition Magic chia đĩa cứng thành ba partition:
o       Một primary partition kích thước 4 GB, partition type là FAT32.
o       Một primary partition kích thước 2 GB, partition type là NTFS.
o       Một extended partition kích thước 2GB, trong extended partition tạo hai ổ đĩa logic (chia tiếp thành hai logical partition), mỗi ổ đĩa kích thước 1GB. Cả hai ổ đĩa đều chọn partition type là FAT32.
Kết quả như hình dưới đây:


Khởi động lại máy tính, sử dụng phần mềm Norton Disk Editor 2002 (trong đĩa Hiren’s Boot, phiên bản đang sử dụng là 10.1) đọc sector 0 của đĩa cứng. Có thể đọc thêm bài viết “Đọc đĩa cứng bằng phần mềm Disk Editor”.
Kết quả được thể hiện trong hình dưới đây:

Dựa vào cấu trúc của MBR, định vị vùng partition table, vùng này bắt đầu tại địa chỉ 0x01BE.
Vùng 64 byte này (vùng tô màu) được chia thành bốn phần bằng nhau (bốn entry). Mỗi entry gồm 16 byte, mô tả thông tin về một partition:
-         Entry 1: bắt đầu tại địa chỉ 0x01BE, kết thúc tại 0x01CD.
-         Entry 2: bắt đầu tại địa chỉ 0x01CE, kết thúc tại 0x01DD.
-         Entry 3: bắt đầu tại địa chỉ 0x01DE, kết thúc tại 0x01ED.
-         Entry 4: bắt đầu tại địa chỉ 0x01EE, kết thúc tại 0x01FD.
Dấu hiệu kết thúc của MBR mang giá trị “55AA”.
Trong bốn entry trên, chỉ có ba entry đầu có dữ liệu, toàn bộ các byte của entry cuối mang giá trị 0x00. Có thể kết luận đĩa cứng trên gồm ba partition.
Giá trị các trường của mỗi entry:
Entry 1:
Offset
Số byte
Mô tả
0x00
1
“80” – có khả năng khởi động (đã được set active)
0x01
3
“01 01 00” (ba byte địa chỉ bắt đầu dạng CHS)
0x01
1
1 (head)
0x02
1
1 (sector)
0x03
1
0 (cylinder)
0x04
1
“0B”: FAT32
0x05
3
“FE 7F FD” (ba byte địa chỉ kết thúc dạng CHS)
0x05
1
254 (head)
0x06
1
63 (sector)
0x07
1
509 (cylinder)
0x08
4
“3F 00 00 00” (địa chỉ  dạng LBA, sector bắt đầu là: 63)
0x0C
4
“3F 04 7D 00” (tổng số sector: 8193087; ~4GB)
Entry 2:
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“00 41 FE” (ba byte địa chỉ bắt đầu dạng CHS)
0x01
1
0 (head)
0x02
1
1 (sector)
0x03
1
510 (cylinder)
0x04
1
“17”: Hidden, primary partition, NTFS
0x05
3
“FE BF FC” (ba byte địa chỉ kết thúc dạng CHS)
0x05
1
254 (head)
0x06
1
63 (sector)
0x07
1
764 (cylinder)
0x08
4
“7E 04 7D 00” (địa chỉ LBA, sector bắt đầu là: 8193150)
0x0C
4
“3F 82 3E 00” (tổng số sector: 4096575; ~2GB)
Entry 3:
Offset
Số byte
Mô tả
0x00
1
“00” – không có khả năng khởi động
0x01
3
“00 81 FD” (ba byte địa chỉ bắt đầu dạng CHS)
0x01
1
0 (head)
0x02
1
1 (sector)
0x03
1
765 (cylinder)
0x04
1
“0F”: extended partition
0x05
3
“FE FF FF” (ba byte địa chỉ kết thúc dạng CHS)
0x05
1
 254(head)
0x06
1
 63(sector)
0x07
1
 1023(cylinder)
0x08
4
“BD 86 BB 00” (địa chỉ LBA, sector bắt đầu là: 12289725)
0x0C
4
“57 64 44 00” (tổng số sector: 4482135; ~2GB)
----------------------
Cập nhật: 2013_3_5
----------------------
Tham khảo:
[3] FAT32_Hardware White Paper
[4] http://en.wikipedia.org