深入理解 GNU GRUB - 02 boot.S 2.2 MBR结构 2.3 boot.S代码结构

转载注明出处(cppgp: http://blog.csdn.net/cppgp )

 

2.2 MBR结构
历史悠久的MBR结构自从IBM兼容PC出现以来一直就没变过(但是为支持2TiB以上硬盘而出现的GUID/EFI结构将更改MBR结构)。MBR结构分为三部分,分别是引导指令、分区表DPT (Disk Partition Table)、幻数Magic (Magic=0x55AA)。其中引导指令占用446字节(0~0x1BD),DPT占用64字节(0x1BE~0x1FD),Magic占用2字节。
Magic值总是等于0x55AA,用来标记MBR的有效性。大多数BIOS检测Magic值判断是否为可引导设备,但是也有些BIOS使用另外的字段检测。在所有的小端设备上(例如80x86机器),在写入时需要设置为0xAA55。
DPT是硬盘分区表(Disk Partition Table)的缩写。MBR支持4个基本分区项,每个分区项占用16字节。可以将其中一个基本分区项标记为扩展分区(逻辑分区),扩展分区的第一个扇区称为EBR (Extended Boot Record) ,和MBR有类似的结构,但是只能利用两个基本分区项,其中一个用来划分分区,另一个指向新的EBR,这样就可以实现更多的分区。每个分区项的布局完全一致,如下:
偏移量        字节数        描述
0x00        1        分区状态,
0x80为可引导分区
0x00为不可引导分区
其他值无效
0x01        3        该分区第一个扇区CHS地址,格式见稍后描述
0x04        1        分区文件系统格式,比如NTFS/FAT32/Linux等
0x05        3        该分区最后一个扇区CHS地址,格式见稍后描述
0x08        4        该分区第一个扇区的绝对LBA地址
                          表示从磁盘开始到该分区的扇区数
0x0C        4        该分区的扇区数量

3字节的CHS地址结构如下:
偏移量            描述
0x00            磁头
0x01            低6位表示扇区,高2位表示柱面的9~10位
0x04            柱面的低8位

对于CHS结构还有疑问者,查阅2.1.4的CHS模式读可加强理解。因为CHS寻址有7.88GiB限制,现在的硬盘一般都是用LBA寻址,因此分区表中有用的字段是状态字段(0x00)、分区格式(0x03)、扇区偏移量(0x08~0x0B)和扇区数量(0x0C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值