从启动失败中恢复
计算机正常启动失败可能会非常令人不安!这里是一些恢复机制:
回滚到旧版本的操作系统 (OS)
如果启动故障发生在系统更新后,回滚到旧版本一般会修复它。
若您要这么做:
- 将机器开机,或重启机器。
- 按住 Space 直到 OS 版本选择器出现 (黑色背景中白色文字)
- 按↓键来选择前一个或一个不同操作系统版本。
- 按 Enter 来启动它。
如果此操作修复了问题,请在 https://invent.kde.org/kde-linux/kde-linux/-/issues/ 报告问题,并附上在终端窗口中运行 journalctl --boot -1 --no-pager 的输出内容。
更改内核命令行,以不同方式启动系统
若之前方法不奏效,您可以通过更改内核命令行参数来更改系统启动方式,以实现多种调试方法。
若您要编辑内核命令行:
- 将机器开机,或重启机器。
- 按住 Space 直到 OS 版本选择器出现 (黑色背景中白色文字)
- 在 OS 版本选择器中,按 e 键。
- 将出现一段有着很长的文本的文本字段;这便是内核命令行。
禁用 systemd 扩展
向内核命令行添加 systemd.mask=systemd-sysext.service ,然后按 Enter 。
若您有任何活动的 systemd 扩展且启动失败发生在您更新扩展内容后,禁用扩展可能是有用的:扩展出错可能就是启动失败的原因。在您确定扩展哪出了问题之前,暂时禁用扩展应该能解决问题。
若此方法奏效,请在登入您的系统后找出扩展中的错误,并修复错误。若您没有这个能力,就禁用这个扩展吧。
绕过登录屏幕或 Plasma 故障
向内核命令行添加 systemd.unit=multi-user.target ,然后按下 Enter。
若登录屏幕或 Plasma 启动失败或循环崩溃,这将会有用;您可以启动到一个命令行环境,无需通过这两者。在此命令行环境中,您得以调试。
若调试与故障排除显示问题并非您自己的操作所致,请打开一个 KDE Linux 团队的问题报告 来调查。
进入紧急 Root shell
- 向内核命令行添加
systemd.debug_shell=on SYSTEMD_SULOGIN_FORCE=1,然后按下 Enter 。 - 等待屏幕转为黑色并保持几秒钟。
- 按 Ctrl+Alt+F9 (注:在笔记本电脑上, 您可能还需要按住 Fn ) 。
您现在在 紧急 root shell 中。您所运行的每个命令都以 root 身份执行,所以小心。
若调试与故障排除显示问题并非您自己的操作所致,请打开一个 KDE Linux 团队的问题报告 来调查。
回滚 /etc
当启动到某个特定的构建可能修改 /etc ,使其与旧的构建不兼容。
这可能会在回滚操作系统后显示为诡异的问题,例如黑屏,或登录密码不被接受。
要恢复,请用旧版替换损坏的 /etc ,请做如下操作:
- 通过上述任何一种方法获取一个 shell 并运行以下命令:
sudo mv /etc /etc.brokensudo btrfs subvolume snapshot $(ls -d -1 /.etc.* | tail -2 | head -1) /etcsystemctl reboot
当 https://invent.kde.org/kde-linux/kde-linux/-/issues/505 解决后,以上手动步骤应该会变为非必要的。
更多信息
查看 https://systemd.io/DEBUGING 获取更多调试选项。KDE Linux 完全使用 systemd ,因此该页面上的一切都与此相关。
文章作者:Nate Graham,使用 CC-BY-4.0 许可证发布。