You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建移远SC20镜像时RECOVERYFS_EXT4空间不足报错如何解决

问题根因

你当前遇到的是recovery分区的ext4镜像构建时空间不足报错,日志明确提示ext4_allocate_best_fit_partial: failed to allocate 74 blocks, out of space?,当前配置的RECOVERYFS_SIZE_EXT4为268435456字节(即256MB),无法容纳当前配置的recovery镜像所有内容。

解决方案

方案1:调整recovery分区大小(最快捷)

如果你的设备分区表支持调整recovery分区容量,直接修改配置值即可:

  • 计算需要增加的容量:当前缺少74个4KB的块,合计约300KB,保守可将分区大小调整为320MB(对应数值为335544320),或者288MB(对应数值为301989888)
  • 优先在自定义层的机器配置文件、或者构建目录下的conf/local.conf中添加如下配置,覆盖默认值,避免修改原厂BSP配置导致后续升级冲突:
RECOVERYFS_SIZE_EXT4 = "335544320"
  • 重新构建对应任务即可,无需全量编译:
bitbake machine-recovery-image -c cleansstate && bitbake machine-recovery-image

注意:调整完分区大小后,需要同步修改bootloader中对应的recovery分区表配置,否则镜像刷入设备后会启动异常。

方案2:裁剪recovery镜像内容(分区表不可修改时使用)

如果量产设备的分区表固定无法调整,可裁剪recovery镜像不必要的内容缩小体积:

  • 先查看当前recovery根文件系统的实际大小和占用分布:
du -sh /opt/poky/build/tmp-glibc/work/msm8909-oe-linux-gnueabi/machine-recovery-image/1.0-r0/rootfs
du -h --max-depth=1 /opt/poky/build/tmp-glibc/work/msm8909-oe-linux-gnueabi/machine-recovery-image/1.0-r0/rootfs
  • 移除recovery模式不需要的安装包:在machine-recovery-image对应的bbappend文件中删除冗余包,例如调试工具、额外字体、非必要外设驱动等:
IMAGE_INSTALL:remove = "strace gdb perf font-* wifi-firmware bluetooth-firmware"
  • 增加镜像压缩策略:已开启稀疏镜像(make_ext4fs的-s参数)的前提下,可额外开启内核模块压缩、删除无用的locale文件、精简selinux策略规则等,通过ROOTFS_POSTPROCESS_COMMAND实现自动裁剪。

内容的提问来源于stack exchange,提问作者Andres Esteban Puerto Lara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:57:01