在编译时禁用 systemD 服务

Disable systemD services at compile time

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

我一直把文件放在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 中不起作用,但是删除 link 可以禁用该服务(一旦我修复了 rm 命令)。我已经用最终版本更新了上面的 bbappend 文件。谢谢大家

请记住,我是 Yocto 菜鸟。

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

查看 pyro 分支上的 systemd_232.bb 和 systemd.inc 后,您的 SRC_URI 中的第一个 .patch 文件似乎无法应用 "missing file"。

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

中修补它

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