您尚未登录。

#1 2017-11-17 14:08:15

shanpo
会员
注册时间: 2017-05-15
帖子: 11

mkinitcpio中base这个hooks的问题

wiki上说base这个hooks很重要,即使挂了systemd hooks也建议保留,因为它可以提供一个busybox shell,以便在根文件系统出问题时提供一个救援手段。

我有一台主机安装了archlinux做路由器,因此没接显示器和键盘。当我将根文件系统从ext4+lvm转换为btrfs,并且升级到4.14.0核心后出现了无法启动的问题,接上显示器可以正常启动。经过排查发现之前没有挂base hooks,于是去掉base hooks测试果然没问题了。由于问题出现在未接显示器且内存盘初始化内核期间,无法看到和保存消息,只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。

不知这算不算是mkinitcpio的一个BUG。

离线

#2 2017-11-17 14:32:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: mkinitcpio中base这个hooks的问题

只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。

应该不是,因为我的树莓派好好的,服务器也好好的啊。

你可以试试出问题之后接上显示器,看看发生了什么。

离线

#3 2017-11-19 22:16:46

shanpo
会员
注册时间: 2017-05-15
帖子: 11

Re: mkinitcpio中base这个hooks的问题

依云 说:

只能猜测是base hooks脚本如果未检测到显示器会启动busybox shell。

应该不是,因为我的树莓派好好的,服务器也好好的啊。

你可以试试出问题之后接上显示器,看看发生了什么。

接上显示器就能正常引导,也没有任何错误消息,拆掉显示器就卡住,ssh无法连接。把base hooks去掉重新mkinitcpio,接不接显示器都能正常启动;所以我才有此猜测。

离线

#4 2017-11-19 23:46:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: mkinitcpio中base这个hooks的问题

……我是让你引导完之后再接上显示器。
现在的人,理解能力怎么就这么差呢……

离线

#5 2017-11-20 21:29:30

shanpo
会员
注册时间: 2017-05-15
帖子: 11

Re: mkinitcpio中base这个hooks的问题

唉,确实没理解到,惭愧...

不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。

离线

#6 2017-11-20 22:26:06

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: mkinitcpio中base这个hooks的问题

shanpo 说:

唉,确实没理解到,惭愧...

不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。

这应该不是进 emergency shell 了吧。

离线

#7 2017-11-20 22:52:24

shanpo
会员
注册时间: 2017-05-15
帖子: 11

Re: mkinitcpio中base这个hooks的问题

刚刚又折腾了一会,差不多可以定位问题了,在这里记录一下吧。

把内核换到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内核时可能无意启用了这个选项。

离线

#8 2017-11-20 23:00:06

shanpo
会员
注册时间: 2017-05-15
帖子: 11

Re: mkinitcpio中base这个hooks的问题

依云 说:
shanpo 说:

唉,确实没理解到,惭愧...

不过,你说的方法我发帖之前也试过,可惜黑屏无显示,敲键盘也无用,必须按复位键重启才有信号。

这应该不是进 emergency shell 了吧。

接个串行终端才能看到错误消息,太麻烦了;不过我还是觉得i915 CAPTURE_ERROR触发了base hooks脚本进入emergency shell。反正是引导停止在内存盘初始化期间,还没有switch到根文件系统。

离线

#9 2017-11-21 12:08:20

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: mkinitcpio中base这个hooks的问题

你可以用 netconsole 来收日志。

离线

#10 2017-11-22 10:00:05

shanpo
会员
注册时间: 2017-05-15
帖子: 11

Re: mkinitcpio中base这个hooks的问题

依云 说:

你可以用 netconsole 来收日志。

按照你的建议,恶补了netconsole知识,配置好后却无法复现启动故障了!只能说之前所有判断都是错误的,现在很迷惑,难道是硬件问题?

以前不知道netconsole,捕获无显示器主机日志真好用,感谢你的帮助!

离线

页脚