页次: 1
wiki上说base这个hooks很重要,即使挂了systemd hooks也建议保留,因为它可以提供一个busybox shell,以便在根文件系统出问题时提供一个救援手段。
我有一台主机安装了archlinux做路由器,因此没接显示器和键盘。当我将根文件系统从ext4+lvm转换为btrfs,并且升级到4.14.0核心后出现了无法启动的问题,接上显示器可以正常启动。经过排查发现之前没有挂base hooks,于是去掉base hooks测试果然没问题了。由于问题出现在未接显示器且内存盘初始化内核期间,无法看到和保存消息,只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。
不知这算不算是mkinitcpio的一个BUG。
离线
只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。
应该不是,因为我的树莓派好好的,服务器也好好的啊。
你可以试试出问题之后接上显示器,看看发生了什么。
在线
只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。
应该不是,因为我的树莓派好好的,服务器也好好的啊。
你可以试试出问题之后接上显示器,看看发生了什么。
接上显示器就能正常引导,也没有任何错误消息,拆掉显示器就卡住,ssh无法连接。把base hooks去掉重新mkinitcpio,接不接显示器都能正常启动;所以我才有此猜测。
离线
……我是让你引导完之后再接上显示器。
现在的人,理解能力怎么就这么差呢……
在线
唉,确实没理解到,惭愧...
不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。
离线
唉,确实没理解到,惭愧...
不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。
这应该不是进 emergency shell 了吧。
在线
刚刚又折腾了一会,差不多可以定位问题了,在这里记录一下吧。
把内核换到4.9.63,挂上base hooks也不会出现问题。于是跟4.14内核i915驱动配置比较了一下,发现增加了一项配置:
CONFIG_DRM_I915_CAPTURE_ERROR
此选项说明:
This option enables capturing the GPU state when a hang is detected.
This information is vital for triaging hangs and assists in debugging.
Please report any hang to https://bugs.freedesktop.org/enter_bug.cgi?product=DRI for triaging.
取消该选项重新编译内核,挂上base hooks,无显示器也可正常启动了。
官方4.13内核i915驱动也有此选项,但默认不启用,我在升级4.14内核时可能无意启用了这个选项。
离线
shanpo 说:唉,确实没理解到,惭愧...
不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。
这应该不是进 emergency shell 了吧。
接个串行终端才能看到错误消息,太麻烦了;不过我还是觉得i915 CAPTURE_ERROR触发了base hooks脚本进入emergency shell。反正是引导停止在内存盘初始化期间,还没有switch到根文件系统。
离线
你可以用 netconsole 来收日志。
在线
你可以用 netconsole 来收日志。
按照你的建议,恶补了netconsole知识,配置好后却无法复现启动故障了!只能说之前所有判断都是错误的,现在很迷惑,难道是硬件问题?
以前不知道netconsole,捕获无显示器主机日志真好用,感谢你的帮助!
离线
页次: 1