linux emmc mbr 分区,eMMC烧录镜像分区信息剖析

eMMC和一般硬盘类似,分区信息位于 mmcblk0 的 0 扇区,内核不负责分区的创建,仅仅是读0扇区MBR及分区表即来获得分区信息。

这里讨论的是非GPT的分区问题

eMMC的镜像生成需要用到genimage工具,其需要改配置文件

具体可查阅官方 https://github.com/pengutronix/genimage

比如

genimage --rootpath "genimage/root" --tmppath "genimage/tmp" --inputpath "genimage/input" --outputpath "genimage/image" --config "genimage/gen.cfg"

它会根据gen.cfg中设置的分区信息来自动生成各分区镜像及总镜像

通过genimage生成了eMMC的镜像,再烧录到eMMC后,启动板子后却发现分区不对,分了8个区(包含一个扩展分区信息)加载后发现最后一个15G的分区识别不出来,

一开始感觉是是哪里出了BUG,导致不支持扩展分区上的逻辑分区大于3个,后面发现这个方向不对,因为用fdisk去看烧录的镜像,可以正确看到所有的分区都是在的

/sbin/fdisk -l ./sdcard.img

Disk ./sdcard.img:286 MiB,299895296 字节,585733 个扇区

单元:扇区 / 1 * 512 = 512 字节

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x00000000

设备          启动   起点     末尾     扇区  大小 Id 类型

./sdcard.img1 *         1    12288    12288    6M  c W95 FAT32 (LBA)

./sdcard.img2       12289   217088   204800  100M  0 空

./sdcard.img3 *    217089   237568    20480   10M  c W95 FAT32 (LBA)

./sdcard.img4      237569 33554431 33316863 15.9G  f W95 扩展 (LBA)

./sdcard.img5      237570   368641   131072   64M 83 Linux

./sdcard.img6      368643   380930    12288    6M  c W95 FAT32 (LBA)

./sdcard.img7      380932   585731   204800  100M  0 空

./sdcard.img8      585733 33554431 32968699 15.7G 83 Linux

总共16G的eMMC

可以看到第一行起点是1,代表扇区,0扇区就是

你可能感兴趣的:(linux,emmc,mbr,分区)