Yocto从fido升级到morty rootfs是只读错误
因此,我的任务是将基于yocto的系统从fido升级到morty。我对yocto几乎没有什么经验,我已经和它斗争了将近一个星期,试图理解它。我已经设法解决了一些问题,但现在我在尝试构建映像时遇到了一个问题:Yocto从fido升级到morty rootfs是只读错误,yocto,Yocto,因此,我的任务是将基于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-im
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手册,但是有太多的东西让我不知所措。嗯,“问题”源于这样一个事实,即您的图像中有以下内容:
IMAGE_FEATURES += "read-only-rootfs"
这意味着在运行时,任何东西都不能修改rootfs,一切都必须离线完成,也就是说,在构建有问题的rootfs时
您的软件包组件(adcl
和cfgmgr
在您的原始问题中),都有一个安装后脚本,包括以下代码片段:
pkg_postinst_${PN} () {
if test "x$D" != "x" then
# Need to run on first boot
exit 1
fi
}
(至少与此类似,即退出1)
我的示例中的条件检查pkg_postinst
脚本是否在rootfs创建期间运行,如果是,它将以1
作为退出状态退出。这意味着必须在目标系统上实时运行pkg_postinst
。但是,由于目标系统是只读的,这是不可能的,并且构建失败
您必须检查pkg_postinst
脚本,并重写它们,以便它们能够在rootfs创建期间运行。您知道fido和morty版本之间是否发生了值得检查的事情吗?像这样:不,我不记得了。您可能需要向我们展示pkg\u postinst
脚本,以便跟踪导致此问题的原因。好吧,[“x$D”!=“x”]&&exit 1
正是我所说的测试。允许您删除测试的简单更改是确保所有路径都以$D/
作为前缀,例如/download
,否则将引用您的生成机器。根据一些电子邮件,即使是setcap
也应该能够在do\u install
或pkg\u postinst
期间运行。显然,您不能检查eg/proc/swap
。。。希望这能给你一些提示。下一次,在你得到答案后,请不要通过重命名和删除东西来更改问题。@Anders好吧,很抱歉,我只是想删除组件名称,因为这些名称可能会被视为安全风险,在这个问题上并不重要。