MBR完整架构

上一篇文章描述了如何使用LBA模式读取MBR。
但好像并不是所有的BIOS都支持LBA模式,所以最原始的CHS模式(NOMAL模式)也是有必要的。
换句话来说,如果PBR在528MB以内,就没有必要使用LBA模式。
大概流程是判断CHS是否有效,有效(528MB以内)则使用CHS模式。
那么如何知道CHS是有效的呢?
我自己用虚拟机实践了一下,一个20G的硬盘,分成两个10G的主分区,并把第二个主分区设置为活动的。
这就造成了PBR在很远很远的地方,查看MBR,第二个分区分区表为80 FE FF FF等16个字节。
磁头数=0xFE=254,柱面数=1111111111B=1023,扇区数=111111B=63。
本来我是想用这一种方法来判断的,就是比较各数据成员是否是最大值。
不过没有采用,使用的是CHS和LBA比较的方法。
通过获取磁盘参数(int 13/ah=8)得到硬盘参数,把CHS转换为LBA地址,再与MBR中的LBA地址比较,相等则使用CHS模式。
计算公式如下:

设NS为每磁道扇区数,NH为每柱面磁头数,C、H、S分别表示磁盘的柱面、磁头和扇区编号
LBA=NH×NS×C+NC×H+S-1
换句话来说,如果LBA表示的扇区在CHS表示范围之内,则CHS模式可用。

至此,MBR基本完成,能够替换windows的MBR并正常启动。

你可能感兴趣的:(c,虚拟机,windows,活动,磁盘)