如何在一台配有UEFI固件且有Secure Boot功能的PC上安装和引导Linux

ubuntu-on-surface-pro-2

如今新的Windows PC都是带有UEFI固件的,而且也开启了Secure Boot功能。Secure Boot可以拒绝引导那些未被UEFI秘钥签名的操作系统,换句话说,只有微软认证的软件才可以被引导。

微软授权给PC厂商允许用户关闭Secure Boot功能,所以你还是可以关闭它的,或者在UEFI增加自定义的公钥绕开这个限制。但是,那些装着Windows RT的ARM电脑是无法关闭Secure Boot的。

Secure Boot是如何工作的

那些预装Windows 8 和Windows 8.1的电脑现在都用UEFI来代替BIOS。默认情况下,UEFI固件只会加载那些被签名的引导程序。这个功能被称为“Secure Boot” 或“Trusted Boot”。在缺少Secure Boot功能的传统PC机上,恶意的后门程序可以加载自身,进而摇身一变伪装成一个引导程序。这样的话,BIOS就会在启动的时候加载后门程序,这样它就可以躲过操作系统,把自己隐藏得很深。

Secure Boot 让这一切都变得不再可能——计算机只会引导受信任的程序,所以那些恶意的引导程序就无法感染这个系统。

在一台 Intel x86 PC机(非ARM PC),你可以控制Secure Boot。你可以选择关闭它,或者往里面增加自己的公钥。举个例子,开源组织可以使用自己的密钥来保证只有合法的Linux 操作系统可以被引导。

secure-boot-violation-invalid-signature-detected

安装Linux的几种方法

在支持Secure Boot的电脑上,你可以用以下几种方法来安装Linux:

  • 选择一个支持Secure Boot的Linux版本:较新的Ubuntu,从12.04.2 LTS和12.10开始,都可以正常被引导和安装在有Secure Boot功能的PC机中。这是因为Ubuntu的第一阶段EFI引导程序是被微软签名认证过的。然而,有Ubuntu开发者指出,Ubuntu的引导程序并没有用这个key进行签名,而是使用了微软“推荐”的一个简单的key。这意味着Ubuntu可能不能再所有的UEFI机器上运行,用户可能还是得把Secure Boot关掉。
  • 关闭Secure Boot:Secure Boot是可以被关闭的,代价是这会丧失认证功能,使得你的电脑可以引导任何程序,这和传统的BIOS PC机没有任何区别。如果你想安装那些本身不支持Secure Boot的Windows版本,比如Windows 7,那么你也得关闭它。
  • 往UEFI固件增加一个公钥:某些Linux发型版可能会用它们自己的秘钥对引导程序进行签名,但是这些对应的公钥并没有加入到你的UEFI固件中。这种情况现在来说并不常见。

你应该确认你的Linux版本推荐你使用哪种方法。如果你需要引导一个老一点的Linux版本的话,你可能连相关提示都看不到,这种情况下你还是关闭Secure Boot吧。

你应该可以顺利的安装Ubuntu最近的版本——无论是LTS还是更新的版本,到大多数新型的PC机上。请参看最后一个部分,那里将会告诉你如何从一个可移动设备进行引导。

如何关闭Secure Boot

你可以在UEFI固件设置菜单那里设置Secure Boot。为了看到这个菜单,你需要打开Windows 8的引导菜单。打开设置面板——按Windows Key + I —— 单击Power,然后在点击重新启动按钮时按住Shift键不动。

restart-from-settings-charm

你的电脑将会重启并进入一个高级选项菜单。选择Troubleshoot —— Advanced options,然后选择UEFI Setting。(在某些Windows 8机器中,你可能看不到这个菜单,请查阅你的手册)

access-uefi-firmware-settings

之后你会进入UEFI Setting菜单,在这里你可以选择关闭Secure Boot或者增加你自己的key。

surface-pro-2-uefi

从可移动设备引导

你可以从可移动设备进行引导,同上面相同的步骤。插入你的移动设备,选择Use a device,然后选择引导程序所在的设备。在从这个设备引导之后,你可以正常的安装Linux了,或者就直接使用在这个设备上使用Linux而不用安装它。
windows-8-uefi-choose-boot-device
请记住,Secure Boot是一个有用的安全特性。你应该打开这个功能,除非你需要运行那些无法工作在Secure Boot下的操作系统。