我一直在尝试使用 Yocto 为 imx6ull 构建 Linux 映像。我已经成功地构建了一个旧版本并使用 mfgtool 刷新了电路板。在 Linux Gatesgarth 分支中,我一直遇到 mfgtool 问题,所以我试图切换到 uuu。
uuu 脚本的第一部分如下;
uuu_version 1.2.39
# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f u-boot.imx
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f zImage
FB: ucmd setenv fastboot_buffer ${fdt_addr}
FB: download -f imx6ull-14x14-evk-gpmi-weim-imx6ull14x14evk.dtb
FB: ucmd setenv fastboot_buffer ${initrd_addr}
FB: download -f fsl-image-mfgtool-initramfs-imx6ull14x14evk.cpio.gz.u-boot
FB: ucmd setenv bootargs ${bootargs} ${mtdparts}
FB: acmd ${kboot} ${loadaddr} ${initrd_addr} ${fdt_addr}
FBK: ucmd cat /proc/mtd
FBK: ucmd cat /proc/mtd | while read dev size erase name; do mtd=${dev:3}; mtd=${mtd%:}; name=${name%\"}; name=${name#\"}; echo export $name=$mtd >> /tmp/mtd.sh; done;
此时设备给出“设备上没有剩余空间”错误。
run shell cmd: cat /proc/mtd | while read dev size erasesize name; do mtd=${dev:3}; mtd=${mtd%:}; name=${name%\"}; name=${name#\"}; echo export $name=$mtd >> /tmp/mtd.sh; done;
sh: line 0: echo: write error: No space left on device
我正在使用带有 512mb 闪存的裸映像进行测试,但似乎 rootfs 分区已满。
1:243>Start Cmd:FBK: ucmd echo "`df -h`"
Filesystem Size Used Avail Use% Mounted on
rootfs 31M 31M 0 100% /
none 31M 0 31M 0% /dev
我试图IMAGE_OVERHEAD_FACTOR = "1.5"
在 local.conf 中增加分区的大小,但错误仍然存在。
如何在 initramfs 中增加 rootfs 分区的大小,或者问题的原因是什么?
在内核 menuconfig 中将 cma size 设置为 0 解决了这个问题。配置行是
CONFIG_CMA_SIZE_MBYTES=0