安装Ubuntu 16.04/16.10时出现了与NVIDIA显卡相关的图形问题。

我安装或升级到Ubuntu 16.04,但我的显卡出现了一些问题。
- 显示屏是空白的 - 显示屏闪烁 - 屏幕上的项目显示不正确 - 某些程序报告图形问题 - 计算机以低图形模式启动
你的具体问题可能不在这里,但还是尝试一下答案中描述的解决方案吧。
这个问题非常广泛,但每一个问题都可能有一个解决方案。

如果您遇到登录循环,请检查我的答案的最后一部分。


如果你遇到了列出的问题,并且有自己的解决方案(我的方法不起作用,或者有更快的方式),请随意发布另一个礼貌的回答,描述你的问题以及你是如何解决它的。
那些想要安装Ubuntu的人,请参考标题为:如果您无法进入TTY或者正在尝试安装Ubuntu的部分。

3对于那些在安装NVIDIA驱动后陷入登录循环的人,请参考http://askubuntu.com/a/760469,似乎NVIDIA驱动程序尚不兼容最新的内核版本。如果您仍然想安装NVIDIA驱动程序,您也可以尝试这里提到的步骤http://askubuntu.com/a/761326...我还没有继续进行,因为我的闪烁问题已经停止了。 - Ajinkya Patil
我的问题没有列出来,但它肯定符合“NVidia和16.04”问题。http://askubuntu.com/questions/789972/add-secondary-monitor-nvidia-367-27-16-04-displayport - andyczerwonka
我使用专有驱动程序解决了这个问题,版本为304。 - valeriocomo
多年来,我尝试了许多建议的解决方案,如清理、图形PPA、额外的驱动程序等等,在各种笔记本电脑上。对我来说,这些方法从未奏效过。对于NVIDIA驱动程序,我总是选择从NVIDIA官网下载并安装驱动程序,按照可执行文件中的说明进行操作。 - Eduard Drenth
1我无法回答这个问题,但是使用NVIDIA的驱动程序并添加参数"--no-opengl-files"来安装帮助了我。 - shaunakde
连接到主板图形的显示器在主窗口中显示出条纹/交错输出,而菜单栏大部分时间都正常。在启动设置中,我将NVIDIA帧缓冲区大小从32M提高到128M - 这似乎已经解决了该系统的问题。 - Rainer Rillke
12个回答

请注意,这个答案可能会稍微过时。我会尽力定期更新,但不能保证一切。下面使用的驱动程序版本可能不是最新的,请查看Launchpad页面以确认。
按照以下步骤可以解决所描述的每个问题(甚至更多)。
如果你正在安装Ubuntu,请按照第3节的步骤进行操作。
1. 首先确保您可以进入TTY
按下Ctrl+Alt+F1
如果这将带您进入一个黑屏并显示登录提示符,请继续。否则,您可能需要使用特殊的内核标志来启动。以下是说明。
2. 现在来修复问题
  1. 在TTY中登录您的帐户。
  2. 运行sudo apt-get purge nvidia-*
  3. 运行sudo add-apt-repository ppa:graphics-drivers/ppa然后运行sudo apt-get update
  4. 运行sudo apt-get install nvidia-driver-430
  5. 重新启动,您的图形问题应该会得到解决。

3. 如果您无法进入TTY或正在安装Ubuntu

  1. 重新启动进入GRUB。
  2. 突出显示Ubuntu选项并按下E
  3. 在以linux开头的行的末尾添加nouveau.modeset=0
  4. F10启动。
  5. 按照上述说明操作。
    • (如果正在安装Ubuntu,请忽略此步骤,但在安装完成后继续按照教程的其余部分操作。)

此解决方案应该能够修复升级到16.04后用户描述的许多问题。如果全新安装受影响,解决方案也相同。


如果你在之后遇到问题,你应该提出一个不同的问题。(参考这个问题,以便我们知道它不是重复的。)然而,在你这样做之前,还有一些其他小的修复方法可以尝试一下。
重新安装Xorg 返回TTY并运行sudo apt-get purge xorg-* xserver-xorg; sudo apt-get install xorg xserver-xorg; sudo dpkg-reconfigure xorg。
重新安装桌面环境 如果使用Unity,请运行sudo apt-get purge ubuntu-desktop; sudo apt-get install ubuntu-desktop。 如果使用GNOME,请运行sudo apt-get purge ubuntu-gnome-desktop gnome-desktop-environment; sudo apt-get install ubuntu-gnome-desktop。 如果使用MATE,请运行sudo apt-get purge ubuntu-mate-desktop mate-desktop-environment; sudo apt-get install ubuntu-mate-desktop。 每个Ubuntu DE都有自己的软件包名称。如果您使用KDE或其他类似的桌面环境,名称应该与上述名称类似。
全新安装 这可能不是最理想的选择,但在这种情况下有时是最好的选择。
请记住,有很多事情可能会出错,这并不是万无一失的解决方法。即使你正在经历问题列表中列出的某些事情,解决方案也可能没有完全适用于你。
此答案仅针对16.04和nVIDIA的驱动程序问题。您的问题可能比糟糕的驱动程序更深入。

