采用以下 fdisk 输入:
o # Create DOS/MBR partition table.
n # Create new partition.
p # Partition type
1 # Partition ID
2048 # Starting sector
+4M # Ending sector
t # Assign said partition to a FAT12 filesystem.
1 # FAT12 filesystem.
a # Mark said partition as bootable.
w # Write partition table.
现在,让我们看一下 MBR,特别是分区条目(分区条目从0x80
第一行末尾附近开始)。
000001b0: 0000 0000 0000 0000 4a2f 9087 0000 8020 ........J/.....
000001c0: 2100 01a2 2200 0008 0000 0020 0000 0000 !..."...... ....
000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.
根据 MBR 部分条目的布局(在此处和此处给出),我们可以从中收集 CHS 元组的值是0x20
、0x21
、0x00
。
0x20
相当简单:它相当于第 32 个头。
0x21
包含起始扇区和起始柱面。0x21
-> 0b00100001
,给出33
扇区,柱面的第 8 位和第 9 位导致0
( 0b00
)。
结合0b00
(来自0x21
)和的圆柱体位0b00000000
,我们得到0b0000000000
圆柱体。总而言之,我们最终的起始磁头为32,起始扇区为33,起始柱面为0。
当我尝试通过 BIOS 中断加载此 CHS 时,它抱怨 CHS 无效(我可以正常读取其他扇区)。我认为这是因为头部是 32;毕竟,你为什么会有一个 16 盘片的硬盘呢?
tl;博士
Fdisk 输出带有 CHS 值的 MBR。
我的问题是我是否误解了 CHS 值是如何编码到分区条目中的,或者这是否是 fdisk 的一个怪癖。