关于 UEFI 和安全启动的讨论和报告已经出现在许多 Linux 圈子中,但有人能总结一下它对 Ubuntu 的影响以及它如何影响一般用户吗?
我知道 UEFI 和安全启动是分开的(不可互换),安全启动是统一可扩展固件接口 BIOS 规范。
附言我确实知道它对 Ubuntu 有何影响,这个问题是为了公众知识的利益。
答案1
为了真正理解它如何影响用户和 Ubuntu,我认为了解 UEFI 是什么以及它改变了什么会很有帮助。然后讨论安全启动的功能,以及它如何影响安装:
UEFI是定义操作系统和固件之间的软件接口的规范
它旨在取代 BIOS。BIOS 已经过时了,它是为较旧的硬件设计的。它只能支持 16 位处理器模式、仅 1MB 可寻址空间、仅能引导最大 2TiB 驱动器、4 个分区等。DOS 和较旧的操作系统过去依赖 BIOS 进行基本 I/O……但如今,一旦操作系统运行,引导加载程序的重要性已大大降低。要知道,许多人仍将 UEFI 称为 BIOS。
UEFI 的一些主要变化包括:
独立于处理器的架构和驱动程序
操作系统加载前的网络功能。
由于 UEFI 可以是 64 位的,因此它能够读取所有可由 64 位计算机寻址的内存
使用 GUID 分区表而不是 MBR,允许启动驱动器有超过 4 个分区和超过 2TiB(8ZiB)
为操作系统提供运行时选项,例如获取日期/时间/NVRAM 访问
UEFI 允许 SECUREBOOT:
安全启动会阻止驱动程序和操作系统加载程序被固件加载,除非它们已使用写入固件的数字签名进行签名。这对于阻止 rootkit 非常有用。您可以添加更多密钥以允许其他软件在“自定义”模式下运行。
话虽如此,您可以阅读有关安全启动的大量限制,如何使用它来允许一个操作系统控制整个系统等。因此,Windows 8 需要安全启动才能进入自定义模式或禁用它才能获得 Windows 8 认证。禁用后,您将失去安全启动的所有好处,但仍然可以使用 UEFI。在自定义模式下,您可以添加与系统中的私钥不匹配的公钥,以便除了那些具有私钥的软件之外,其他软件也可以运行
对于 Ubuntu
当您安装 Ubuntu 时,如果您的系统设置为在 UEFI 中启动,它将作为 EFI 安装。
从 Ubuntu 12.10 开始,它已支持安全启动
如果您要将 Ubuntu 添加为第二个操作系统,则务必使用与引导加载程序相同类型的操作系统(即 64 位或 32 位)。因此,如果您有 64 位 Windows 并且启动 UEFI,则应选择 64 位 Ubuntu。如果不这样做,它将无法加载。我尝试使用 32 位 Ubuntu(13.10)启动 UEFI,甚至无法让它读取 USB,直到我禁用 UEFI。我安装了 32 位版本并禁用了它。当我意识到我的错误时,我将 64 位 Ubuntu 重新加载到密钥,启用 UEFI 并且它检测到它很好。然后我重新安装。
使用 UEFI 允许您在安装时拥有许多主分区,因此不必担心指南会让您在拥有 4 个分区后开始使用逻辑分区。
一切还不是完美的。例如,GRUB 在安全启动 Windows 8 时存在问题。我可以选择先从 Windows 驱动器启动,它工作正常。我可以先加载 GRUB,然后在安全启动下启动 Ubuntu,一切正常。但是当 GRUB 加载时,它不会在安全启动下加载 Windows 8。这里有一个关于此问题的好网站,底部是已确认的错误报告:http://falstaff.agner.ch/2012/12/18/ubuntu-12-10-and-windows-8-with-secure-boot-mode/
答案2
在 UDS 期间,Jeremy Kerr 就此问题进行了全体会议演讲。演讲基于他与 Matthew Garrett 和 James Bottomley 共同撰写的一份文件。您可以找到该文件这里。
我的看法是,这是一个使用内部数据库中的授权签名来验证您用于启动计算机的软件是否已签名的系统。只要您有办法编辑有效签名的数据库,这并不危险。然而,一个大型行业参与者似乎希望 OEM 只在数据库中包含一个签名,并且没有办法更新它,而这是一个大问题,因为没有其他操作系统能够在应用了这些限制的硬件中启动。