Linux顯卡驅(qū)動(dòng)nvidia折騰記
我最近在Linux上測(cè)試了筆記本電腦的Nvidia顯卡,我在Mint、Manjaro和Deepin上進(jìn)行了測(cè)試。 發(fā)現(xiàn)并不理想,本文只是一個(gè)記錄,其中一些命令具有參考值,大家 可以嘗試一下。
我的筆記本之前在win下都是用NVIDIA Optimus,NVIDIA Optimus是NVIDIA公司最新開(kāi)發(fā)的雙顯卡,基于雙顯卡的智能切換技術(shù),能夠根據(jù)系統(tǒng)的負(fù)載自動(dòng)切換獨(dú)立顯卡和集成顯卡的運(yùn)行。Optimus技術(shù)可完全自動(dòng)地發(fā)揮作用,無(wú)需手動(dòng)更改設(shè)置值。采用Optimus技術(shù)的筆記本,當(dāng)系統(tǒng)僅運(yùn)行一些簡(jiǎn)單程序、或是僅對(duì)處理器有較高要求的大型程序時(shí),Optimus路由會(huì)僅讓集成顯卡工作,而將獨(dú)立顯卡完全關(guān)閉。只有在需要用到顯卡的大型游戲或程序才切換到獨(dú)立顯卡進(jìn)行運(yùn)算。
而在Linux下,雙顯卡切換技術(shù)是Bumblebee ,Bumblebee 致力于使 NVIDIA Optimus 在 GNU/Linux 系統(tǒng)上可用,實(shí)現(xiàn)兩塊不同的供電配置的顯卡同時(shí)插入使用,共享同一個(gè) framebuffer。
1、LinuxMint
linuxsight@linuxsight-Satellite-L40-A:~$ ubuntu-drivers devices== /sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0 ==modalias : pci:v000010DEd00001292sv00001179sd0000FA05bc03sc02i00vendor : NVIDIA Corporationmodel : GK208M [GeForce GT 740M]driver : nvidia-340 - distro non-freedriver : nvidia-driver-390 - distro non-free recommendeddriver : xserver-xorg-video-nouveau - distro free builtin
這將為你提供可以安裝的卡供應(yīng)商、型號(hào)和推薦的驅(qū)動(dòng)程序。從上面輸出的信息中,我們可以看到推薦的驅(qū)動(dòng)程序是nvidia-driver-390
linuxsight@linuxsight-Satellite-L40-A:~$ sudo ubuntu-drivers autoinstall[sudo] password for linuxsight:正在讀取軟件包列表... 完成正在分析軟件包的依賴關(guān)系樹(shù)正在讀取狀態(tài)信息... 完成下列軟件包是自動(dòng)安裝的并且現(xiàn)在不需要了:lib32gcc1 libc6-i386使用'sudo apt autoremove'來(lái)卸載它(它們)。將會(huì)同時(shí)安裝下列軟件:libnvidia-cfg1-390 libnvidia-common-390 libnvidia-compute-390libnvidia-decode-390 libnvidia-encode-390 libnvidia-fbc1-390libnvidia-gl-390 libnvidia-ifr1-390 nvidia-compute-utils-390 nvidia-dkms-390nvidia-kernel-common-390 nvidia-kernel-source-390 nvidia-utils-390xserver-xorg-video-nvidia-390推薦安裝:nvidia-prime libnvidia-compute-390:i386 libnvidia-decode-390:i386libnvidia-encode-390:i386 libnvidia-ifr1-390:i386 libnvidia-fbc1-390:i386libnvidia-gl-390:i386下列軟件包將被【卸載】:libcuda1-340 nvidia-340 nvidia-opencl-icd-340下列【新】軟件包將被安裝:libnvidia-cfg1-390 libnvidia-common-390 libnvidia-compute-390libnvidia-decode-390 libnvidia-encode-390 libnvidia-fbc1-390libnvidia-gl-390 libnvidia-ifr1-390 nvidia-compute-utils-390 nvidia-dkms-390nvidia-driver-390 nvidia-kernel-common-390 nvidia-kernel-source-390nvidia-utils-390 xserver-xorg-video-nvidia-390升級(jí)了 0 個(gè)軟件包,新安裝了 15 個(gè)軟件包,要卸載 3 個(gè)軟件包,有 261 個(gè)軟件包未被升級(jí)。需要下載 10.8 MB/47.1 MB 的歸檔。解壓縮后將會(huì)空出 130 MB 的空間。linuxsight@linuxsight-Satellite-L40-A:~$ ubuntu-drivers listnvidia-340nvidia-driver-390linuxsight@linuxsight-Satellite-L40-A:~$ lspci -vnn | grep VGA00:02.0 VGA compatible controller [0300]: Intel Corporation Haswell-ULT Integrated Graphics Controller [8086:0a16] (rev 09) (prog-if 00 [VGA controller
linuxsight@linuxsight-Satellite-L40-A:~$ dkms statusnvidia, 390.116, 5.0.0-32-generic, x86_64: installed
安裝nvidia-settings軟件包,該軟件包提供用于配置Nvidia卡設(shè)置的圖形工具:
sudo apt-get install nvidia-settings
在網(wǎng)上發(fā)現(xiàn)大家都在使用雙顯卡Bumblebee,
bumblebee : 依賴: xserver-xorg-core (>= 2:1.18)
linuxsight@linuxsight-Satellite-L40-A:~$ sudo apt install xserver-xorg-core
linuxsight@linuxsight-Satellite-L40-A:~$ sudo apt install bumblebee
發(fā)現(xiàn)optirun glxgears不行,重啟之后發(fā)現(xiàn)鼠標(biāo)鍵盤(pán)都不能動(dòng)了,這咋回事,宣告失敗了。2、manjaro在manjaro setting里,我們看到硬件里面提供安裝顯卡的選項(xiàng),可惜圖忘了保存了。
在網(wǎng)上看了別人的做法:
安裝依賴sudo pacman -S virtualgl lib32-virtualgl lib32-primus primus安裝nvidia閉源驅(qū)動(dòng)與intel驅(qū)動(dòng)混合版bumblebeesudo mhwd -f -i pci video-hybrid-intel-nvidia-bumblebee開(kāi)啟自動(dòng)啟動(dòng)bumblebeed服務(wù)sudo systemctl enable bumblebeed將用戶添加到bumblee組sudo gpasswd -a $USER bumblebee
但發(fā)現(xiàn)第二句無(wú)法執(zhí)行,然后我是在manjaro setting里安裝的顯卡驅(qū)動(dòng)。
glxgears 測(cè)試集顯的FPS
optirun glxgears 測(cè)試獨(dú)顯的FPS
獨(dú)顯也一直出現(xiàn)錯(cuò)誤。
[ 428.549910] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group[ 428.549934] [ERROR]Could not connect to bumblebee daemon - is it running?
3、deepin
安裝驅(qū)動(dòng)
sudo apt-get install bumblebee-nvidia nvidia-driver nvidia-settings
檢查驅(qū)動(dòng)是否安裝成功
sudo apt-get install mesa-utils注解:安裝mesa-utils這個(gè)包,用來(lái)顯示系統(tǒng)的glx相關(guān)信息。
optirun glxinfo|grep NVIDIA注解:用optirun調(diào)用獨(dú)顯輸出系統(tǒng)的glxinfo來(lái)查看驅(qū)動(dòng)是否安裝成功。如果打開(kāi)nvidia-settings時(shí)提示“You do not appear to be using the NVIDIA X driver”,在terminal中運(yùn)行如下命令optirun -b none nvidia-settings -c :8
測(cè)試 Bumblebee 是否支持你的 Optimus 系統(tǒng):
optirun glxgears -info
但也是一直出錯(cuò)
linuxsight@linuxsight-PC:~$ optirun glxgearsprimus: fatal: failed to load any of the libraries: /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1:/usr/lib/i386-linux-gnu/nvidia/libGL.so.1:/usr/lib/nvidia/libGL.so.1/usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory/usr/lib/i386-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory/usr/lib/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
引用網(wǎng)上的一段話:目前l(fā)inux下有三種optimus的實(shí)現(xiàn):l nouveau-only: PRIME GPU offloading using nouveaul nvidia-only: nvidia's more recent implementation, also packaged as nvidia-prime in Ubuntul nouveau or nvidia: bumblebeeubuntu采用的是第二種,debian只打包了第三種bumblebee。ubuntu的nvidia-prime如果要切換顯卡,必須要重啟X session,因?yàn)樵赬啟動(dòng)的時(shí)候nvidia的驅(qū)動(dòng)模塊就已經(jīng)加載了,也就是說(shuō)獨(dú)顯是一直在工作的。而debian采用bumblebee,開(kāi)機(jī)加載的是intel的驅(qū)動(dòng),程序默認(rèn)也都是用intel的集顯,如果需要用獨(dú)顯要用optirun運(yùn)行程序,這樣能做到最大程度的提高電池續(xù)航能力。目前debian的nvidia-driver,nvidia-legacy-driver都是默認(rèn)bumblebee解決雙顯卡,X啟動(dòng)時(shí),驅(qū)動(dòng)是intel,glx是mesa的glx,但是有些硬件可能會(huì)出現(xiàn)驅(qū)動(dòng)是intel,glx卻是nvidia的情況,這就會(huì)導(dǎo)致opengl的程序跑不起來(lái),需要手動(dòng)執(zhí)行sudo update-alternatives --config glx來(lái)選擇。
兩種實(shí)現(xiàn)其實(shí)各有利弊,debian當(dāng)前也沒(méi)有打包prime的打算打包方式不同,debian這邊沒(méi)有打包適配prime的驅(qū)動(dòng),加prime支持要改東西太多,所以就只用大黃蜂了。
寫(xiě)得有點(diǎn)亂,記錄一些命令,提供參考。