Yocto 从 fido 升级到 morty rootfs 是只读错误

Yocto upgrade from fido to morty rootfs is read-only error

因此,我接到了将基于 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 手册,但是有太多的东西让我不知所措。

嗯,"problem" 是因为您的图片中包含以下内容:

IMAGE_FEATURES += "read-only-rootfs"

这意味着在 运行 时间内没有任何东西可以修改 rootfs,一切都必须离线完成,即在构建有问题的 rootfs 时。

您的软件包 componentadclcfgmgr 在您原来的问题中),都有一个 post 安装脚本,包括以下片段:

pkg_postinst_${PN} () {
  if test "x$D" != "x" then
     # Need to run on first boot
     exit 1
  fi
}

(至少类似的东西,exit 1)。

我的示例中的条件检查 pkg_postinst 脚本在 rootfs 创建期间是否正在 运行,如果是,它以 1 作为退出状态退出。这意味着 pkg_postinst 必须 运行 存在于目标系统上。但是,由于目标系统是 read-only,这是不可能的,构建失败。

您必须检查 pkg_postinst 脚本,并重写它们,以便它们能够 运行 在 rootfs 创建期间。