【问题标题】:Yocto upgrade from fido to morty rootfs is read-only errorYocto 从 fido 升级到 morty rootfs 是只读错误
【发布时间】:2017-06-09 06:58:21
【问题描述】:

因此,我被赋予了将基于 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 手册,但是内容太多了,我只是被它淹没了。

【问题讨论】:

  • 下次,请不要在得到答案后通过重命名和删除内容来更改问题。
  • @Anders 好吧,抱歉,我只是想删除组件名称,因为这些可能被视为安全风险,在这个问题中并不重要。

标签: yocto


【解决方案1】:

嗯,“问题”源于您的图片中有以下内容:

IMAGE_FEATURES += "read-only-rootfs"

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

你的包componentadclcfgmgr在你原来的问题中)都有一个安装后脚本,包括以下sn-p:

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 创建期间运行。

【讨论】:

  • 您知道在 fido 和 morty 版本之间是否发生过一些值得一试的事情吗?像这样:yoctoproject.org/docs/2.2.1/ref-manual/…
  • 不,我不记得了。您可能需要向我们展示pkg_postinst 脚本,以便跟踪造成这种情况的原因。
  • 嗯,[ "x$D" != "x" ] && exit 1 正是我所说的测试。允许您删除测试的简单更改是确保所有路径都以$D/ 为前缀,例如/download 否则将引用您的构建机器。根据一些电子邮件,即使setcap 也应该能够在do_installpkg_postinst 期间运行。显然,您无法检查例如 /proc/swap... 希望这能给您一些提示。
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2020-12-08
  • 2019-11-19
  • 2018-02-07
  • 1970-01-01
  • 2018-06-28
  • 2018-06-26
  • 1970-01-01
相关资源
最近更新 更多