如何在搭载systemd的Yocto系统中将内核日志记录至/var/log/messages?
禁用/移除systemd-journald以恢复内核日志写入/var/log/messages
临时禁用(立即生效)
如果只是想临时停掉journald并阻止其开机自启,执行以下命令:
- 停止当前运行的journald服务:
systemctl stop systemd-journald - 禁止开机自动启动:
systemctl disable systemd-journald - 防止其他服务意外拉起journald,可将其mask:
systemctl mask systemd-journald
执行后klogd即可正常读取内核消息并转发给syslogd,日志会自动写入/var/log/messages。
永久从系统构建中移除(Yocto层面)
若要在Yocto构建镜像时彻底剔除systemd-journald,修改构建配置即可:
- 在
local.conf文件中添加:IMAGE_INSTALL:remove = "systemd-journald" - 若使用自定义镜像配方(.bb文件),直接删除配方中对
systemd-journald的依赖声明
这样构建出的镜像将完全不含journald相关文件与服务,从根源解决问题。
补充说明
systemd-journald默认会独占/dev/kmsg设备,导致klogd无法获取内核日志流。停止或移除journald后,klogd就能正常读取内核消息并传递给syslogd,最终写入/var/log/messages。
内容的提问来源于stack exchange,提问作者astrand
相关产品推荐
相关产品推荐

