【问题标题】:Disable systemD services at compile time在编译时禁用 systemD 服务
【发布时间】:2019-07-13 06:09:20
【问题描述】:

我查看了这个问题:Disable a standard systemd service in Yocto build 并尝试使用 systemd_%.bbappend 文件实施解决方案,但它似乎不起作用。我正在尝试删除(首选)或至少禁用两项服务,NTP 服务和 Getty 服务。我在带有 i.MX6 目标的 4.14.16 内核上运行 Yocto (Pyro)。

我已将文件放入 poky/meta-markem-imaje-bsp/recipes-core/systemd/。它需要在其他地方吗?

这是我文件的内容:

DESCRIPTION = "Customization of systemD services."

do_install_append() {
    rm ${D}${sysconfdir}/systemd/system/getty.target.wants/getty@tty1.service
}

PACKAGECONFIG_remove = "timesyncd"

FILES_${PN} += "${sysconfdir}/systemd/system"

REQUIRED_DISTRO_FEATURES= "systemd"

更新 - 我将 bb_append 修复为 bbappend,它不再编译。我看到了这个:

更新 2 - 文件正在运行。出于某种原因,将 getty 放入 PACKAGECONFIG_remove 不起作用,但是删除链接可以禁用该服务(一旦我修复了 rm 命令)。我已经用最终版本更新了上面的 bbappend 文件。谢谢大家。

请记住,我是 Yocto 菜鸟。

【问题讨论】:

  • 我不确定我是否理解您的意思:您是要禁用这两个服务还是完全从映像中删除软件包?
  • 两者都可以。删除是首选,但如果禁用它们更容易,我可以这样做;我没有绑定 rootFS 空间。

标签: embedded yocto systemd


【解决方案1】:

在查看了 pyro 分支上的 systemd_232.bb 和 systemd.inc 之后,看起来您的 SRC_URI 中的第一个 .patch 文件未能应用“缺少文件”。

我认为这是因为你用 ${WORKDIR} 覆盖了 S,但在 systemd.inc 中它被设置为“${WORKDIR}/git”。因此 systemd 的 git 存储库被克隆到 ${WORKDIR}/git 并且您尝试在 ${WORKDIR} 中对其进行修补。

从您的 .bbappend 文件中删除 S=${WORKDIR} 应该可以解决问题。

【讨论】:

    【解决方案2】:

    它是.bbappend,而不是.bb_append。也许这已经足够了。如果您的附加显示在bitbake-layers show-appends 中,您可以检查它是否被应用。如果它在此处列出,您可以使用bitbake -e systemd | less 检查其效果。调用 less 是可选的,但很方便 :)

    【讨论】:

    • 这至少是问题的一部分。我已经更新了帖子;它不再编译。
    猜你喜欢
    • 2021-07-31
    • 2015-08-23
    • 2014-03-03
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2023-03-25
    相关资源
    最近更新 更多