主引导记录,分区表

时间:2014-02-09 16:51:28

标签: linux memory hardware hard-drive units-of-measurement

我想了解一篇关于主引导记录的文章

我的问题在于第2位六位计算

它说:

  • 拥有64字节分区表
  • 64字节分区表有四个16字节条目

16字节的条目是这样的除法:

  • 1位:可启动
  • 3位:CHS(第一个扇区)
  • 1位:分区类型
  • 3位:CHS(最后一个扇区)
  • 4位:LBA(第一个扇区)
  • 4位:分区中的扇区数

我得到这64位的十六进制表示

[root@echidna ~]# dd if=/dev/sda bs=510 count=1 2>/dev/null|tail -c 64 |hexdump -C

输出:

00000000  80 01 01 00 07 fe ff ff  3f 00 00 00 98 66 b9 08  |........?....f..|
00000010  00 fe ff ff 83 fe ff ff  61 5c 39 09 21 c7 17 00  |........a\9.!...|
00000020  00 fe ff ff 05 fe ff ff  82 23 51 09 85 ab 68 66  |.........#Q...hf|
00000030  00 fe ff ff 82 fe ff ff  d7 66 b9 08 8a f5 7f 00  |.........f......|

......看起来我只是得到了我的4位16位...

看看第一个:

00000000  80 01 01 00 07 fe ff ff  3f 00 00 00 98 66 b9 08  |........?....f..|

第1:80

第2:01

bit 3:01

bit 4:00

等...

如果所有这些都是1位,那么值是多少 喜欢“fe”的第6个可以在那里。 “fe”的十进制表示为254,它的方式大于1位!

1 个答案:

答案 0 :(得分:1)

16字节的条目是:

  • 1 byte :可引导(可以是0x80或0x00)。
  • 3 字节:第一个扇区的CHS
  • 依此类推(它不是,但是字节

顺便说一句:由于旧的BIOS中断0x13参数,“Is bootable”(0x80或0x00)的值被选择为0x80。值0x80会使引导代码变小。

现在,您对硬盘中16个字节的解释是:

80            - Partition is bootable
01 01 00      - Partition starts at C=0, H=1, S=1 (*)
07            - Type is NTFS, OS/2 or exFAT
fe ff ff      - Partition ends at C=1023, H=63, S=254 (*)
3f 00 00 00   - Partition starts at LBA=0x3F
98 66 b9 08   - Partition is 0x8B96698 sectors long

(*)三个字节中的第一个是扇区号(1-255),最后一个字节是柱面号的低8位(0-1023)。中间字节包含低6位的头编号(0-63)和高2位的柱面编号的高2位。