如何扩大Yocto构建的Raspberry Pi CM3+镜像根分区容量?
解决Yocto Dunfell构建RPi CM3+镜像根分区过小及烧录停滞问题
一、确认Yocto根分区配置是否生效
- 检查
local.conf中的参数设置,注意IMAGE_ROOTFS_SIZE单位是KB,比如要设置为2GB,需写:
直接指定IMAGE_ROOTFS_SIZE = "2097152" # 2*1024*1024 KB = 2GBIMAGE_ROOTFS_SIZE更直观,避免单独用IMAGE_ROOTFS_EXTRA_SPACE叠加计算出错。 - 构建时查看
bitbake输出日志,搜索rootfs size相关内容,确认是否采用了你设置的分区大小。 - 构建完成后,用
fdisk -l your-image.sdimg检查镜像内的分区信息,确认根分区(通常是第二个分区)的大小是否符合预期。如果还是173MB左右,说明配置未生效,需排查是否有其他层的配置文件覆盖了该参数。
二、解决balenaEtcher烧录停滞问题
- 验证镜像完整性:对比构建目录
tmp/deploy/images/raspberrypi-cm3/下的*.sdimg.sha256sum文件和本地镜像的校验值,确保镜像未损坏:sha256sum your-image.sdimg - 换用dd命令烧录:balenaEtcher有时会因缓存或设备兼容性问题停滞,改用dd命令更可靠:
# 先通过lsblk确认eMMC设备路径(如/dev/sdb) lsblk # 替换为你的镜像和设备路径执行烧录 sudo dd if=your-image.sdimg of=/dev/sdX bs=4M status=progress conv=fsync - 检查硬件连接:如果多次烧录失败,重新插拔eMMC模块或读卡器,用
fdisk /dev/sdX确认设备是否能正常识别,排除硬件连接问题。
三、备选方案:烧录后手动扩展根分区
如果构建镜像始终无法调整分区大小,可先烧录原镜像,再在RPi CM3+上手动扩展:
- 启动设备后,执行
fdisk /dev/mmcblk0修改分区表:- 输入
d删除原根分区(通常是分区2) - 输入
n创建新的主分区,起始扇区沿用原分区的起始位置,结束扇区选默认(占满剩余空间) - 输入
w保存分区表
- 输入
- 重启设备后,执行
resize2fs /dev/mmcblk0p2扩展文件系统 - 用
df -h确认根分区大小已扩展到16GB
内容的提问来源于stack exchange,提问作者dpcivl
相关产品推荐
相关产品推荐