修复后的其他问题

  • 如果您能够进入工作界面,但遇到登录循环(登录后返回登录界面),请点击这里查看

嗨Zacharee1,除了痛苦的刷新重新安装之外,我尝试了所有的命令行,但对我的情况都没有起作用。你能在这里给我一些见解吗?我在第一个解决方案的评论中报告了我所做的事情。也许最新的内核还不兼容任何nVidia驱动程序。谢谢。 - Xiaodong Qi
1@XiaodongQi 你试过禁用安全启动吗?这里的其他答案建议这样可以解决登录循环的问题。 - TheWanderer
我确实在BIOS中关闭了安全启动。 - Xiaodong Qi
类似的问题。以上方法都没有帮助。要么清除Nvidia并使用Nouveаu,要么使用sudo prime-select intel切换到Intel。尝试了340、364、352、361版本 - 没有任何区别。 - Pavel
@Pavel 你的名片是什么? - TheWanderer
在我的情况下,显示屏会出现,并在几分钟后冻结...尝试了364版本,但没有解决问题。我的显卡是Geforce GT540M。 - fccoelho
@fccoelho 这是全新安装还是升级? - TheWanderer
@Zacharee1 双头显卡 GeForce 820M + Intel HD 4400。 - Pavel
@Pavel 你是全新安装的吗? - TheWanderer
@Zacharee 不,是从15.10升级的。不幸的是,我不记得在15.10下使用的驱动程序版本是多少。可能是352。实际上,我注意到了一件奇怪的事情。我可以添加图形驱动PPA,也可以通过终端安装驱动程序,但是“软件和更新”程序只能看到340;当我从PPA安装任何其他版本时,“软件和更新”显示我正在使用Nouveau,这是不正确的。 - Pavel
1这真的很奇怪。好吧,这可能会进一步破坏你的系统,但我想试一试:sudo apt-get purge nvidia*。星号前面不要加破折号。然后尝试剩下的步骤。 - TheWanderer
@Zacharee1 而且,这取决于我是通过图形用户界面切换到340版本(会导致登录循环,但可以通过清除nvidia*来解决),还是通过TTY切换到更新的版本(会导致黑屏)。 - Pavel
1我觉得你需要重新安装 :/ @Pavel - TheWanderer
@Zacharee1 我本来已经重新安装了,但我还有一台搭载着NV 9300M GS显卡的笔记本电脑,之前运行的是Kubuntu 15.10 + Nouveau。我将其升级到了16.04,并从PPA安装了364驱动程序... 结果也是黑屏。我卸载了Nvidia驱动后,它又恢复正常了。 - Pavel
@Pavel 嗯,它们是不同的情况。 - TheWanderer
@Zacharee1 一次干净的安装解决了问题。起初,我尝试保留设置和主目录;但自动重新安装选项不可用,所以我通过将安装程序指向/和/home分区进行了手动重新安装。安装过程很顺利,但完成后无法启动:无法加载NVIDIA内核模块 -> 污染的内核。因此,我格式化了系统分区,进行了干净的安装,将主目录迁移到了home分区,安装了340版驱动(它正常工作),然后从PPA安装了364版驱动(也正常工作)。现在一切都好了。所以也许问题并不仅仅是驱动程序?感谢您的建议。 - Pavel
@Zacharee1我在Ubuntu GNOME 16.04上重启后遇到了空白屏幕的问题,使用以下驱动程序均出现此问题:nvidia-361、nvidia-364和nvidia-367。 Nouveau驱动则正常工作。终端中只显示了“ebridge已注册”的消息。我的华硕R556L上安装了Nvidia 920m显卡。我在BIOS中找不到禁用安全启动的选项,但首先我安装了nvidia-364,然后运行了update-grubupdate-initramfs -u,问题得到解决。也许这个评论会对某人有所帮助,所以我将其留在这里,如果你愿意,可以将其添加到原始回答中。 - Keammoort
@Keammoort 请添加你自己的答案。这就是这个问答的目的 :)。 - TheWanderer
@Zacharee1 我想帮忙,但是我只有101的声望分数(来自stackoverflow)并且在受保护的问题上无法添加答案,直到我再赚取9个声望分数。所以我至少会留下一条评论 :) - Keammoort
@Keammoort 真的吗?信任代表不能帮你解决这个问题吗? - TheWanderer
在这之后需要执行apt-get install nvidia-prime吗? - user3728501
@user3728501 我不这么认为。 - TheWanderer
好的,现在是另一个问题了。我按照上面的步骤(清除nvidia-*然后安装版本nvidia-364),但是屏幕变成了空白...之前我遇到的问题是登录后系统要么冻结、崩溃并关闭,要么立即退出登录。我以为这样做会解决问题,但结果变得更糟。有什么建议吗? - user3728501
@user3728501 你可以试试367或368。 - TheWanderer
我现在正在回溯“历史” - 最近我安装了“intel-microcode”... 我打算尝试卸载它并重新启动。 - user3728501
1哈 - 这没有帮助。 - user3728501
2仍然有与nvidia-367相同的症状。 - sds
是的,我遇到了与这里解释的问题相似的困扰:http://askubuntu.com/questions/809725/graphic-issues-after-ubuntu-16-04-with-nvidia-gtx-970-second-screen-flickeri。希望通过驱动程序或系统的更新能够尽快解决这个问题,但在此期间,看到不同的解决方法会很好。有什么建议吗?我已经尝试过重新安装系统。 - Thomas
只是想评论一下,在这里添加ppa然后尝试最新的修复方法对我很有帮助——我终于能够在Linux上使用我的GTX 1060,并安装了nvidia-370软件包。对于那些即使按照上述方法无法进入终端的人,我通过启动恢复模式,然后启用网络(这也会挂载可写文件系统),然后从那里退出root shell,这样你就可以apt-get purge掉不起作用的nvidia软件包。 - Tom Florkiewicz
1我试着(有点)让“GeForce GTX 965M硬件”正常工作。但是有个陷阱,我必须使用367.57版本的驱动程序。目前看来有两个更新的驱动程序(370.28和375.26),但是在使用这两个驱动程序以及运行两个显示器(一个内置在笔记本电脑上,一个外接)时,窗口的比例会奇怪地变化,鼠标光标也不响应点击(可见光标与实际位置不符)。而使用3.67.57版本的驱动程序时,只要在机器启动并登录后再插入显示器,就能正常工作。 - StvnBrkdll
1太棒了,请为其他人添加一条说明,确保在下载/更新驱动程序时,他们的第二个屏幕不要连接到笔记本电脑(通过HDMI)。我之前就犯了这个错误,结果无法通过登录屏幕。然后我把所有东西都移除了,并在未连接到显示器的情况下重复了整个过程。这次一切顺利。 - Hesam
我不得不使用 prime-select nvidia - Jan Tojnar
我不需要添加新的存储库,因为我注意到当我执行清除操作时,输出中列出了我需要在后续步骤中安装的软件包。这样可以吗? - khatchad
我很惊讶它没有告诉我卸载nouveau。 - Selah
请注意,在更新版本(高达17)中,通过按下Ctrl + Alt + F3键可以运行TTY模式驱动程序。 - Amir Fo
最好执行sudo apt-get purge 'nvidia-*'以防止通配符问题。 - Nathan B
这个方法解决了我的问题,当最近更新到14.04 LTS时,导致系统以低图形模式启动,然后无法登录。常见的.Xauthority解决方案没有起作用。我从TTY中移除了NVIDIA显卡驱动版本384.130。回到nouveau驱动后,我能够登录。然后,在重新安装NVIDIA驱动后,“无法登录”问题再次出现。再次移除驱动后问题得到解决。我升级到16.04 LTS,然后再升级到18.04 LTS。在18.04 LTS上,使用默认的340驱动也出现了无法登录的问题。我打开了TTY,更新到了390驱动,然后能够登录并更新到最新的435驱动。 - Charles
这对我来说有点令人惊讶,尝试了一堆不同的推荐Nvidia驱动程序后,我只是按照第二步将所有Nvidia驱动程序都移除了,结果对我来说很好用。再也没有缺失驱动程序的警告了。 - Josh

