本来前面一篇写完nvidia驱动安装失败的,以为就结束准备放弃了,结果晚上翻linux mint官方论坛居然发现了一个帖子说到同样的问题和症状,发帖者的显卡类型与我的类似,HD5500+geforce 820M,而且居然解决了。按照上面的方法实践一次,结果还真的成功驱动,重启后黑屏情况没有了。不过安装是成功了,但是系统并没有采用nvidia来驱动,而是采用intel的集显来驱动;所以增加了这次记录,也许到3的时候就驱动成功了:

Linux Mint论坛上的原帖地址:Black screen after nvidia driver installation https://forums.linuxmint.com/viewtopic.php?f=59&t=287624

备注:这个方法仅适合于intel+nvidia optimus技术双显卡的情况(很多笔记本采用了这种技术,其实optimus对linux来说安装太麻烦了);独立的nvidia显卡应该没这么麻烦;但是这次记录的内容对于上面一篇有一些要点上的补充。

一、安装前保证你的系统环境干净,最好没有任何的nvidia的显示。

基本上的操作都是 sudo apt purge *nvidia* 加上 sudo aop autoclean(建议采用*nvidia*,而不要采用nvidia*,防止有漏网之鱼)。

其中purge可以操作两次,貌似第一次是卸载程序,第二次是清除配置,autoclean是清理不需要的依赖;purge命令可以多次操作,操作完purge之后附带进行一次autoclean操作,看屏幕上的输出结果信息,没变化就可以了。

这样操作方法是正确的,很多资料上也是说到了这一步,但是其实并没有清理结束。那个帖子中当中插入一个杠精他提到的,上面操作结束后,运行一遍 dkpg -l *nvidia*,这时候往往有很多nvidia的显示内容,有些是un,有些是li,这些内容部分是依赖,部分是配置;按照杠精宣称:这些输出存在表示nvidia并没有真正的清除干净。然而他并没有提示如何清理这些内容,自己摸索后才知道,这些其实也是通过sudo apt remove name1来操作(用dkpg -r name1也应该可以),但是这里最好不要采用通配符,而且老老实实的按照输出结果的提示来输入name1。对于那些un标记的就不要卸载。卸载完了以后,再运行一次sudo apt autoclean。再采用dkpg来观察,一般到最后好像会剩一个rc标记的,到这里才算表示nvidia信息在电脑中清理得比较干净了。

这时候,开始进行驱动安装;

ps:关于设置nouveau为黑名单的操作,就是用blacklist.conf中添加blacklist nouveau来限制开源驱动,这一步对于optimus来说好像并不重要,尝试设置和取消,重新更新内核后,似乎没区别,都能进桌面;就是说你添加也可以,不添加也可以。建议添加;

二、安装驱动

安装的方法跟上一篇提到的一样,用系统自带的图形化界面来安装,用ubuntu-drivers install来安装,用sudo apt install nvidia-XX(注意有的是nvidia-driver-xx这样的写法)安装都可以。(nivida官网驱动手动下载安装未测试)。安装完成以后先不要急着reboot系统,那个帖子中提到了关于optimus技术的nvidia显卡驱动安装结束后需要删除掉一个文件(没有明确独立的nvidia显卡是否需要删除,我查看了台式机独立nividia显卡的系统中,这个文件并不存在。)

这个文件是: /etc/X11/xorg.conf

驱动安装结束后,用终端或者是文件管理器,sudo把这个文件删除,删除以后再执行:

sudo dpkg-reconfigure lightdm

(这里帖子提到一个要点,如果该操作无效,也没说什么状态叫无效,是输出错误叫无效还是无输出无效,我理解为输出错误才叫无效;如果输出无效,按照 https://wiki.archlinux.org/index.php/NVIDIA_Optimus#Display_Managers上面提到的自己手动配置,我找了一下,貌似是编写一个sh文件之后赋予运行权限,然后加入到lightdm.conf配置中去运行,这个地方我尝试了,结果重启的时候出现了闪屏的错误,也是根据这点我认为这个操作无效应该是输出错误才无效,如果无输出表示结果正确了,如果输出没错误提示就不要操作这一步。)

执行完了dpkg-reconfigure lightdm之后,重新启动系统,这个时候你的optimus nvidia显卡驱动就安装成功了。

我尝试安装了340,390,440三个驱动,都安装正常,启动正常;

三、附加提示

1、每次安装新版本的驱动时候,都需要彻底清理一遍nvidia信息;就是把第一步重新过一遍;

2、安装完成驱动以后,如果屏幕卡死,检查一下你的grub启动参数中是否存在 acpi_osi=linux nomodeset之类的,把这些参数删除掉,只需要保留默认的quiet splash两个就可以,记得重新update-grub;

3、如果出现登录界面输入密码后,重新跳回到登录界面,也就是说为的循环登录,这时候可以用tty1到~/目录下面,把这两个文件改名:.Xauthority 和 ICEauthority后,重新进入登录界面输入就应该可以了;

4、查看驱动是否安装正确: nvidia-smi,如果出现了当前nvidia显示卡的信息内容,表示显卡驱动安装成功了;

5、查看当前使用的驱动:lspci |gerp VGA(我安装成功,但是这个地方提示显卡依然是intel的集显,而且nvidia-settings中提示当前xrandr是由其他软件控制,表明nvidia驱动成功,但是没有用上!!!)

6、prime-select intel|nvidia|query 参数表示可以切换显卡,但是好像没什么用,我选择了nvidia,lspci结果还是一样;

7、用官方的ppa可能只能搜到340与390的驱动(截止20.03.07日期,GT 740M型号,其他的不肯定),可以通过增加ppa来添加更多的驱动:sudo add-apt-repository ppa:graphics-drivers/ppa,添加后sudo apt udate。这时候进入驱动选择,就会增加一些驱动(貌似是第三方的,比如440提示为free版本,而390这样的会提示non-free,说明390是官方的,)可以自行安装。

现在到了这一步尴尬的境地:驱动随便你装,但是就是用不上!而且又回到了256色感人的壁纸上来了~现在需要解决如何让系统调用nvidia来驱动,而不用集显来驱动的问题!