【问题标题】:Howto remove syslog completely from a yocto image based on systemd如何从基于 systemd 的 yocto 映像中完全删除 syslog
【发布时间】:2018-07-22 14:50:33
【问题描述】:

我想生成一个使用 systemd 作为唯一服务来控制我的系统日志的 Yocto 映像。所以我只想使用journalctl 工具,根本不想引用 syslog。

要设置 systemd 映像,我已将发行版设置为这样(如 Yocto 文档中所述):

DISTRO_FEATURES_append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_dev_manager = "systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = ""

但是,构建的镜像添加了一个名为sysklogd的rpm包,并且生成的镜像运行了一些syslog相关的systemctl服务:

- syslogd.service
- syslog.socket

我想在完全不参考 syslog 的情况下生成和映像。处理此问题的正确方法应该是什么?

提前感谢您! :)

【问题讨论】:

    标签: yocto systemd syslog


    【解决方案1】:

    添加

       VIRTUAL-RUNTIME_syslog = "" 
    

    在 .bb 或 .bbapend 文件中。这将删除 sysklogd 包。 参考文件 /meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb 定义为

    VIRTUAL-RUNTIME_syslog ?= "sysklogd"
    

    【讨论】:

    • 在我的配方图像中添加 VIRTUAL-RUNTIME_syslog = "" 后,重新生成的图像仍然是使用 sysklogd 包构建的。所以这个问题还没有解决。
    • 生成bitbake -e 看看VIRTUAL-RUNTIME_syslog的值..还是“sysklogd”吗
    • 它是 VIRTUAL-RUNTIME_syslog="",但是它使用 sysklogd 生成一个图像。没有任何意义...
    • 我找到了这个文件:/lib/systemd/system/busybox-syslog.service。看来我的图像正在使用busybox小程序作为系统日志服务......我试图完全删除busybox。希望有帮助。我会在那次测试后回来。
    【解决方案2】:

    最后我解决了我的问题。首先,我按照此链接中说明的信息从自定义图像中删除了“busybox”:

    Removing busybox completely from a Yocto generated image

    删除busybox后,定义此变量(如先前答案中所建议)按预期工作:

    VIRTUAL-RUNTIME_syslog = "" 
    

    现在生成的映像不包含对 syslog 或 sysklogd 的任何引用。非常感谢您的支持!! :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2014-01-09
      • 2023-04-01
      • 2018-12-19
      • 2019-10-19
      相关资源
      最近更新 更多