歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統入門教程:Fedora 21安裝Nvidia驅動以及失敗後的補救方法

Linux系統入門教程:Fedora 21安裝Nvidia驅動以及失敗後的補救方法

日期:2017/2/28 14:03:05   编辑:Linux教程

閱讀目錄

  • 安裝Nvidia驅動的三種方法
  • 方法1:到Nvidia官網下載驅動並安裝
  • 安裝NVIDIA官方驅動失敗後的補救辦法
  • 方法2:安裝第三方軟件源中的軟件包(rpmfusion源中的akmod-nvidia)
  • 安裝akmod-nvidia失敗後的補救辦法
  • 方法3:安裝Bumblebee
  • 安裝Bumblebee失敗後的補救辦法
  • Fedora 21和Nvidia驅動不對付,究竟問題出在哪裡呢?

在Linux桌面系統下玩了這麼久,大部分時間都是使用Ubuntu,偶爾使用一下Fedora。我的電腦中安裝有多個Linux發行版,見這裡《在同一個硬盤上安裝多個Linux發行版及Fedora 21初體驗》。在Ubuntu桌面系統中,安裝Nvidia顯卡驅動是分分鐘的事,使用起來也一直很順暢,見這裡《桌面美化那點事兒》。然而到了Fedora中,則一直是好事多磨。特別是對於Fedora 21 Workstation版,在我的筆記本電腦上安裝Nvidia驅動就沒有一次獲得好的結果。不管用哪一種方法,過程都很順利,但是結果總是失敗,總是進不了圖形界面,總是出現這樣的界面:

安裝Nvidia驅動的三種方法

  在Fedora中安裝Nvidia顯卡驅動可謂方法眾多,我這次采用了三種方法,它們分別是:

  1. 到Nvidia官網下載官方驅動並安裝。
  2. 使用第三方源中的軟件包,我這裡使用了rpmfusion中的akmod-nvidia軟件包。
  3. 使用Bumblebee,Bumblebee是為解決雙顯卡切換問題而存在的一個開源產品,在前兩個方法失敗後,我以為失敗的原因是我的筆記本電腦上有Nvidia GT 720M顯卡和Intel集顯共存,結果使用Bumblebee後,仍然出現同樣的結局。

方法1:到Nvidia官網下載驅動並安裝

  直接訪問Nvidia的官網www.nvidia.com,找到驅動程序下載的頁面,然後選擇自己的硬件和軟件平台,以便搜索合適的驅動,如下圖:

  選擇最新的346.47版進行下載,帶BETA字樣的當然不考慮,如下圖:

  下載完以後是一個NVIDIA-Linux-x86_64.346.47.run文件,可以這樣運行它:

  運行Nvidia官方的這個安裝程序需要相當強的心理素質,因為它會依次出現以下錯誤界面。

  出錯提示1:

  出錯提示2:

  出錯提示3:

  出錯提示4:

  出錯提示5:

  還好我的內心足夠強大,我居然耐著性子一遍一遍運行這個安裝程序,直到把所有的這些問題都解決。第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命令,如下圖:

  本以為進入字符界面安裝該驅動就一帆風順了,結果發現我還是太天真。果然,第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

  最後,使用systemctl set-default graphical.target命令設置讓系統開機時進入圖形界面,然後reboot命令重啟。如下圖:

  我怎麼知道Fedora 21中更新initramfs的命令是dracut呢?這就是另外一個話題了,方法還是《玩轉Linux系統的方法論》中寫的方法。首先猜想建立initramfs文件或initrd文件的命令可能是mkinitramfs或者mkinitrd,然後再使用which命令找出這系統中是否有這兩個命令,再然後找出它屬於哪個軟件包,最後再找出這個軟件包的文檔即可。下面看看 Ubuntu 和 Fedora 21 要重建initramfs,分別用什麼工具:

  雖然最終的結局是無法進入圖形界面,但是仍然可以對該安裝過程進行一些總結,如下:

  1. 顯卡驅動屬於Linux內核的內核模塊,安裝內核模塊需要懂一點內核知識;
  2. 下載Nvidia的驅動;
  3. 需要退出圖形界面,進入字符界面,命令為systemctl set-default multi-user.target,然後重啟系統;
  4. 需要安裝gcc,命令為yum install gcc
  5. 需要內核源代碼,命令為yum install kernel-devel,而且每一次升級內核,都需要重新編譯驅動;
  6. 禁止啟動時載入nouveau模塊,方法為修改/etc/modprobe.d目錄下的配置文件;
  7. 更新initramfs,命令為dracut --force
  8. 再次設置啟動系統時進入圖形界面,命令為systemctl set-default graphical.target
  9. 重啟系統,命令為reboot

  以上命令都以root用戶的權限運行。遵循該流程,你將成功得到本文開頭所示的那個錯誤界面。恭喜你,Fedora 21和Nvidia搭配,就是這個結局。

