Linux安装显卡驱动一直是一个很麻烦的事,这篇文章是一个经验贴,安装nvdia驱动,并且安装cuda
1.前言
安装Linux的时候我已经做好不打游戏的打算了,nvidia 的驱动安装起来真的麻烦。最近要安装 nvidia 驱动的原因是,开始搞机器学习了。这坎还是要过的。安装过程太痛苦了,踩了很多坑,这篇博文收集了网络上的各种安装驱动的资讯,记录安装过程。
本机的系统是 ArchLinux,显卡为 NVIDIA GeForce MX250,窗体管理器为 LightDM。
命令主要都由sudo
运行,或者可以直接全程以root用户执行。
2.主要参考的博客
感谢这些博客积累下来的经验
Archlinux安装NVIDIA1050Ti显卡驱动
ivo Blog - archlinux 笔记本安装nvidia显卡驱动与intel显卡驱动
gorquan’s Blog - Ubuntu下NVIDIA显卡驱动处理
依云’s Blog - NVIDIA PRIME 配置笔记
3.一些准备
3.1.关闭桌面环境
为了防止不必要的麻烦,先关闭图形界面,先按Ctrl + Alt + F2
进入 tty2
,然后执行1
sudo systemctl stop lightdm
执行完后桌面服务会被关闭
3.2.禁用开源 nouveau 驱动
编辑/etc/modprobe.d/nouveau_blacklist.conf
加入1
2blacklist nouveau
options nouveau modeset=0
4.安装驱动
执行1
sudo pacman -S nvidia nvidia-libgl xorg-xrandr nvidia-utils nvidia-settings nvidia-prime
其中
nvidia
: nvidia 的驱动nvidia-libgl
: OpenGL的库xorg-xrandr
: 用于显示设置nvidia-utils
: NVIDIA drivers utilitiesnvidia-settings
: 用于配置显卡nvidia-prime
: 用于显卡的切换
5.配置
!配置的步骤比较重要,配置不当会导致黑屏,lightdm无法启动等问题
5.1.查看显卡的BusID
1 | lspci | grep -E "VGA|3D" |
执行此命令后会出现1
200:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
01:00.0 3D controller: NVIDIA Corporation GP108BM [GeForce MX250] (rev a1)
记住00:02.0
和01:00.0
这两串数字(读者显卡的BusID可能不一样),分别是intel集显和NVIDIA独显的BusID。待会会用到。
5.2.编辑xorg.conf文件
编辑/etc/X11/xorg.conf
文件,如果没有的话使用1
sudo nvidia-xconfig
生成此文件
开始编辑文件,用习惯的文本编辑器。1
sudo vim /etc/X11/xorg.conf
要往文件中追加这些内容1
2
3
4
5
6
7
8
9
10Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0" #!!!这句是要改的
Option "AllowEmptyInitialConfiguration"
EndSection
BusId是根据上面用lspci
指令读到的NVIDIA显卡的ID而定,比如我的是01:00.0
,那就写成 "PCI:1:0:0"
,读者可以根据此格式更改。
5.3.配置lightdm
!如果不是使用lightdm,可以参考上面所列举的博客
编辑/etc/lightdm/display_setup.sh
文件,这个文件是需要手动创建的1
sudo vim /etc/lightdm/display_setup.sh
往文件中写入1
2xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
编辑/etc/lightdm/lightdm.conf
文件1
sudo vim /etc/lightdm/lightdm.conf
找到display-setup-script
所在行,把注释取消,改为1
display-setup-script=/etc/lightdm/display_setup.sh
vim
用户可以使用/display-setup-script
指令来找到这行
6.重启
1 | shutdown -r now |
理论上重启就能用了,如果没有进入桌面,按 Ctrl + Alt + F2
进入tty2
编辑/etc/X11/xorg.conf.d/intel.conf
,这个文件也是要手动创建的1
sudo vim /etc/X11/xorg.conf.d/intel.conf
加入:1
2
3
4
5Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0" #!!!这句需要更改
EndSection
将集显的BusID用相应格式更改,然后重启。
7.检验
使用1
nvidia-smi
如果出现1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.100 Driver Version: 440.100 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce MX250 Off | 00000000:01:00.0 Off | N/A |
| N/A 37C P8 N/A / N/A | 14MiB / 2002MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 732 G /usr/lib/Xorg 14MiB |
+-----------------------------------------------------------------------------+
说明驱动已经成功安装,并且正在用NVIDIA显卡运行桌面。
8.用 NVIDIA 显卡运行程序
由于系统默认使用集显运行程序,所以运行程序时还需要配置一些变量:1
2__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia
用这些变量可以指定用 NVIDIA 显卡运行程序
为了方便起见,使用1
alias nvrun="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia"
这样以来就可以使用nvrun
运行程序了。
比如要运行 minecraft 就可以使用1
nvrun minecraft-launcher
进入 minecraft 后按F3
可以打开调试信息,看到显卡信息为 NVIDIA Corporation,说明此时正在用独显运行。