开学之前研究了一下MBR的分区表,总结一下。
下面是我用 sudo fdisk -l 得到的硬盘信息。
Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xcd79e58a Device Boot Start End Blocks Id System /dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT /dev/sda2 206848 109068287 54430720 7 HPFS/NTFS/exFAT /dev/sda3 109072382 625141759 258034689 f W95 Ext'd (LBA) /dev/sda5 109072384 213927935 52427776 7 HPFS/NTFS/exFAT /dev/sda6 213929984 553836543 169953280 7 HPFS/NTFS/exFAT /dev/sda7 553838592 617836543 31998976 83 Linux /dev/sda8 617838592 625141759 3651584 82 Linux swap / Solaris
磁头,扇区,柱面数都知道了,这很好。
接着查看MBR的分区表, 从1beH到1feH是64个字节的分区表。
分区表含义请见: http://thestarman.pcministry.com/asm/mbr/PartTables.htm
0011 2233 4455 6677 8899 aabb ccdd eeff 000001b0: cd10 ac3c 0075 f4c3 8ae5 79cd 0000 8020 000001c0: 2100 07df 130c 0008 0000 0020 0300 00df 000001d0: 140c 07fe ffff 0028 0300 0018 7d06 00fe 000001e0: ffff 0ffe ffff fe4f 8006 0298 c21e 0000 000001f0: 0000 0000 0000 0000 0000 0000 0000 55aa
下面对这两个得到的结果进行分析。
第一个分区MBR显示
8020 2100 07df 130c 0008 0000 0020 0300
80H表示此分区是活动分区;
由202100H确定起始CHS: Head是 20H = 32, Sector是 100001b = 33, Cylinder是0。 起始扇区的LBA是 (0*255+32)*63+33-1 = 2048; (由CHS转换为LBA的公式:http://en.wikipedia.org/wiki/Logical_block_addressing)
07H是分区类型描述符, 是NTFS; (Partition Type: http://en.wikipedia.org/wiki/Partition_type)
由df130c确定结束CHS, Head是 dfH = 223, Sector是 010011b = 19, Cylinder是 0cH = 12, 结束扇区的LBA是 (12*255+223)*63+19-1 = 206847;
起始扇区也可以由 00000800H = 2048 得到;
第一个分区的大小是 00032000H = 204800 个扇区, 验算一下: 2048+204800-1 = 206847。
再对比fdisk得到的结果:
我没有查到fdisk的Start和End的具体含义, 但是对比一下结果我猜就是起始扇区的LBA和结束扇区的LBA, Blocks是1KB的block的数量, 为102400, Id就是分区类型描述符, 也是7, System一栏有NTFS。
看一下分区大小的不同算法:
204800 * 512B = 100MB
102400 * 1024B = 100MB
两次得到的结果一样。
第二个分区MBR显示
00df 140c 07fe ffff 0028 0300 0018 7d06
00H表示此分区不是活动分区;
由 df140cH 确定起始CHS: Head是 dfH = 223, Sector是 010100b = 20, Cylinder是 0cH = 12。 起始扇区的LBA是 (12*255+223)*63+20-1 = 206848;
07H是分区类型描述符, 是NTFS;
由 feffffH 确定不了结束CHS, 转向后面8个字节寻求帮助;
起始扇区也可以由 00032800H = 206848 得到;
第一个分区的大小是 067d1800H = 108861440 个扇区, 所以结束CHS的LBA是 206848 + 108861440 - 1 = 109068287。
再对比fdisk得到的结果:
Start和End都吻合, Blocks是 54430720, Id是7, System一栏有NTFS。
验算分区大小:
108861440 * 512B = 51.9GB
54430720 * 1024B = 51.9GB
两次得到的结果一样。
第三个分区MBR显示
00fe ffff 0ffe ffff fe4f 8006 0298 c21e
这也是一个不活动分区。
由 feffffH 确定不了起始CHS, 转向后面8个字节寻求帮助;
0fH是分区类型描述符, 是扩展分区;
由 feffffH 也确定不了结束CHS, 转向后面8个字节寻求帮助;
起始扇区LBA是 06804ffeH = 109072382, 大小是 1ec29802H = 516069378, 所以结束扇区的LBA是 109072382 + 516069378 - 1 = 625141759。
对比和fdisk的结果,
Start和End都吻合, Blocks是 258034689, Id是f, System一栏有W95 Ext'd (LBA)。
验算分区大小:
516069378 * 512B = 246.08GB
258034689 * 1024B = 246.08GB
两次得到的结果一样。