如何“取消屏蔽”bootlogd.service

如何“取消屏蔽”bootlogd.service

升级到Debian Stretch并且想要有启动日志,所以我发现我必须安装bootlogd服务。问题是它的状态是“屏蔽”并且在执行以下操作时:

sudo systemctl unmask bootlogd.service

没有显示错误,但是之后运行时:

sudo systemctl enable bootlogd.service

我收到此错误:

Synchronizing state of bootlogd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable bootlogd
Failed to enable unit: Unit file /lib/systemd/system/bootlogd.service is masked.

如何启用此服务以获取启动日志。

答案1

如何[...]获取启动日志。

journalctl -b

您将看到的消息也会由 rsyslog 复制到 /var/log/ 下的各个日志文件中。

默认情况下,Debian 设置为使用 rsyslog 进行持久日志记录。基于此默认值,journalctl只能显示最近的消息,这些消息由 临时存储journald

我通常建议为日志启用持久日志记录(如果您愿意,您仍然可以继续运行 rsyslog)。拥有journalctl可用的搜索功能非常有用,尤其是当更多软件开始记录到系统日志时。例如,您可以使用 询问上次启动的日志journalctl -b -1。您可以按如下方式启用持久日志:

mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald

--https://gist.github.com/JPvRiel/b7c185833da32631fa6ce65b40836887

启用 bootlogd.service 对您没有帮助

+ echo "(Booted up using systemd which doesn't write logs to system console. Please check 'journalctl -b' instead.)" > /var/log/boot

-- Debian Bug 报告日志#791907, 依恋0001-bootlogd-提及-it-won-t-do-anything-under-systemd.patch

以上并未给出完整的故事。 Systemd 不会向控制台写入任何消息在Debian的默认配置中quiet,其中系统使用内核命令行上的选项启动。此外,如果服务无法启动,它将打开控制台消息。我写了一些关于这个的细节这里


您遇到的 systemctl 错误消息/行为可能被认为是不幸的。如果有人记得跟进所应用的补丁

请注意,systemd 软件包需要删除 bootlogd.service 的掩码才能正常工作。

那么你的 systemctl 错误消息将会消失,并且/var/log/boot应该在启动时创建,仅包含前面引用的消息:-)。不过我建议不要这样做。使用的控制台重定向功能bootlogd也希望被使用plymouth,因此存在冲突。我不知道这场冲突会导致什么结果。我不会管它plymouth,因为在某些情况下可以依赖它,例如提示输入磁盘加密密码。

顺便说一句 plymouth 应该创建/var/log/boot.log,显示启动期间写入控制台的任何内容。至少这是它在 Fedora 和 Ubuntu 上使用的文件。 显然它在 Ubuntu 的某些版本中似乎并不完全可靠

顺便说一句,那种奇怪的内置掩码会生成您看到的错误消息,也是一种已被使用的机制以避免运行 systemd 在内部重新实现的 sysVinit 引导脚本。

相关内容