Nvidia对于Linux显卡驱动的支持一直不是很好,我的电脑装好双系统后,直接进不去Ubuntu系统,后面想办法进去后,无法调屏幕亮度,识别不到外接显示器…总之只要是关于显示的问题,基本都是Nvidia显卡驱动的问题,下面说下我遇到的一些坑,以及是怎么解决这些问题的,可能有一定的适用性。
由于Nvidia驱动程序非开源,但是Linux是一个开源的系统,对于系统可能存在的图形界面错误,开发者只能去修改操作系统源码使得系统更好地适配官方驱动,而不是修改显卡驱动去适配系统,相比之下显卡驱动闭源对于Linux开发者和用户都不算是友好,因此Linux开发者一直希望Nvidia开源其显卡驱动程序。但是Nvida对此的态度是"我们一直支持Linux及其社区建设,而且一直致力于为Linux提供Nvidia显卡驱动,但是开源是不可能开源的,这辈子都不可能开源的"。
面对这种矛盾,Linux的部分开发者索性自己研究Nvidia的显卡驱动,做逆向工程,由于是对官方显卡驱动的黑箱进行解析,所以最后做出来的"Nvidia开源驱动"兼容性较差,且无法完整使用Nvidia显卡的全部功能,如CUDA加速。
暂时使用集显作为默认显卡,先保证能进入系统
这里叨叨两句,我遇到的情况是一登录系统后电脑直接关机,其它只要是显示问题导致的无法进入系统的情况应该同样是由于Nvidia显卡驱动的问题,罪魁祸首是Ubuntu系统自带的显卡驱动Nouveau,其是一个开源显卡驱动,兼容性奇差(至少对于10系及以上N卡无法兼容),且性能也差一截,但是系统监测到电脑有N卡会优先以N卡作为默认显卡,于是就出现了以上的情况。
方法一 :
1.重启Ubuntu
进入Ubuntu高级选项 -> 选择recovery模式 -> 选择resume项进入系统
2.进入系统后,需要进行永久修改grub引导文件
终端输入sudo gedit /etc/default/grub,将 quiet splash后加上nomodeset后保存退出
3.更新修改后的grub
终端输入sudo update-grub1
方法二 :
1.设置系统启动引导项
在系统引导界面,长按e键进入Ubuntu系统引导编辑grub界面,在quiet splash后加上nomodeset,之后按F10进行引导启动系统
PS:这种方法之后进行启动同样需要修改引导项后进行启动
完成后重启系统看看能不能正常进入系统,若能进入则说明设置成功,此时查看系统信息系统图形项显示的应该是识别到的电脑集显
上面说了各种开源驱动性能极差,所以还是优先安装官方提供的驱动。不过再此之前还需要先禁用掉系统自带的Nouveau显卡驱动,因为Nouveau会与其它N卡驱动冲突。
1.打开编辑配置文件
终端输入sudo nano /etc/modprobe.d/blacklist.conf
2. 在末尾添加 blacklist nouveau
3. 更新使命令生效
终端输入sudo update-initramfs -u
完成后重启系统,再检测是否禁用Nouveau成功
命令行输入 ls mod | nouveau
执行后若终端无信息输出则禁用成功
完成了上面的步骤后就可以安装N卡驱动啦,但是我进行安装时这一步是最坑的,各种驱动不兼容导致无法进入系统(登录紫屏情况),只能一遍一遍卸了再重装别的驱动版本。
一般Linux下安装N卡驱动的有以下方法:
我个人安装时遇到的几个雷区:
我使用上面这几种方式安装要么安装不上,要么就是各种驱动不兼容。最后在"附加驱动管理软件"中安装低版本的390驱动安装成功,启动成功,这貌似是Ubuntu的新特性支持。
要在 Ubuntu LTS 上获得的最新 Nvidia 驱动程序,你不必再使用 PPA 了。最新的驱动程序现在将在 Ubuntu LTS 版本的存储库中提供。
– Ankush Das(作者)
系统设置菜单 -> 软件和更新 -> 附加驱动 -> 选择专用Nvidia驱动 -> 应用更改
PS:这里一定要注意不要安装开源驱动,一般附加驱动只会推荐专用驱动,一个最新的高版本和一个较低版本,这里给我推荐的是430专用和390专用,但是我装430版本翻车390版本正常运行
所以这里还是建议大家尽量安装较低版本的驱动,最好不要安装官方或系统推荐的驱动,真的很容易翻车(网上有不少安装最新驱动翻车的案例),最简单的方式也是最稳定的,直接使用标准仓库自动安装,傻瓜式操作一步到位,免除后患。
安装完成后重新启动,此时能在软件中找到多出来的Nvidia-X-Server-Setting显卡控制软件。
PS:我在安装过程中遇到过这个控制软件打开后只有两三个选项卡以及直接空白显示的情况,原因未知,猜测是兼容性问题或者是安装未完全
如果遇到驱动安装成功,但是重启无法正常进入系统的情况,那么就说明这个显卡驱动不兼容你的显卡,所以只能先卸了之前安装的驱动,保证能进系统后再尝试安装别的驱动。
无法进入系统的情况下卸载Nvidia驱动
重启系统 -> 系统引导界面选择Ubuntu高级选项 -> 选择recover mode -> 菜单栏选择root -> 在屏幕下方的终端输入
sudo apt-get install autoremove --purge nvidia* 或是 sudo /usr/bin/nvidia-uninstall
最后检测是否Nvidia驱动是否安装成功
终端输入 nvidia-smi
能看到目前显卡的运行情况,此时第一栏为集显信息,第二栏为N卡信息
此时在系统信息中能看到系统已经能检测到GPU为独显,并显示相应显卡型号
到此,Nvidia显卡驱动就安装完成了,可以正常打开Nvidia-X-server-setting软件,对显卡进行各种设置。
PS:目前有其它博客提到过Ubuntu升级内核可能会导致Nvidia驱动失效需要重新安装驱动的情况,原因未知,总之安装好驱动后还是要注意这个潜在问题,也就是尽量不要升级Linux内核,即使用sudo apt-get upgrade命令
这里有一篇关于禁止Linux upgrade命令更新系统内核的博文:
【Linux运维日志】配置apt upgrade禁止更新ubuntu系统内核
另外在Ubuntu19.04系统中,对于N卡貌似有更好的支持,即可以主动识别N卡独显,兼容性也更好了,这个特性肯定会在Ubuntu下一个正式版本20.04中保留,可能以后就不需要再让用户自己折腾安装N卡驱动了吧。
参考文章:
【知乎】Ubuntu 18.04 安装 NVIDIA 显卡驱动
【CSDN】Linux安装NVIDIA显卡驱动的正确姿势