systemd 允许在引导失败的情况下自动回退到旧内核

最近,systemd 推出了一项管理启动失败的新功能。 让我们在这个简短的报道中阅读它。

什么是systemd?

Systemd 是一个系统 守护进程 它用作 Linux 系统基本构建块的软件套件。 它有助于系统和服务管理并启动系统的其余部分。 根据 Unix/Linux 标准,它通常以小写字母表示为 systemd(系统守护进程)。

它是作为一个开发者项目开始的 2010年 作者:Lennart Poettering 和 Kay Sievers。 Fedora 成为自 2011 年 5 月以来第一个默认包含 systemd 的主要发行版。

包含 systemd 在资深 Linux 用户中引起了某种反抗。 像 Devuan 这样的发行版的创建只是为了让 systemd 远离。

我不会在这里讨论 systemd 与 init 的争论。 如果您了解技术细节,那完全是您的决定。 我将分享 systemd 的新功能以及我修复引导失败的经验。

启动计数:Systemd 的最新功能

正如这句话所暗示的,计数引导尝试是 systemd 的“自动引导评估”修订版的一部分,它允许跟踪内核引导和失败。

在此评估的帮助下,系统可以自动恢复到先前版本的操作系统/内核,以防较新的操作系统/内核因故障而拒绝成功启动。

systemd 的新自动启动评估的修订功能集可在 GitHub 文档. 如果您对技术细节感兴趣,可以阅读它。

开发者还建议,除了在 UEFI 系统上提供完整的解决方案外,不同的组件也可以单独与其他软件结合使用。

使用 systemd 诊断问题:我的经验

我对 systemd 的这个新功能感到兴奋。 这可以为 Linux 用户节省大量时间和麻烦。 在 systemd 引入此启动失败功能之前,我将分享我在启动问题方面的经验。

Systemd 过去曾帮助我诊断过我的双引导系统上的一个问题,我认为在这里分享经验会很有用,了解它的机智:

有一次,在尝试启动我的 Ubuntu 16.04 LTS 系统时,我从 GRUB 中选择相同的系统后收到以下错误消息:

我很震惊,为什么在忙碌了一天的工作后突然收到这样一条烦人的消息。 当我读到它提到我的一个 PC 硬盘 (/dev/sdb3) 时,我得到提示,它可能与 Windows 10 的休眠功能有关,而且事实上 Windows 10 上的关机尝试实际上是部分休眠以加快启动速度.

一得到这个提示,我就启动到 Windows 并通过按住 Shift 键然后从 Windows 启动菜单中单击关闭来完全关闭,之后我能够成功登录到 Ubuntu。 此后,我在 Windows 上禁用了“快速启动”和休眠。

当我在命令的帮助下查看日志时,回到 Ubuntu,我发现错误消息是 systemd 功能的一部分。 我使用以下命令将命令的完整输出存储在日志文件中:

journalctl -xb | tee systemdlogged.log

在查看日志文件时,我可以再次确认这确实是由于 Windows 10 上的部分休眠(无法创建会话:已经在会话中运行)。

爱它还是恨它?

正如您所看到的,这种新的自动回退到旧内核将为 Linux 用户节省一些麻烦。

这个想法可以在其他引导加载程序或非 UEFI 系统上实现类似的方案。 也许 systemd 将来也可以考虑与 LinuxBoot 一起使用?