在编译时禁用systemD服务

时间:2019-02-19 16:56:35

标签: embedded yocto systemd

我已经看过以下问题: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菜鸟。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

查看了pyro分支上的systemd_232.bb和systemd.inc之后,您的SRC_URI中的第一个.patch文件似乎无法应用“缺少文件”。

我认为这是因为您用$ {WORKDIR}覆盖了S,但是在systemd.inc中将其设置为“ $ {WORKDIR} / git”。因此,将systemd的git存储库克隆到$ {WORKDIR} / git中,然后尝试将其修补到$ {WORKDIR}中。

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