如果看過我之前的文章,應該對Ubuntu下的顯卡驅動以及CUDA安裝比較了解了,但是那篇文章有點過時了,最近安裝CUDA時,英偉達已經做的很不錯了,給出了安裝前的配置界面,同時也留下了一些自定義參數,對於nouveau等開源驅動也默認自動去掉了,省了很多麻煩。
但是另一個問題也存在:舊版本的Linux內核與驅動匹配問題比較難解決,實際這個問題也不算是英偉達的鍋····
問題現象:驅動安裝失敗,安裝log文件提示說源碼樹未發現或者版本不匹配
解決辦法:很大程度上我們安裝的kernel-devel與kernel-headers與實際內核版本不匹配,這里指的是自動安裝的情況。比如下圖:
這種情況很容易出現,尤其是你在一個低版本的Linux發行版上安裝kernel-devel與kernel-headers時。我不建議按照上圖那樣直接yum uninstall 或者remove!其實我們大可手動下載安裝匹配版本的kernel-devel與kernel-headers。
去這個網站:https://pkgs.org/download/kernel-headers搜索與你內核匹配的kernel-headers,可能搜索到第三方編譯的二進制文件,不要緊,大膽用就行。
去這個網站:https://pkgs.org/download/kernel-devel搜索與你內核匹配的kernel-devel,同樣可能搜索到第三方的二進制文件,不要緊,大膽用。
不出意外,你應該找到了跟你內核匹配的RPM包,我們直接安裝就可以:
rpm -Uvh 你下載的包
安裝后,你的電腦上應該會有兩套kernel-devel,一個是yum install自動從軟件源里安裝的不與實際內核匹配的,另一個是手動安裝的。
我們的目的是讓英偉達的安裝程序正確調用kernel-devel,這就要在安裝前指定源碼樹位置,還記得我剛剛提到的配置界面嗎?我沒有截圖,但細心的你應該知道在哪個界面~~~
至於安裝位置,https://pkgs.org/download/kernel-devel已經給出,一般是在/usr/src/kernels/目錄下,如果你細心看,這個目錄下應該會有兩個版本,就是對應上述兩個kernel-devel
FAQ:
Q:為什么不把之前的自動安裝的版本卸載掉?
A:據說重啟時會出現內核恐慌,還是留着吧,反正只在安裝驅動等需要加載到內核的模塊過程中才會調用,不過,有一個缺點,就是害怕其他驅動編譯時不能自己指定目錄,這樣一來還是可能出錯···
解決的辦法可以創建軟連接,不過我沒有嘗試。