笔者在自己的惠普笔记本上安装了采用KDE的Debian,配备了官方的4.19.5内核。后来我又从Linux内核官网上下载了最新的5.2.8版本内核,自己编译安装。
直到某一天,我例行进行sudo apt upgrade大更新,更新过程中官方的内核和ramdisk也一并更新了。结果这次更新完毕重启,出现了以下问题:
5.2.8内核始终无法正常进入登录界面,一直卡在Debian的启动画面处,按方向键切换到日志画面可以看到,日志也卡在某处不动了。
再过一段时间,日志里就会显示Accounts Service等多个系统关键服务均启动失败。
然而,使用官方内核启动,却一切正常。这到底是什么原因呢?
启动时显示内核日志来排查故障
要想分析问题,首先还是要从内核日志入手。内核日志相当于系统的“黑匣子”,一般启动过程中的故障会在内核日志中得到反映。默认地,内核日志会在系统启动时直接输出到屏幕上,这一点可以在运行Linux发行版的安装或rescue程序中体会得到。不过,绝大多数Linux发行版会在正式启动时把内核日志隐藏。
为了便于调试,需要临时更改Grub2的菜单项,来重新把内核日志显示出来。启动时,在Debian的默认启动项上按e键编辑,显示菜单项的源码,然后把源码中的两个参数“quiet”和“splash”删掉,按F10启动系统。
被删掉的两个参数作用如下:
参数名
作用
quiet
启动时隐藏内核日志输出(但不会隐藏systemd等系统服务的输出)
splash
启用启动画