我需要开始自己的systemd
服务,让我们称之为custom.service
。我知道如何编写一个配方,以便在启动时添加和启用它:
SYSTEMD_SERVICE_${PN} = "custom.service"
SYSTEMD_AUTO_ENABLE_${PN} = "enable"
但是,它与其中一项默认systemd
服务 - systemd-timesyncd.service
冲突。
是否有一种不错的首选方法可以在我的bitbake文件中禁用该默认systemd
服务,即使systemd_XX.bb
实际启用了它?
我可以创建一个systemd_%.bbappend
文件来修改systemd
设置,但我无法找到可以禁用其他服务的地方,而其他所有服务都已启用。
我找到的工作解决方案是使用
完全删除timesyncd
PACKAGECONFIG_remove = "timesyncd"
但我想知道这是否是一种合适的方式,如果有办法只是禁用它,但留在系统中。
答案 0 :(得分:3)
如果系统运行正常并删除了其他软件包,则删除软件包 是首选解决方案。更少的包装意味着更简单的系统。
答案 1 :(得分:3)
如何为要禁用的冲突服务添加.bbappend配方。在其中,您将添加:
SYSTEMD_AUTO_ENABLE_${PN} = "disable"
答案 2 :(得分:1)
通常你会设置SYSTEMD_AUTO_ENABLE _ $ {PN} ="禁用"这将使服务成为图像的一部分,但在启动时禁用。但是对于提供大量默认服务单元的systemd,这可能不是您可能想要部署的解决方案。您可以手术删除etc中的符号链接,这将确保服务不会在启动时自动启动,但.service文件仍然是图像的一部分。因此,在图层
中添加以下systemd _%。bbappend文件do_install_append() {
rm -rf ${D}${sysconfdir}/systemd/system/sysinit.target.wants/systemd-timesyncd.service
}
还有其他方法可以禁用此功能,例如使用here
所述的systemd预设答案 3 :(得分:-1)
我认为执行此操作的“官方”方法是在项目中的某个位置使用此类内容:
PACKAGECONFIG_append_pn-systemd = "--disable-timesyncd"
这与您已经建议的基本相同。要简单地不启用该服务,您必须手动执行该操作,因为您只能修改每个配方的自动启用。