Linux显卡驱动nvidia折腾记
扫描二维码
随时随地手机看文章
我最近在Linux上测试了笔记本电脑的Nvidia显卡,我在Mint、Manjaro和Deepin上进行了测试。 发现并不理想,本文只是一个记录,其中一些命令具有参考值,大家 可以尝试一下。
我的笔记本之前在win下都是用NVIDIA Optimus,NVIDIA Optimus是NVIDIA公司最新开发的双显卡,基于双显卡的智能切换技术,能够根据系统的负载自动切换独立显卡和集成显卡的运行。Optimus技术可完全自动地发挥作用,无需手动更改设置值。采用Optimus技术的笔记本,当系统仅运行一些简单程序、或是仅对处理器有较高要求的大型程序时,Optimus路由会仅让集成显卡工作,而将独立显卡完全关闭。只有在需要用到显卡的大型游戏或程序才切换到独立显卡进行运算。
而在Linux下,双显卡切换技术是Bumblebee ,Bumblebee 致力于使 NVIDIA Optimus 在 GNU/Linux 系统上可用,实现两块不同的供电配置的显卡同时插入使用,共享同一个 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
这将为你提供可以安装的卡供应商、型号和推荐的驱动程序。从上面输出的信息中,我们可以看到推荐的驱动程序是nvidia-driver-390
linuxsight@linuxsight-Satellite-L40-A:~$ sudo ubuntu-drivers autoinstall[sudo] password for linuxsight:正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成下列软件包是自动安装的并且现在不需要了:lib32gcc1 libc6-i386使用'sudo apt autoremove'来卸载它(它们)。将会同时安装下列软件: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升级了 0 个软件包,新安装了 15 个软件包,要卸载 3 个软件包,有 261 个软件包未被升级。需要下载 10.8 MB/47.1 MB 的归档。解压缩后将会空出 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卡设置的图形工具:
sudo apt-get install nvidia-settings
在网上发现大家都在使用双显卡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
发现optirun glxgears不行,重启之后发现鼠标键盘都不能动了,这咋回事,宣告失败了。2、manjaro在manjaro setting里,我们看到硬件里面提供安装显卡的选项,可惜图忘了保存了。
在网上看了别人的做法:
安装依赖sudo pacman -S virtualgl lib32-virtualgl lib32-primus primus安装nvidia闭源驱动与intel驱动混合版bumblebeesudo mhwd -f -i pci video-hybrid-intel-nvidia-bumblebee开启自动启动bumblebeed服务sudo systemctl enable bumblebeed将用户添加到bumblee组sudo gpasswd -a $USER bumblebee
但发现第二句无法执行,然后我是在manjaro setting里安装的显卡驱动。
glxgears 测试集显的FPS
optirun glxgears 测试独显的FPS
独显也一直出现错误。
[ 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
安装驱动
sudo apt-get install bumblebee-nvidia nvidia-driver nvidia-settings
检查驱动是否安装成功
sudo apt-get install mesa-utils注解:安装mesa-utils这个包,用来显示系统的glx相关信息。
optirun glxinfo|grep NVIDIA注解:用optirun调用独显输出系统的glxinfo来查看驱动是否安装成功。如果打开nvidia-settings时提示“You do not appear to be using the NVIDIA X driver”,在terminal中运行如下命令optirun -b none nvidia-settings -c :8
测试 Bumblebee 是否支持你的 Optimus 系统:
optirun glxgears -info
但也是一直出错
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
引用网上的一段话:目前linux下有三种optimus的实现: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,因为在X启动的时候nvidia的驱动模块就已经加载了,也就是说独显是一直在工作的。而debian采用bumblebee,开机加载的是intel的驱动,程序默认也都是用intel的集显,如果需要用独显要用optirun运行程序,这样能做到最大程度的提高电池续航能力。目前debian的nvidia-driver,nvidia-legacy-driver都是默认bumblebee解决双显卡,X启动时,驱动是intel,glx是mesa的glx,但是有些硬件可能会出现驱动是intel,glx却是nvidia的情况,这就会导致opengl的程序跑不起来,需要手动执行sudo update-alternatives --config glx来选择。
两种实现其实各有利弊,debian当前也没有打包prime的打算打包方式不同,debian这边没有打包适配prime的驱动,加prime支持要改东西太多,所以就只用大黄蜂了。
写得有点乱,记录一些命令,提供参考。