Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

在Linux桌面系统下玩了这么久,大部分时间都是使用Ubuntu,偶尔使用一下Fedora。我的电脑中安装有多个Linux发行版,见这里《在同一个硬盘上安装多个Linux发行版及Fedora 21初体验》。在Ubuntu桌面系统中,安装Nvidia显卡驱动是分分钟的事,使用起来也一直很顺畅,见这里《桌面美化那点事儿》。然而到了Fedora中,则一直是好事多磨。特别是对于Fedora 21 Workstation版,在我的笔记本电脑上安装Nvidia驱动就没有一次获得好的结果。不管用哪一种方法,过程都很顺利,但是结果总是失败,总是进不了图形界面,总是出现这样的界面:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

安装Nvidia驱动的三种方法

  在Fedora中安装Nvidia显卡驱动可谓方法众多,我这次采用了三种方法,它们分别是:

到Nvidia官网下载官方驱动并安装。

使用第三方源中的软件包,我这里使用了rpmfusion中的akmod-nvidia软件包。

使用Bumblebee,Bumblebee是为解决双显卡切换问题而存在的一个开源产品,在前两个方法失败后,我以为失败的原因是我的笔记本电脑上有Nvidia GT 720M显卡和Intel集显共存,结果使用Bumblebee后,仍然出现同样的结局。

方法1:到Nvidia官网下载驱动并安装

  直接访问Nvidia的官网,找到驱动程序下载的页面,然后选择自己的硬件和软件平台,以便搜索合适的驱动,如下图:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  选择最新的346.47版进行下载,带BETA字样的当然不考虑,如下图:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  下载完以后是一个NVIDIA-Linux-x86_64.346.47.run文件,可以这样运行它:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  运行Nvidia官方的这个安装程序需要相当强的心理素质,因为它会依次出现以下错误界面。

  出错提示1:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  出错提示2:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  出错提示3:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  出错提示4:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  出错提示5:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  还好我的内心足够强大,我居然耐着性子一遍一遍运行这个安装程序,直到把所有的这些问题都解决。第1个出错提示是说该安装程序必须以root权限运行,解决这个问题比较简单,使用sudo ./NVIDIA-Linux-x86_64.346.47.run命令运行该程序或使用su命令先切换到root用户再运行该程序均可。第2个出错提示是说不能在图形界面下安装Nvidia的显卡驱动,必须退出X Server才行。那么怎么样才能让Fedora 21开机后进入字符界面呢?这个问题我在该系列博文的第一篇《玩转Linux系统的方法论》中就有过探讨。不同的Linux发行版进入字符界面的方式不一样,Fedora 21使用的init程序是systemd,所以其进入字符界面的方法是以root用户运行systemctl set-default multi-user.target命令,如下图:

Linux系统入门教程:Fedora 21安装Nvidia驱动以及失败

  本以为进入字符界面安装该驱动就一帆风顺了,结果发现我还是太天真。果然,第3个出错提示很快就出现了,它告诉我们安装这个驱动还要先安装gcc。这个问题好解决,yum install gcc搞定。然后再运行安装程序,结果第4个出错提示就出来了。太TM让人伤心了,该提示是说要安装该驱动必须得有Linux内核的源代码。解决这个问题花了我一点时间,本以为yum install kernel-devel就可以解决问题,结果发现安装的kernel-devel的版本和系统本来的kernel版本不一致,只好再来一个yum update kernel才解决问题。

  然后,该安装程序顺利运行了,成功的对Nvidia驱动进行了编译,产生了相应的内核模块。本以为要大功告成了,结果第5条错误提示来了。我勒个去!该错误提示的意思是说nvidia.ko模块无法成功加载,那是因为nouveau模块还在。要禁掉nouveau模块,只需要在/etc/modprobe.d目录下建立一个.conf文件,在里面写上blacklist nouveau即可,这件事Nvidia驱动的安装程序已经帮我们做了,但是依然无法阻止nouveau模块的加载。为什么呢?那是因为Linux启动时会先加载initramfs中的模块,如果不更新initramfs的话,单纯写/etc/modprobe.d目录下的配置文件也没有什么用。在Fedora 21中更新initramfs使用这个命令dracut --force。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16573.html