给定一个MBR和MBR /分区表的结构,如何计算每个分区的大小和起始地址?
为了澄清,比方说,我给了这个 –

答案:MBR中显示了三个分区表条目。
- 重新标记Windows卷以重新创build所有共享
- 转换为禁用dynamic磁盘/选项
- Centos服务器迁移到更大的磁盘
- 添加额外的硬盘Debian Fdisk
- 使用/ dev / disk / by-path创build使用UDEV的永久驱动器标签
分区1:启动LBA地址:扇区63(十进制)。 如果使用hex表示,起始地址是0000003f。 大小:20482812部分(十进制)。 如果使用hex表示,大小为01388afc。
分区2:启动LBA地址:扇区20482875(十进制)。 如果使用hex表示,起始地址是01388b3b。 大小:20482875部分(十进制)。 如果使用hex表示,大小为01388b3b。
分区3:启动LBA地址:扇区40965750(十进制)。 如果使用hex表示,起始地址是02711676.大小:37142280扇区(十进制)。 如果使用hex表示,大小是0236bf08。
你如何得到这个答案?
取决于操作系统,系统和文件系统格式。
维基百科是关于这个主题的很好的资源: http : //en.wikipedia.org/wiki/Master_boot_record
开始按照布局。 分区表条目从000001BE …开始,具有16字节的分区logging…
跳过不那么重要的位…
第一个分区是NTFS(000001C3),从0000003f开始(查看从000001c6开始的little-endian中的4个字节),大小为01388acf(查看从00001ca开始的little-endian格式的4个字节)
如果你不能阅读维基百科页面并了解它……你可能不应该这样做,或者应该在课堂上学习更好。
我认为了解分区表的hex表示的最困难来自字节顺序问题 。 英特尔个人电脑基于little-endian架构,具有实际的颠倒字节顺序,用于多字节数字表示。 因此,像01388b3b这样的LBA扇区偏移号码被存储为3b8b 3801 – 这正好在你的MBR /分区表中从0x01dd开始。 这个数字之后重复的事实只是一个巧合 – 分区长度恰好等于分区的LBA偏移量。
分区从1be开始 (000001BE)
为了弄清楚哪里1be是第一个去偏移量(偏移量是第一列)0001b0。 现在在0001b0:以hex计数findE.例如,如果我们看0001b0:0000之后的第一组数字,我们将前两位数字(00)计数为0,然后第二个数字为1 …继续计数,直到达到E在8001(80是“E”)。 这是分区表的开始 – 它始终是16个字节,所以它终止于3801(或偏移行0001c0中倒数第二组数字)。
因此,如果我们看第一个分区(8001 – 3801)和8计数,我们结束在3f00(3f是“8”),结束是0000(最后两个00是“11”)。 所以整个LBA地址是3f00 0000,但是我们必须颠倒这个顺序,因为它是小尾数格式,我们需要hex。 所以要做到这一点,像这样的3f 00 00 00
00 00 00 3f < – “反转”
从分区信息的其余部分重复该过程 – 如果find全0,则停止。 注意:您不能有超过4个(主)分区。