安裝NVIDIA官方驅動失敗後的補救辦法

  本次折騰最大的收獲就是如何從錯誤中恢復,再也不是像以前那樣一遇到進不了圖形界面就重裝系統了。方法是這樣的,首先,按Ctrl+Alt+F2進入另一個控制台,以root用戶登錄。然後,我覺得Linux下的程序往往都會提供一點幫助,所以我用NVIDIA-Linux-x86_64-346.47.run -h(也就是帶 -h 選項)運行了一下,果然,該安裝程序給出了一個幫助信息。在該幫助信息裡面說,如果用 -x 選項運行該程序,就可以對該文件進行解壓。然後,我就解壓了,進去看了一下,然後就發現更多的幫助信息了。最後,通過運行解壓目錄中的nvidia-installer --uninstall命令,我成功將Nvidia的驅動刪除了。最後,dracut --force一下讓nouveau回來,重啟一下就行了。如下圖:

方法2:安裝第三方軟件源中的軟件包(rpmfusion源中的akmod-nvidia)

  其實玩Linux,除了使用發行版官方的軟件源之外,偶爾也要用用第三方的軟件源,特別是對一些閉源的軟件更是如此,比如各種音頻、視頻解碼啊,Flash播放啊什麼的。當然,顯卡驅動也是第三方源經常收錄的重量級軟件了。比較出名的第三方源是fusion,這裡我們使用rpmfusion,到其官方網站http://fpmfusion.org看一下,如下圖:

  使用第三方源之前,使用yum list命令找不到和Nvidia相關的驅動,然後添加rpmfusion源,如下圖:

  再次使用yum list搜索Nvidia的驅動,得到的結果如下圖:

  最後,使用yum install akmod-nvidia進行安裝即可。

  這裡說一下akmod,前面提到過,對於內核模塊來說,每一次升級內核,內核模塊都需要重新編譯,如果每一次都手動操作的話工作量就太大了,所以需要一個自動化的工具,akmod就是這樣一個工具。和akmod功能相同的工具還有dkms,這個工具我們之前見過,在Ubuntu中安裝顯卡驅動時就會自動安裝dkms,VirtualBox虛擬機也會使用dkms管理它的內核模塊。詳見《Linux入門學習教程:虛擬機體驗之VirtualBox篇》。

  本以為使用第三方源的軟件包應該可以成功的,因為軟件源裡面的軟件往往經過測試,是比較成熟的。但是很不幸,還是失敗了。

安裝akmod-nvidia失敗後的補救辦法

  這個就比較簡單了,按Ctrl+Alt+F2進入另一個控制台,以root用戶登錄,將相應的軟件包刪除即可。不過需要注意的是,不僅要刪除akmod-nvidia,還要刪除xorg-x11-drv-nvidia。命令為yum erase akmod-nvidia xorg-x11-drv-nvidia,運行效果如下圖:

方法3:安裝Bumblebee

  連續使用兩種辦法安裝Nvidia的驅動都失敗了,我實在是不知道原因。我想,可能是因為筆記本中的雙顯卡吧,網絡上似乎有人提到過這個問題。所以我的第3個方法就是從雙顯卡切換這個切入點去解決問題。

  我是從Fedora的Wiki上知道Bumblebee的,不要看這個詞很難拼寫,如果你知道它的意思是大黃蜂你肯定就過目難忘了,之所以用這個名字是因為Nvidia官方的雙顯卡切換技術叫Optimus,也就是擎天柱的意思。變形金剛迷還真多啊。Bumblebee的安裝過程見如下Wiki:

  很不幸,最終還是失敗了。

安裝Bumblebee失敗後的補救辦法

  這個和上一個錯誤的補救措施相同,按Ctrl+Alt+F2進入另一個控制台,以root用戶登錄,將相應的軟件包刪除即可。命令為yum erase bumblebee。我就不截圖了。

Fedora 21和Nvidia驅動不對付,究竟問題出在哪裡呢?

  在網上搜索一下,發現很多人使用Fedora 21安裝Nvidia的驅動都沒有成功。那麼錯誤的原因究竟是什麼呢?是雙顯卡的問題嗎?還是Linux的內核太新?或者是Nvidia驅動的版本太新?再或者,是Xorg的問題還是Gnome的問題?這些問題我沒有答案。在此將我的折騰過程曬出來,歡迎大家探討。

更多Fedora相關信息見Fedora 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=5

Copyright © Linux教程網 All Rights Reserved