UOS&Deepin20 Beta安装NVIDIA显卡驱动和CUDA+CUDNN环境
1. Deepin20 Beta以及UOS 操作系统简介
Deepin20 Beta是一个新型的国产操作系统,采取统一的设计风格,从桌面环境和应用重新进行设计,其中底层仓库、内核分别升级到Debian 10、Kernel 5.3,桌面环境是最优美的一个Linux发行版本的操作系统。详细介绍参见官方网站:深度操作系统 20 Beta——全新出发,为你而来。
统一操作系统UOS是由包括中国电子集团(CEC)、武汉深之度科技有限公司、南京诚迈科技、中兴新支点在内的多家国内操作系统核心企业自愿发起“UOS(unity operating system)统一操作系统筹备组”共同打造的中文国产操作系统。可以参见网站:官方网站。
本文的目的是为deepin 和UOS操作系统如何配置深度学习环境而写下这篇博文。
2. 安装NVIDIA显卡驱动
首先做到的就是禁用电脑启动选项中的Secure Boot选项和FastBoot选项,否则系统不能够成功启动。将Deepin操作系统使用ISO刻录工具将系统刻录到U盘中进行安装,安装成功之后,接下来就是安装NVIDIA显卡驱动的基本步骤了。
- 首先,在深度商店中安装显卡驱动管理器,并将显卡驱动管理器切换到使用intel默认驱动(可选的)。之后可能会有安装intel驱动程序,切换成功之后会重启配置、看到茶壶的预览图示之后点击“使用”进入系统、再重启配置成功。
- 卸载系统中原来的deepin系统中的NVIDIA显卡驱动以及大黄蜂NVIDIA显卡驱动:
sudo apt autoremove nvidia* bumblebee* primus libgl1-nvidia-glx
3.禁用nouveau驱动:创建文件blacklist.conf:
sudo nano /etc/modprobe.d/blacklist.conf
然后添以下的内容
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
- 更新内核文件,首先对内核文件进行备份处理,然后更新内核文件,重启操作系统
sudo cp /boot/initrd.img-4.19.0.6-amd64 /boot/initrd.img-4.19.0.6-amd64.bak
sudo cp /boot/initrd.img-5.3.0-3-amd64 /boot/initrd.img-5.3.0-3-amd64.bak
sudo update-initramfs -u
sudo shutdown -r now
- 查看nouveau驱动是否成功禁用
lsmod |grep nouveau
如果没有显示出内容,则说明成功禁止nouveau驱动。
接下来有两种安装的方式,一种是从官方网站下载相应的驱动程序,安装的过程可以参考笔者的另一篇博文Ubuntu安装CUDA和CUDNN教程,另一种是使用deepin源上的NVIDIA驱动。实际上与Ubuntu安装显卡驱动程序是类似的。现在我们说明第二种安装方式。使用apt search 可以查询到NVIDIA驱动程序。所以我们使用apt从deepin源上下载NVIDIA显卡驱动并进行安装
sudo apt-get install nvidia-driver nvidia-smi nvidia-settings nvidia-xconfig
- 修改xorg服务配置
安装成功之后,查看自己电脑中存在的显卡BusID,以方便配置:
lspci |egrep "VGA|3D"
显示如下所示
笔者这里安装的电脑中包含有NVIDIA显卡驱动和intel显卡驱动两个。这里需要记住的是两个设备的BusID信息,需要进行转换,即“00:02.0->0:2:0,01:00.0->1:0:0”,然后进行修改xorg配置文件。不太熟悉的小伙伴可以将文件进行备份处理。
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
sudo nano /etc/X11/xorg.conf
在文件的最后边添加下面的内容信息
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
注意:BusID中需要将PCI: x: x: x替换成自己电脑中NVIDIA显卡前面的数字,然后将文件保存。
- 新建xorg初始化启动文件xinitrc。在自己home个人文件夹目录下新建文件
nano ~/.xinitrc
这里应该是不需要管理员权限的,如果需要的话可以加上sudo来进行操作处理。在文件中加入一下的内容
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96
- 在lightdm中创建xorg启动脚本。新建文件
sudo nano /etc/lightdm/display_setup.sh
并在文件中写入与.xinitrc文件中相同的内容
#!/bin/bash
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96
并且修改lightdm配置文件
sudo nano /etc/lightdm/lightdm.conf
在上述文件中找到[Seat.*]这一行,然后在这一行之下添加以下的信息
display-setup-script = /etc/lightdm/display_setup.sh
完成这个之后,重启操作系统,这样就安装好了NVIDIA显卡驱动。输入nvidia-smi
nvidia-smi
可以显示出,则说明就能够使用NVIDIA显卡驱动了。
安装成功之后,会遇到以下的问题:显卡驱动安装成功之后,但是显卡驱动并没有使用到NVIDIA显卡驱动程序。这主要是出在xorg配置文件中的问题。下面是解决的方法。在终端输入
nvidia-xconfig
会备份之前的xorg.conf为xorg.conf.backup,然后生成一个新的xorg.conf文件。然后可以按照以下的形式对文件进行适当的修改即可:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 440.100
Section "ServerLayout"
Identifier "Layout0"
Screen "nvidia" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
Option "DPMS"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
DefaultDepth 24
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
DefaultDepth 24
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
重启系统,或者是重新启动lightdm,就可看到正在使用nvidia显卡驱动文件了。
3. 安装CUDA
- 对GCC编译器进行降级处理。由于deepin20 beta系统源并没有gcc-4.8、g+±4.8,而操作系统中是gcc-8、g+±8,所以这里选择添加一个源进行安装。这里我们选择之前的deepin操作系统的一个源进行添加:
sudo nano /etc/apt/source.list
添加以下的源即可
deb [bg-hash=force] https://mirrors.tsinghua.edu.cn/deepin panda main contrib non-free
然后进行安装
sudo apt update
sudo apt-get install gcc-4.8 g++-4.8
对gcc,g++做一个软链接
sudo mv /usr/bin/gcc /usr/bin/gcc.bak
sudo mv /usr/bin/g++ /usr/bin/g++.bak
这样就安装好了gcc和g++。
- 安装必要的库文件
主要是为了防止出现与博文Ubuntu安装CUDA和CUDNN教程中出现的缺少库的相同情况:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libgles2-mesa-dev
- 安装CUDA
这里直接从官网上下载ubuntu18.04版本的cuda文件进行安装。安装过程中不需要安装nvidia显卡驱动即可,安装过程与ubuntu安装过程类似。
但是,笔者在安装过程中出现了CUDA安装失败的提示信息。这里的解决方法是指定安装的库文件地址
sudo bash cuda_10.2.89_440.33.01_linux.run --toolkit --toolkitpath=/usr/local/cuda --librarypath=/usr/local/cuda --smaples --samplespath=$HOME/
如果想静默安装,则只需要加上参数silent即可:
sudo bash cuda_10.2.89_440.33.01_linux.run --toolkit --toolkitpath=/usr/local/cuda --librarypath=/usr/local/cuda --smaples --samplespath=$HOME/ --silent
当然也可以选择安装到自己指定的文件夹中。然后就是将CUDA添加到系统的环境变量中
nano ~/.bashrc
添加以下的信息
CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64
保存文件,这样就安装成功了。测试安装是否成功可以使用以下的命令
nvcc -V
4. 安装CUDNN
可以从官网上下载CUDNN进行安装,然后按照以下的步骤进行安装
tar -zvxf cudnn-9.0-linux-x64-v7.tgz
cd cuda
sudo cp -P lib64/* /usr/local/cuda/lib64/
sudo cp -P include/* /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
添加环境变量
#cudnn
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
这样就安装成功了:
参考
[1] Deepin V20 Beta双显卡安装NVIDIA驱动(联想拯救者Y7000)
[2] UOS操作系统 笔记本双显卡完美驱动NVIDIA440驱动
[3] CUDA 10.2 安装笔记