我安装了Ubuntu 16.04,一切都很正常,直到我切换到NVIDIA驱动程序后。重新启动后,我无法通过登录屏幕。对我有效的解决方案是禁用安全启动
在登录循环中卡住时,我切换到控制台Ctl+Alt+F1,重新启动并在UEFI中禁用安全启动。现在,安装了NVIDIA驱动程序后一切正常运行。

请点击以下链接查看如何解决Ubuntu 16.04内核4.4.0-21无法加载NVIDIA和VBoxDrv模块的问题,并且能够使用nvidia和efi。 - QkiZ
正如名称所示,禁用安全启动会使您变得不安全。 - tbodt

对于显示屏为空白显示屏闪烁

我曾经遇到过同样的问题,但现在一切都正常了。

有两种解决方案:

  1. 从图形驱动程序PPA中使用NVIDIA驱动程序版本364(最佳选择)

    • sudo add-apt-repository ppa:graphics-drivers/ppa
    • sudo apt update && sudo apt install nvidia-364
  2. 使用LightDM而不是GDM

    • sudo apt-get install lightdm
    • 在提示时选择lightdm作为默认选项。

注意 如果这对您没有起作用,请在安装NVIDIA驱动程序之前从附加驱动程序应用程序中安装intel-microcode(如果可用)。


