如何防止微软 Windows 在 PC 上运行

如何防止微软 Windows 在 PC 上运行

建议我有一台带有常用选项的 BIOS 或 UEFI 的 PC。有没有办法更改设置,这样基于 Windows NT 的系统将不再启动(甚至包括 Windows 安装 DVD 的 Windows PE 也无法启动)。这应该可以在不影响 GNU/Linux live cd 或已安装的 GNU/Linux 系统的情况下实现。

谢谢您的回答。

附言:这是一个理想主义的问题,我希望这不是题外话。

PPS:我不想这样做,这只是一个概念证明问题。

答案1

为了详细说明 FSMaxB 提出的选项 #1,我编写了一个页面,其中包含(大部分)有关更换安全启动密钥的分步说明这里。但请注意,固件自身用户界面中的某些选择细节将特定于系统。还有其他方法可以实现此目标。添加新键(如下所述)将需要该页面上未记录的步骤。

这种方法可以限制计算机可以启动的内容,但就 FSMaxB 的要求而言,它有点过分了。具体来说,它不仅阻止 Windows 启动,而且还阻止大多数 Linux Live CD 启动。我可以想出许多方法来尽量减少这个问题,但其中一些方法很笨拙,而且大多数方法只适用于启用了安全启动的发行版:

  • 将发行版的公钥添加到计算机中的安全启动密钥,并调整其启动过程以绕过 shim 并直接启动 GRUB 或其他引导加载程序。但这需要更改实时 CD 上的文件,这对于不懂技术的最终用户来说是一项繁琐的任务。
  • 放置一份重新索引在硬盘上。这应该能够将启动过程重定向到实时 CD 上的 GRUB,绕过其 shim 副本。理论上,这应该适用于使用 shim 的任何产品,前提是发行版的密钥位于您创建的安全启动密钥列表中。
  • 将 rEFInd 的副本放在硬盘上,通过 Linux 基金会的预引导加载程序。这将使用户能够将任何引导加载程序的哈希值添加到固件中,使他们能够启动任何版本的 Linux,即使其引导加载程序和内核未签名。这可能也使他们能够启动 Windows,但至少他们必须明确批准此操作。
  • 将 rEFInd 的副本放在硬盘上,通过 shim 启动。这比基本设置没有任何优势,只是它使用户更容易添加密钥(通过 shim 的 MOK 列表)。不过,可以想象 shim 的存在会对某些引导加载程序有所帮​​助。
  • 在您添加到安全启动列表的密钥集中,包括与 Microsoft 用于签署第三方二进制文件的密钥配对的公钥。由于 Microsoft 使用不同的密钥签署自己的产品,因此这将使固件能够启动第三方工具,例如 Ubuntu 12.10 或 Fedora 18,但不能启动 Microsoft 自己的 Windows 版本。但是,第三方 Windows 产品可能使用 Microsoft 第三方密钥签名,因此可以启动。请注意,某些插卡也具有使用此密钥签名的固件,因此此操作可能是使用此类卡的固件所必需的。

至于有人说这是个坏主意,我不同意,只要这是机器主人真正想要的。在 DOS 时代,计算机因意外启动包含引导扇区病毒的软盘而感染病毒是很常见的。原则上,今天通过 USB 闪存驱动器或 CD-R 也可能发生同样的事情。关闭这种攻击途径,即使它今天并不常见,也是值得的。话虽如此,我不建议在没有向收件人说明对计算机做了什么以及提供有关如何撤消更改(如果需要)的说明的情况下赠送或出售这样的计算机。

答案2

我提出这个问题是为了让人们能够从接下来的讨论中获得乐趣。

当我发布此文本作为答案时,有三种可能的方法可以实现此目的:

  1. 让 UEFI 安全启动删除 Microsoft 密钥并添加 GNU/Linux 引导加载程序使用的密钥(根据 Frank Thomas 的评论)
  2. 使用除 x86 或 Windows 8 兼容 ARM 之外的其他处理器架构,该架构受 Linux 内核支持(截至 winfreak 的回答)。
  3. 使用自定义 coreboot (http://www.coreboot.org) 导致 Windows 无法启动。

相关内容