如何确切确定Systemd为什么进入紧急模式


10

我的运行Debian Jessie的台式计算机在每次启动时都进入紧急模式外壳。屏幕显示journalctl -xb用于查找原因,并systemctl default用于继续引导。当我执行时systemctl default,系统会继续启动,并且在使用系统几周后,没有任何明显的错误。

放眼望去journalctl -xb,没有任何事情成为跌落到紧急状态的原因。是否有一种简单的方法可以准确确定其决定进入紧急模式的原因?是否还有其他标志或启动选项可让您清楚地了解问题所在?


2
它应该在日记中可见,但是由于您提供的信息有限,因此无法指导您。您是否有发生时间的副本journalctl -xb
Julie Pelletier

3
以详细的日志记录模式启动以systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M获取法医级别的详细信息……
jasonwryan

2
现有日志应该已经为您提供了原因。有太多的原因很难猜测。
Giacomo Catenazzi

1
我在Ubuntu 16.04实例上遇到相同的问题。在过去的20年中,一直在安装,使用和修复许多Linux系统。屏幕上没有什么特别的,这次没有什么在日志中脱颖而出。屏幕上显示Ctrl-D继续启动,但是过一会儿才返回相同的提示。毫无头绪。令人沮丧,不是吗?
斯特凡纳·古里科

您是否尝试了调试systemd中 “诊断启动问题”部分中的所有步骤?
Siosm

Answers:


6

故障应该[ FAIL ]在控制台上显示为红色(而不是[ OK ]),并在其旁边显示该设备的说明。通常,第一个故障最重要。在控制台上使用shift + pageup可以向上滚动并查看过去几屏输出。如果输出太多,这可能不起作用。

即使您通常看不到[ OK ]消息(例如,由于quietDebian使用的内核命令行),也可以使用此方法。第一次失败时,systemd切换到详细模式。

否则,您可以使用systemctl。没有任何选项,它将显示大量已知单元,并以红色突出显示故障。要仅显示失败的内容,请使用systemctl --state=failedsystemctl --failed


如果您搜索单位文件,则只有很少几种方法可以使启动回退到emergency.target。通常是在.mount本地文件系统的某个单元发生故障而导致local-fs.target故障时。或者,如果initramfs使用systemd,则initramfs无法挂载根文件系统。

local-fs.targetOnFailure=emergency.target。由于本地文件系统的单元会自动添加到local-fs.target的Requires列表中(除非它们具有DefaultDependencies=no),因此它失败了。

$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount

2

偶尔我会遇到“维护模式”提示,并且我还必须滚动浏览日志记录以查找错误。由于journalctl使用较少的寻呼机,因此您应该能够将更少的快捷方式应用于搜索。

通常,我将依靠搜索功能(/)来搜索等同于“错误”,“警告”或“失败”的任何内容。并确保使用-i强制不区分大小写的搜索。

因此,我的击键趋向于如下所示:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)

从技术上讲,这并不是对确切问题的详尽或精确的搜索,但是我从未错过过这种引导问题。

以下是一些相关的较少的键盘快捷键:

http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for-effective-navigation/


我认为也应该可以快速浏览并查找红色消息(LOG_ERR及以上)。 systemd将记录红色消息以指示无法启动服务单元,或更重要的是无法挂载文件系统。
sourcejedi '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.