所以你遇到了登录循环的问题?这个问题中有五个“问题”。 - TheWanderer
我遇到了两个问题:显示屏是空白的,显示屏闪烁。 - Independent Peculiar
啊,嗯,你应该把那个写在答案里面;) - TheWanderer
或者,运行以下命令: sudo dpkg-reconfigure lightdm 如果已经安装了lightdm。 - Martin R.
2嗨 - 我尝试了361、364和367,但都没有成功。我还尝试重新配置lightdm,但也没有结果。当我滚动或观看视频/电影时,仍然无法消除撕裂现象。唯一能够获得良好图形效果的解决方案是通过prime-select仅使用英特尔。如果还有其他我忘记的解决方案,我会很乐意尝试。 - pandaadb
1我完全按照指示操作了,现在我根本无法登录Ubuntu。 - atilkan

我从Ubuntu GNOME 15.10升级到16.04后遇到了黑屏问题。通过使用systemctl status命令和查看日志,我发现专有的NVidia驱动程序出现了故障。
清除nvidia-*并重新安装gdm使我进入了低图形模式,但重新安装NVidia驱动程序又导致了黑屏问题。事实证明,安全启动在BIOS设置中被设置为“Windows”。我将其更改为“Other”,问题得到解决。
在找到安全启动选项之前,我尝试了清除和重新安装nvidia-*xorg*xserver-xorgubuntu-gnome-desktopgnome-desktop-environment。我不确定这是否有帮助,但最好还是提一下。此外,升级工具曾表示为了成功升级需要禁用安全启动,但之后会重新启用它。这就是我去寻找它的原因。

只使用NVIDIA驱动版本364。 - Independent Peculiar

我检查了位于/var/log/Xorg.0.log的X11日志文件,寻找(EE)错误条目:
root@computer:/var/log# grep EE Xorg.0.log
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[   156.124] (EE) No devices detected.
[   156.127] (EE) no screens found(EE) 

所以显卡没有被nouveau驱动程序检测到。
使用lspci命令检查安装的显卡,得到以下结果:
root@computer:/usr/share/X11/xorg.conf.d$ lspci | grep NVIDIA 
02:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210]    (rev a2)
02:00.1 Audio device: NVIDIA Corporation High Definition Audio Controller (rev a1)

使用这种类型的显卡,安装此处提供的NVIDIA驱动程序并没有帮助我,因为最新的NVIDIA驱动程序不支持我的显卡。
因此,在进行一些互联网搜索后,我找到了一个建议,可以通过在文件中指定显卡的详细信息来帮助X11系统。
路径为:/usr/share/X11/xorg.conf.d/20-nouveau-conf,并使用lspci命令提供的信息。
# lspci | grep NVIDIA 
# 02:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
Section "Device"
   Identifier  "NvidiaGraphics"
   Driver      "nouveau"
   VendorName "NVIDIA Corporation"
   BusID    "PCI:2:0:0"   
EndSection

现在事情按照预期进行,日志文件中没有出现任何(EE)错误行。

