安全启动在 Windows 8 和 10 上的工作原理,以及它对 Linux 的意义
已发表: 2022-01-29现代 PC 附带了一项名为“安全启动”的功能。 这是 UEFI 中的一个平台功能,它取代了传统的 PC BIOS。 如果 PC 制造商想要在他们的 PC 上贴上“Windows 10”或“Windows 8”标志贴纸,微软要求他们启用安全启动并遵循一些准则。
不幸的是,它还会阻止您安装一些 Linux 发行版,这可能会很麻烦。
安全启动如何保护您 PC 的启动过程
安全启动不仅仅是为了让运行 Linux 变得更加困难。 启用安全启动具有真正的安全优势,甚至 Linux 用户也可以从中受益。
传统的 BIOS 将启动任何软件。 当您启动 PC 时,它会根据您配置的启动顺序检查硬件设备,并尝试从它们启动。 典型的 PC 通常会找到并启动 Windows 启动加载程序,该加载程序会继续启动完整的 Windows 操作系统。 如果您使用 Linux,BIOS 将找到并引导大多数 Linux 发行版使用的 GRUB 引导加载程序。
但是,恶意软件(例如 rootkit)可能会替换您的引导加载程序。 rootkit 可以加载您的正常操作系统而没有任何迹象表明有任何问题,在您的系统上完全不可见且无法检测到。 BIOS 不知道恶意软件和受信任的引导加载程序之间的区别——它只会引导它找到的任何东西。
安全启动旨在阻止这种情况。 Windows 8 和 10 电脑附带存储在 UEFI 中的 Microsoft 证书。 UEFI 将在启动之前检查引导加载程序并确保它已由 Microsoft 签名。 如果 rootkit 或其他恶意软件确实替换了您的引导加载程序或篡改了它,UEFI 将不允许它启动。 这可以防止恶意软件劫持您的启动过程并将自己隐藏在您的操作系统中。
微软如何允许 Linux 发行版通过安全启动启动
从理论上讲,此功能只是为了防止恶意软件而设计的。 所以微软提供了一种方法来帮助 Linux 发行版无论如何启动。 这就是为什么一些现代 Linux 发行版(如 Ubuntu 和 Fedora)将在现代 PC 上“正常工作”,即使启用了安全启动。 Linux 发行版可以一次性支付 99 美元的费用来访问 Microsoft Sysdev 门户,在那里他们可以申请签署他们的引导加载程序。
Linux 发行版通常有一个“shim”签名。 shim 是一个小型引导加载程序,它可以简单地引导 Linux 发行版的主 GRUB 引导加载程序。 Microsoft 签名的 shim 检查以确保它正在引导由 Linux 发行版签名的引导加载程序,然后 Linux 发行版正常启动。
Ubuntu、Fedora、Red Hat Enterprise Linux 和 openSUSE 目前支持安全启动,并且无需对现代硬件进行任何调整即可工作。 可能还有其他人,但这些是我们所知道的。 一些 Linux 发行版在哲学上反对申请微软签名。
如何禁用或控制安全启动
如果这就是 Secure Boot 所做的一切,您将无法在您的 PC 上运行任何未经 Microsoft 批准的操作系统。 但是您可以通过 PC 的 UEFI 固件控制安全启动,这与旧 PC 中的 BIOS 类似。
有两种方法可以控制安全启动。 最简单的方法是前往 UEFI 固件并完全禁用它。 UEFI 固件不会检查以确保您正在运行签名的引导加载程序,并且任何东西都会引导。 您可以启动任何 Linux 发行版,甚至可以安装不支持安全启动的 Windows 7。 Windows 8 和 10 可以正常工作,您将失去安全启动保护您的启动过程的安全优势。

您还可以进一步自定义安全启动。 您可以控制 Secure Boot 提供哪些签名证书。 您可以自由安装新证书和删除现有证书。 例如,在其 PC 上运行 Linux 的组织可以选择删除 Microsoft 的证书并在其位置安装组织自己的证书。 然后,这些 PC 将仅启动由该特定组织批准和签名的引导加载程序。
个人也可以这样做——您可以签署自己的 Linux 引导加载程序,并确保您的 PC 只能引导您亲自编译和签名的引导加载程序。 这就是 Secure Boot 提供的控制和能力。
微软对 PC 制造商的要求
如果 PC 供应商想要在他们的 PC 上贴上漂亮的“Windows 10”或“Windows 8”认证标签,微软不仅要求他们启用安全启动。 Microsoft 要求 PC 制造商以特定方式实施它。
对于 Windows 8 PC,制造商必须为您提供关闭安全启动的方法。 微软要求 PC 制造商将安全启动终止开关置于用户手中。
对于 Windows 10 PC,这不再是强制性的。 PC 制造商可以选择启用安全启动,而不是为用户提供关闭它的方法。 但是,我们实际上并不知道有任何 PC 制造商这样做。
同样,虽然 PC 制造商必须包含 Microsoft 的主要“Microsoft Windows Production PCA”密钥才能启动 Windows,但他们不必包含“Microsoft Corporation UEFI CA”密钥。 仅推荐使用第二个密钥。 这是 Microsoft 用来签署 Linux 引导加载程序的第二个可选密钥。 Ubuntu 的文档解释了这一点。
换句话说,并不是所有的 PC 都必须在安全启动开启的情况下启动签名的 Linux 发行版。 同样,在实践中,我们还没有看到任何 PC 做到了这一点。 也许没有 PC 制造商愿意制造唯一一款无法安装 Linux 的笔记本电脑。
至少就目前而言,主流 Windows PC 应该允许您根据需要禁用安全启动,并且即使您不禁用安全启动,它们也应该启动已由 Microsoft 签名的 Linux 发行版。
无法在 Windows RT 上禁用安全启动,但 Windows RT 已死
相关:什么是 Windows RT,它与 Windows 8 有何不同?
以上所有情况都适用于标准 Intel x86 硬件上的标准 Windows 8 和 10 操作系统。 对于 ARM,情况有所不同。
在 Windows RT(Microsoft 的 Surface RT 和 Surface 2 以及其他设备上提供的适用于 ARM 硬件的 Windows 8 版本)上,无法禁用安全启动。 如今,仍然无法在 Windows 10 移动版硬件上禁用安全启动,即运行 Windows 10 的手机。
这是因为微软希望您将基于 ARM 的 Windows RT 系统视为“设备”,而不是 PC。 正如微软告诉 Mozilla 的那样,Windows RT “不再是 Windows”。
但是,Windows RT 现在已经死了。 没有适用于 ARM 硬件的 Windows 10 桌面操作系统版本,因此您不必再担心这一点。 但是,如果 Microsoft 确实恢复了 Windows RT 10 硬件,您可能无法在其上禁用安全启动。
图片来源:大使基地,约翰布里斯托