You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

向Raspberry Pi CM3的eMMC烧录Yocto镜像的分区疑问

关于Raspberry Pi CM3 eMMC镜像制作的分区疑问解答

嘿,这个问题问到点子上了——必须要为boot分区单独预留空间,而且你当前的命令流程存在不少误区,我来给你梳理清楚:

为什么必须单独划分boot分区?

Raspberry Pi的启动机制依赖独立的FAT32格式boot分区,这个分区要存放启动固件(bootcode.bin)、设备树文件(.dtb)、内核镜像(zImage/Image)以及启动配置文件(config.txt)等关键内容。如果把这些文件和rootfs混在一起,CM3根本无法识别启动。

你当前命令的问题分析

  • 你用dd bs=512 count=2880创建的镜像只有1.44MB,空间远远不够装下boot文件和rootfs
  • 直接对整个镜像做mkfs.msdos格式化,没有创建分区表,eMMC无法被Pi的固件识别
  • 直接复制所有部署目录的内容,会把rootfs的文件也丢到这个单一分区里,完全不符合Pi的启动要求

正确的镜像制作步骤

1. 创建足够大的空镜像文件

建议至少创建4GB的镜像(可根据你的rootfs大小调整):

dd if=/dev/zero of=raspberry-cm3.img bs=1G count=4

2. 给镜像创建分区表和分区

fdisk工具给镜像划分两个分区:

fdisk raspberry-cm3.img

执行以下操作:

  • 输入n创建新分区,选择p主分区,分区号1,起始扇区默认,结束扇区输入+256M(给boot分区分配256MB,足够用)
  • 输入t修改分区类型,选择分区1,输入c设置为W95 FAT32 (LBA)类型
  • 输入n创建第二个分区,选择p主分区,分区号2,起始扇区默认,结束扇区默认(占用剩余所有空间作为rootfs)
  • 输入w保存分区表并退出

3. 挂载分区并写入Yocto生成的内容

先把镜像关联到loop设备,方便操作分区:

losetup -P /dev/loop0 raspberry-cm3.img
处理boot分区
# 格式化boot分区为FAT32
mkfs.vfat /dev/loop0p1
# 创建挂载点
mkdir -p boot_mount
# 挂载分区
mount /dev/loop0p1 boot_mount
# 复制Yocto生成的boot相关文件(注意是部署目录里的boot子目录内容,不是所有文件)
cp -r tmp/deploy/images/raspberrypi-cm3/boot/* boot_mount/
# 卸载分区
umount boot_mount
处理rootfs分区
# 格式化rootfs分区为ext4
mkfs.ext4 /dev/loop0p2
# 创建挂载点
mkdir -p rootfs_mount
# 挂载分区
mount /dev/loop0p2 rootfs_mount
# 写入Yocto生成的rootfs镜像(替换成你实际的rootfs文件名)
dd if=tmp/deploy/images/raspberrypi-cm3/raspberrypi-cm3-core-image-base.rootfs.ext4 of=/dev/loop0p2
# 如果你的rootfs是tar包格式,用下面的命令解压:
# tar -xf tmp/deploy/images/raspberrypi-cm3/raspberrypi-cm3-core-image-base.rootfs.tar.gz -C rootfs_mount/
# 卸载分区
umount rootfs_mount
# 解除loop设备关联
losetup -d /dev/loop0

4. 烧录到eMMC

现在你就可以用dd或者balenaEtcher等工具把制作好的raspberry-cm3.img烧写到CM3的eMMC里了。

额外省心技巧:让Yocto直接生成可烧录镜像

其实Yocto本身支持直接生成带分区的可烧录镜像,不需要手动操作。在你的Yocto项目的conf/local.conf里添加:

IMAGE_FSTYPES = "ext4 wic.gz"

重新bitbake你的镜像后,会在tmp/deploy/images/raspberrypi-cm3/目录下生成.wic.gz格式的镜像,直接解压后就能烧录,完全避免手动分区的麻烦。

内容的提问来源于stack exchange,提问作者Asma Maaroufi

火山引擎 最新活动