对于那些按照指南进行操作但问题仍然存在的人来说,可能与驱动程序本身有关。
NVIDIA的一些GPU与最新的驱动程序不兼容。如果你怀疑自己是受害者,可以按照我的指南进行操作。
以下只是我自己问题的复制粘贴答案。在这里
我做到了!!问题出在驱动程序本身上!
问题:我的显卡(NVIDIA GTX980M)与新的专有NVIDIA Linux驱动程序不兼容。 解决方案:使用支持我的图形卡的旧驱动程序。
基本上,在浏览了一段时间的互联网后,有些人说我可以尝试使用稳定的nvidia-352而不是新的驱动程序。
然而,当我查看apt-cache search nvidia-352时,我发现nvidia-352只是一个过渡驱动程序,用于nvidia-361图形驱动程序。
然而,根据我的先前测试,从nvidia-361到最新版本(写作时为nvidia-370)都是我的问题的源头。
所以我需要下载确切的nvidia-352而不是过渡的nvidia-361。
如果你遇到和我一样的问题,那么以下是我解决问题的步骤。
卸载所有当前存在问题的NVIDIA驱动程序。 sudo apt-get purge nvidia-* libcuda-*
创建临时文件夹以存储nvidia-352所需的文件 cd ~/Desktop mkdir nvidia-352 cd nvidia-352
下载nvidia-352图形驱动程序所需的文件。 wget https://launchpad.net/ubuntu/+archive/primary/+files/libcuda1-352_352.63-0ubuntu3_amd64.deb wget https://launchpad.net/ubuntu/+archive/primary/+files/nvidia-libopencl1-352_352.63-0ubuntu3_amd64.deb wget https://launchpad.net/ubuntu/+archive/primary/+files/nvidia-opencl-icd-352_352.63-0ubuntu3_amd64.deb wget https://launchpad.net/ubuntu/+archive/primary/+files/nvidia-352_352.63-0ubuntu3_amd64.deb
编辑1: 如果你在上面的链接中无法下载nvidia-352_352.63-0ubuntu3_amd64.deb(我也遇到过这个问题),你也可以从其他来源下载它。
以下是该文件的替代链接: http://mirrors.mit.edu/ubuntu/pool/restricted/n/nvidia-graphics-drivers-352/nvidia-352_352.63-0ubuntu0.15.10.1_amd64.deb
编辑2: 上述链接适用于64位NVIDIA驱动程序,对于寻找32位驱动程序的用户,请查看下面的链接: https://launchpad.net/ubuntu/+source/nvidia-graphics-drivers-352
步骤完全相同,只需下载支持您的32位设置的不同文件。
安装所有的deb文件。 sudo dpkg -i *.deb
重新启动。
看吧!如果你成功地启动了桌面,而没有遇到任何崩溃问题,那么你已经成功解决了这个图形问题!
享受吧!:D

在经历了一天半的奋斗后,最终通过在Bios设置中禁用安全启动来解决了这个问题。在安装驱动程序时,我收到提示要求禁用安全启动,我也按照要求进行了操作,但由于可能已经安装了Windows,所以并没有成功禁用(在安装过程中)。重新启动并按下F2键(在Asus电脑上),我进入了Bios设置,选择了安全选项,然后禁用了安全启动。重新启动,问题迎刃而解! 尽管这可能针对某些Bios版本或双系统启动,但没有人在这里发布过这个解决方案。

我尝试了很多解决方案,但都没有起作用。最后,我尝试了这个方法,完美地解决了问题,而无需执行像 sudo service lightdm stop 这样的操作。只需运行以下命令:

这将显示与您的设备兼容的驱动程序列表: sudo ubuntu-drivers list

然后运行以下命令安装兼容的驱动程序:

sudo ubuntu-drivers autoinstall

最后执行以下操作(或者只需重新启动您的机器):

sudo service lightdm restart


每天我都会使用软件更新程序检查更新并下载它们。但是昨晚Ubuntu要求我进行部分下载(说有些东西没有正确安装),所以我按照“部分下载”过程进行操作。下载过程结束后,系统要求重新启动,于是我就重启了Ubuntu。重启后,引导标志、登录窗口都出现了低分辨率、登录循环和无网络连接(我尝试了无线和以太网都不行)!因此,我甚至无法登录!
我使用的是ASUS X556UQ笔记本电脑上的Ubuntu 16.04.2 LTS。
经过一番尝试(包括尝试上述解决方案和从谷歌上找到的其他解决方案),我发现问题出现在最新的Linux内核4.8.0-42版本和Nvidia 378驱动上!所以我通过TTY(Ctrl + Alt + F1)降级到Nvidia 370驱动,并使用Linux内核4.8.0-41版本重新启动Ubuntu(通过grub菜单),问题全部解决了!

我已经遇到这个登录循环问题好几个月了,一直没有解决。现在终于找到了答案,真的想与所有为解决方案而苦恼的人分享。如果有更简单的方法,请务必告诉我。
我进入了BIOS设置,然后禁用了“内置显示”选项。问题得到了解决。现在当我打开Fedora时,它实际上开始与GPU卡一起工作,而且驱动程序还没有安装。这比以前有了很大的改进。在安装了Nvidia驱动程序之后,操作系统运行良好。

1请修改您的回答,将重点放在实际解决方案上。不要提及您尝试过但没有成功的事情。这是一个问答网站,而不是博客或论坛。 - Melebius