在 Ubuntu 系统上无需重启即可应用 Linux 内核补丁
你是否希望能够自动将关键的 Linux 内核补丁应用到你的 Ubuntu 系统,而无需每次都重启电脑?本文将介绍如何利用 Canonical 的 Livepatch 服务来实现这一目标。
什么是 Livepatch 以及它的运作方式?
正如 Canonical 的 Dustin Kirkland 几年前所解释,Canonical Livepatch 采用了标准 Linux 内核内置的内核热补丁技术。 Livepatch 网站指出,包括 AT&T、思科和沃尔玛在内的多家大型企业都在使用这项技术。
Livepatch 服务个人用户可以在最多三台计算机上免费使用,这些计算机可以是“台式机、服务器、虚拟机或云实例”,正如 Kirkland 所说。对于需要更多系统的组织,可以通过购买 Ubuntu Advantage 订阅来实现。
内核补丁的必要性与不便
Linux 内核补丁是不可或缺的。在当今互联的世界中,保持系统安全和最新至关重要。然而,应用内核补丁通常需要重启计算机,这可能会很麻烦。 特别是当计算机正在向用户提供服务时,你需要与他们协调或协商,才能中断服务。 此外,如果你维护着多台 Ubuntu 机器,你可能需要逐一完成每台机器的更新。
Canonical Livepatch 服务旨在消除上述所有麻烦,让你的 Ubuntu 系统保持与关键内核补丁的同步。 它易于设置,无论是图形界面还是命令行,都能让你摆脱许多繁琐的工作。
任何能够减少维护工作、提高安全性和减少停机时间的服务都具有很强的吸引力,不是吗? 当然,但也有一些前提条件。
你需要使用长期支持 (LTS) 版本的 Ubuntu,例如 16.04 或 18.04。 最新的 LTS 版本是 18.04,我们这里将使用该版本。
你必须使用 64 位版本。
你的 Linux 内核版本必须是 4.4 或更高。
你需要有一个 Ubuntu One 帐户。 还记得它们吗? 如果你没有 Ubuntu One 帐户,可以免费注册一个。
你可以免费使用 Canonical Livepatch 服务,但每个 Ubuntu One 帐户只能用于三台计算机。 如果你维护的计算机超过三台,则需要额外的 Ubuntu One 帐户。
如果你有物理、虚拟或云托管的服务器需要维护,你需要成为 Ubuntu Advantage 客户。
获取 Ubuntu One 帐户
无论你打算使用图形用户界面 (GUI) 还是命令行界面 (CLI) 来设置 Livepatch 服务,你都需要一个 Ubuntu One 帐户。 因为 Livepatch 服务的运行依赖于颁发给你的私钥,并且该私钥与你的 Ubuntu One 帐户绑定。
如果你通过 GUI 设置 Livepatch 服务,你不会看到你的密钥。 它仍然是必需的,并且在使用,但这些都在后台处理。 如果你通过终端设置 Livepatch 服务,你需要从浏览器复制密钥并将其粘贴到命令行。
如果你没有 Ubuntu One 帐户,你可以免费创建一个。
通过图形界面启用 Canonical Livepatch 服务
要启动图形设置界面,请按“Super”键。 它通常位于键盘左下角的“Control”和“Alt”键之间。 然后搜索“livepatch”。
当你看到 Livepatch 图标时,点击它或按“Enter”。
此时会出现“软件和更新”对话框窗口,并选中了 Livepatch 标签。 点击“登录”按钮。 系统会提醒你需要一个 Ubuntu One 帐户。
点击“登录/注册”按钮。
这时会出现 Ubuntu 单点登录帐户对话框窗口。 Canonical 交替使用术语 “Ubuntu One” 和 “单点登录”。它们的含义相同。 “单点登录”这个正式名称已经逐渐被 “Ubuntu One” 所取代,但旧名称仍然保留。
输入你的帐户详细信息,然后点击“连接”按钮。 如果你还没有创建帐户,也可以在此对话框窗口中注册一个。
系统会提示你输入密码。
输入你的密码,然后点击“验证”按钮。 对话框窗口会显示与你要使用的 Ubuntu One 帐户关联的电子邮件地址。
确保电子邮件地址正确,然后点击“继续”按钮。
系统会再次要求你输入密码。 几秒钟后,“软件和更新”对话框窗口中的 Livepatch 标签将会更新,显示 Livepatch 已激活。
在通知区域中会显示一个新的盾牌图标,靠近网络、声音和电源图标。 绿色圆圈中的勾号表示一切正常。 点击该图标可以访问菜单。
消息显示 Livepatch 已启用,并且没有当前可用的更新。
“Livepatch 设置”选项将在 Livepatch 标签上打开“软件和更新”对话框窗口。
至此,你已完成所有设置。
使用 CLI 启用 Canonical Livepatch 服务
你需要一个 Ubuntu One 帐户。 如果你还没有,你将有机会创建一个。 它们是免费的,而且只需花费少量的时间。
我们需要执行的一些步骤是基于 Web 的,因此这并非完全纯粹的 CLI 方法。 我们首先访问 Canonical Livepatch 服务网页 以获取密钥或“令牌”。
选择 “Ubuntu User” 单选按钮,然后点击 “Get Your Livepatch Token” 按钮。
系统会提示你登录你的 Ubuntu One 帐户。
如果你有帐户,请输入你用于设置帐户的电子邮件地址,然后选择 “我有一个 Ubuntu One 帐户,我的密码是:” 单选按钮。
如果你没有帐户,请输入你的电子邮件地址并选择 “我没有 Ubuntu One 帐户” 单选按钮。 系统会引导你完成帐户创建过程。
验证你的 Ubuntu One 帐户后,你将看到 “托管实时内核修补” 网页,并且显示你的密钥。
保持带有密钥的网页打开,并打开一个终端窗口。 在终端窗口中使用以下命令来安装 Livepatch 服务守护程序:
sudo snap install canonical-livepatch
安装完成后,你需要启用该服务。 你需要来自 “托管实时内核修补” 网页的密钥。
你需要将密钥复制并粘贴到命令行。 高亮显示网页上的密钥,右键点击它,然后从上下文菜单中选择 “复制”。 或者你可以高亮显示密钥并按 “Ctrl+C”。
在终端窗口中输入以下命令,但不要按 “Enter”。
sudo canonical-livepatch enable
然后键入一个空格,然后右键点击并从上下文菜单中选择 “粘贴”。 或者你可以按 “Ctrl+Shift+V”。 你应该可以看到刚刚输入的命令,一个空格,以及网页上的密钥。
在用于研究本文的测试机器上,它看起来像这样:
按 “Enter”。
如果一切顺利,你将看到来自 Livepatch 的验证消息,告诉你计算机已启用内核补丁。 它还会显示另一个长密钥; 这是 “机器令牌”。
刚刚发生了什么:
你已从 Canonical 获取 Livepatch 密钥。
你可以在三台计算机上使用它。 到目前为止,你已经在其中一台计算机上使用了它。
使用你的密钥为这台计算机生成的机器令牌就是此消息中显示的机器令牌。
如果你检查“软件和更新”对话框窗口中的 Livepatch 标签,你会看到 Livepatch 已启用并处于活动状态。
检查 Livepatch 的状态
你可以使用以下命令让 Livepatch 为你提供状态报告:
sudo canonical-livepatch status
状态报告包括:
client-version
: Livepatch 的软件版本。architecture
: 计算机的 CPU 架构。cpu-model
: 计算机中中央处理器 (CPU) 的类型和型号。last-check
: Livepatch 上次检查是否有任何关键内核更新可供下载的时间和日期。boot-time
: 这台计算机上次启动的时间。uptime
: 这台计算机运行的时间。
状态块告诉我们:
kernel
: 当前内核的版本。running
: Livepatch 是否正在运行。checkstate
: Livepatch 是否检查过内核补丁。patchState
: 是否有需要安装的关键内核补丁。version
: 需要应用的内核补丁的版本(如果有)。fixes
: 内核补丁中包含的修复程序。
强制 Livepatch 立即更新
Livepatch 的意义在于提供托管更新服务,这意味着你无需考虑它。 一切都会自动为你完成。 但如果你愿意,可以使用以下命令强制 Livepatch 检查内核补丁(并应用任何找到的补丁):
sudo canonical-livepatch refresh
Livepatch 会告诉你刷新前后的内核版本。 在此示例中,没有可应用的更新。
减少摩擦,提高安全性
安全摩擦指的是与实施、使用或维护安全功能相关的麻烦或不便。 如果摩擦过高,安全性就会受到影响,因为该功能没有得到使用或维护。 Livepatch 消除了应用关键内核更新的所有障碍,尽可能地确保内核安全。
这是一个双赢的局面。