所以,我被赋予了将基于yocto的系统从fido升级到morty的任务。我对yocto的经验很少,我一直在努力解决这个问题并试图理解它近一个星期了。我已经设法修复了一些问题,但现在我在尝试构建映像时遇到了问题:
ERROR: basic-image-1.0-r0 do_rootfs: The following packages could not be configured offline and rootfs is read-only: ['component']
ERROR: basic-image-1.0-r0 do_rootfs: Function failed: do_rootfs
如果我禁用组件,基本图像构建得很好,并且它们都可以自行构建,即bb组件
我甚至不知道从哪里开始寻找解决方案。因此,如果您知道可能导致此问题的原因或从何处开始寻找解决方案,我们将不胜感激。 当然,我一直在浏览yocto手册,但有很多东西让我不知所措。
答案 0 :(得分:3)
嗯,"问题"源于您的图像中包含以下内容:
IMAGE_FEATURES += "read-only-rootfs"
这意味着在运行时没有任何东西可以修改rootfs,所有内容都必须离线完成,即在构建有问题的rootfs时。
您的原始问题component
(原始问题中的adcl
和cfgmgr
)包含以下代码段的安装后脚本:
pkg_postinst_${PN} () {
if test "x$D" != "x" then
# Need to run on first boot
exit 1
fi
}
(至少类似的东西,exit 1
)。
我的示例中的条件检查在创建rootfs期间是否正在运行pkg_postinst
脚本,如果是,则以1
退出退出状态。这意味着pkg_postinst
必须在目标系统上运行。但是,由于目标系统是read-only
,这将是不可能的,并且构建失败。
您必须检查pkg_postinst
脚本并重写它们,以便在rootfs创建期间能够运行它们。