fdisk 的分区对齐问题

6月29号,我在制作 Bochs 磁盘镜像时遇到个不理解的地方,那就是磁盘扇区编号问题。

比如用fdisk命令给磁盘镜像分区后,第一分区是从第63号扇区开始的,按照 CHS 编号方式来看,这并不能产生分区对齐效果,因为扇区编号从1开始,那么第63扇区是本磁道最后一个扇区,这就很奇怪了,分区对齐应该是在对齐到一个磁道的开头才对,怎么对齐到末尾去了。还有用 losetup 命令挂载第一分区时,难道不是应该跳过 1-62 扇区吗,为什么正确的命令却是 losetup -o $((63*512)) /dev/loop0 hd.img,这不就跳过了63个扇区吗,跳多了。

Google 了一番之后我找到了这个问答:https://superuser.com/questions/352572/why-does-the-partition-start-on-sector-2048-instead-of-63/466186?newreg=692994d940e34813a91fdbdeb410b0ef#comment388140_352583

在它的评论里里提到了 fdisk 使用的是 LBA 编号方式,编号从 0 开始计算,所以第一分区是从 LBA=63开始的,也就是第64个扇区,转为 CHS 编号就是 0/1/1,恰好是一个磁道的第一个扇区,完美对齐。

当然,在上面说fdisk的第一分区对齐到 LBA=63 已经是过时的数据了,在 Fedora 25 上,第一分区默认对齐到了 LBA=2048,详情参见下面资料:

Show Comments