15.10-> 16.04 LTS升级后登录中断,与NVIDIA驱动程序有关


10

我刚刚通过将系统从15.10更新到16.04 sudo do-release-upgrade。在此过程中,它显示了带有以下消息的屏幕:

您的系统已启用UEFI安全启动。UEFI安全启动与第三方驱动程序的使用不兼容。

(...)Ubuntu仍然可以在您的系统上启动,但是这些第三方驱动程序将对您的硬件不可用。

禁用UEFI安全启动?(是|否)

由于我使用的唯一第三方驱动程序是NVIDIA图形驱动程序,并且由于它们在使用Ubuntu 15.10和启用安全启动的情况下都可以正常工作,因此我在此处选择了“否”选项。我不明白为什么我无缘无故禁用此功能,并且我假设我可以在更新后通过系统设置GUI重新安装第三方驱动程序。

las,不。重新启动后,我的登录屏幕显示为非常低的分辨率。尝试登录时,立即使我回到登录屏幕。

我已尝试以下方法解决此问题:

sudo apt-get purge nvidia*
sudo reboot

这将导致显示紫色屏幕,并且对Ctrl-Alt-F1无反应。通过SSH登录,然后执行以下操作:

sudo apt-get install nvidia-current
sudo reboot

这再次给我带来了前一种情况,它的登录屏幕分辨率很低,无法登录。

这是非常糟糕的升级体验。其他人有这个吗,我该怎么办?(同时保持启用UEFI安全启动)。



哇真不好 到目前为止,我不得不:通过PPA安装nvidia-364,禁用安全启动。现在一切似乎正常了,但是驱动程序不会自动更新(如果我没记错的话),也无法重新启用安全启动...
kmhofmann

是的,很遗憾,目前没有其他选择。您不介意我将这个问题标记为重复。
Videonauth

不,我不在乎。
kmhofmann '16

它不是重复的-至少不是全部。这个问题增加了安全启动的新功能,它不是“重复”问题的一部分(尽管在一些评论和答案中都提到过),因此值得进一步关注。
Rod Smith

Answers:


8

通过Ubuntu 15.10,Ubuntu对安全启动的处理在GRUB处停止了-也就是说,Ubuntu的Shim版本将启动Ubuntu的GRUB版本,该版本将启动任何 Linux内核,无论是否已签名。这对安全启动的支持非常低。为了进行比较,Fedora的GRUB将仅启动签名的Linux内核,而Fedora的内核在检测到安全启动处于活动状态时,将仅加载签名的内核二进制文件。Fedora更强大的安全启动支持的目的是保护系统免受“恶意”内核模块的侵害,从理论上讲,这些内核模块可以在非常低的水平上接管计算机。Ubuntu 15.10和更早的版本缺乏这种保护。

从16.04开始,Ubuntu遵循更严格的安全启动模块,更像Fedora进行了一段时间了。这具有安全性优点,但是如您所见,它也有问题。如果第三方驱动程序未使用Linux内核的Ubuntu版本识别为有效的加密密钥签名,则不会加载该驱动程序。这主要影响封闭源Nvidia和AMD / ATI视频驱动程序,但是其他驱动程序也会受到影响。

有(或可能有)几种解决此问题的方法:

  • 禁用安全启动 -这是最简单的解决方案。您可以通过修改固件设置或(调整)调整垫片设置来实现。(我不确定如何通过调整Shim的设置来做到这一点,但是我很确定这是可能的。)
  • 不要使用第三方内核模块 -如果您限制自己使用Ubuntu标准Linux内核中包含的开源驱动程序,那应该没问题,因为Canonical会签署所有此类驱动程序(AFAIK)。注意使用这样的驱动程序应该对Nvidia有很好的支持。您的系统可能回退到次优驱动程序,因为它认为封闭源驱动程序可用。我不知道如何从一个切换到另一个,但是这个问题是关于使用AMD / ATI驱动程序的,因此这可能是一个有用的起点。
  • 签署相关模块 -从理论上讲,亲自签署商业模块应该可以使它们正常工作。不幸的是,我没有关于如何执行此操作的说明的指针,实际上,我什至不能完全确定是否可以使用现货的Ubuntu内核来执行此操作。这样的内核可能只支持使用Canonical密钥签名的模块,而您当然不具备这些模块。
  • 编译自己的内核 -如果编译自己的内核,则可以根据需要设置其选项,包括放宽加载未签名模块的限制。然后,您需要使用自己的EFI密钥对内核进行签名,并将该密钥的公共版本添加到MOK列表中。这是有关编译自己的内核的问题和解答。
  • 切换到较旧的GRUB-因为较旧的GRUB将启动未签名的内核,因此您可以安装这样的GRUB(从Ubuntu 15.10或更早版本开始),并使其启动未签名的内核。请注意,保持较旧的GRUB可能会很痛苦。
  • 切换到不支持安全启动的启动加载程序 -如果要使用自己的密钥对SYSLINUX或ELILO这样的启动加载程序进行签名,然后将该密钥的公共版本添加到MOK列表中,则该启动加载程序将忽略安全启动引导设置,就像旧版本的GRUB一样。然后,您可以启动未签名的内核。

请注意,我100%肯定可以使用的其中两个选项仅是禁用安全启动或避免使用第三方内核模块。我避免使用瘟疫之类的第三方内核模块,因此我没有在安全启动环境中使用它们的个人经验。除了禁用安全启动之外,构建自己的内核可能是次要的工作,其次是使用较旧的GRUB或使用不支持安全启动的引导加载程序。构建自己的内核曾经很普遍,但是很少有人再做,而对于现代内核,花时间学习如何配置内核(更不用说实际这样做)可能是很重要的。使用较旧的GRUB或其他引导加载程序可能更容易,但是您需要了解足够的知识才能进行设置。


2
*在解决此问题之前,请使用Ubuntu 14.04。仍然有很多原因使台式机上的Linux仍然不可见。这种事情确实使人们采用Linux更加痛苦。
颠倒

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.