如何使用 DOS MBR 对 eMMC 进行分区并将分区对齐到 8 MiB

如何使用 DOS MBR 对 eMMC 进行分区并将分区对齐到 8 MiB

我的问题与另一个但不是重复的,所以请在标记为重复之前尝试理解。我无法发表评论另一个

另一个,我理解并同意这个答案。但是,由于 i.MX6UL 处理器的限制,我必须使用 DOS MBR 而不是 GPT。如何将扩展分区中的逻辑分区调整为 8 MiB?

一些带有数字的详细示例将不胜感激。我在 16 GiB eMMC 上有以下分区方案:

p1 primary 128 MiB
p2 primary 128 MiB
p3 primary  16 MiB
p4 extended
p5 logical 256 MiB
p6 logical 256 MiB
p7 logical 256 MiB
p8 logical whatever remains

我需要为 U-Boot 跳过前 4 MiB。为了对齐 8 MiB,我可以在偏移 8 MiB 或块号 16,384 处启动我的第一个主分区 p1。 p1、p2 和 p3 的计算非常简单。

但是,鉴于扩展分区在每个逻辑分区之前都包含一个 EBR,我不知道如何考虑这一点。 EBR 大小为 512 字节,但是,https://en.wikipedia.org/wiki/Extended_boot_record表示逻辑分区在 1-MiB 边界处对齐。

这是我到目前为止所得到的,但如果有人可以验证并解释这是否正确,我将不胜感激:

Partition    Start Block     End Block   Partition Type
---------    -----------     ---------   --------------
1                 16,384       278,527   primary
2                278,528       540,671   primary
3                540,672       573,439   primary
4                573,440    29,884,415   extended
5                589,824     1,114,111   logical
6              1,114,112     1,638,399   logical
7              1,638,400     2,146,303   logical
8              2,146,304    29,884,415   logical

答案1

毕竟我建议使用 GPT 而不是 MBR 分区。 GPT 分区处理起来要简单得多(没有扩展/逻辑混乱),并且您可以解决 i.MX6UL 引导 ROM 施加的限制。参考手册 (IMX6ULRM) 在表 8.25 中指出,图像向量表是从 eMMC 上的偏移量 1024 读取的。这正好适合在 IVT 之前保存 MBR 和 GPT 标头。通常,分区条目表遵循从 LBA 2 开始的 GPT 标头,但可以通过在标头中设置字段“分区条目数组的起始 LBA”(偏移量 72)来移动它。这样,您就可以在 GPT 标头和分区条目表之间为映像释放尽可能多的空间。要创建带有重定位分区条目表的 GPT,您可以使用sgdisk(使用该-j选项)。

相关内容