解决 Ubuntu 18.10 使用较新的独立显卡输出无法初始化图形界面并配置深度学习开发环境

0x00 配置

硬件

OS: Ubuntu 18.10

Base Board: ASUS WS X299 SAGE

CPU: Intel® Core™ i9-9820X

GPU: NVIDIA GeForce RTX 2080 * 4

RAM: 64 G

将要安装的软件

NVIDIA Driver: 410.93

Anaconda: Anaconda3 - conda 4.6.14

python: 3.6

opencv: 3.4.1

tensorflow: 1.13.1

CUDA: 10.0

cuDNN: 7.5.0

0x01 安装显卡驱动

由于 X299 主板不提供集显输出,Ubuntu 18.10 官方软件源也不包含 RTX 2080 的驱动,导致了装完 Ubuntu 之后无法初始化图形界面,屏幕上只有一个闪烁的光标位于左上角

待闪烁的光标出现后按下 Ctrl + Alt + F2 进入 tty2,输入用户名和密码后使用命令行进行操作

注意:在 Linux 中输入密码是没有回显的

接下来使用 ROOT 用户进行操作

sudo -s

将清华 TUNA 的软件源添加至 apt 源列表(/etc/apt/source.list)中

apt (Advanced Packaging Tool) 是 Debian 系 Linux 的包管理工具,其中包括 apt-get、apt-cache 和 apt-cdrom
cat 命令用于将文件中的内容输出到终端,>> 用于将 cat 输出的文本追加到文件末尾

注意:>> 符号用于追加到文件末尾,> 符号用于替换文件内容,不要写错导致文件内容被替换

mirror source for Ubuntu - TUNA

检查软件包更新

apt update
apt upgrade -y

安装常用工具

apt install -y gcc make vim net-tools htop openssh-server gnome-tweak-tool fcitx-googlepinyin

由于某些原因,该驱动需要先用 runfile 安装,再用 apt 安装才能保证驱动完整

补充:经测试发现 2019 年 5 月最新版的 410.104 runfile 驱动安装后仍然存在问题,所以这里使用 410.93 runfile + 410.104 apt 的搭配

补充:出现该问题的原因可能并不是 runfile 驱动不完整,而是 runfile 安装后无法注册驱动,有待测试

runfile 安装

下载 NVIDIA 适用于 Linux x64 的 410.93 驱动

NVIDIA Driver 410.93 for Linux

wget http://cn.download.nvidia.com/XFree86/Linux-x86_64/410.93/NVIDIA-Linux-x86_64-410.93.run

为驱动安装文件添加执行权限并执行

chmod +x NVIDIA-Linux-x86_64-410.93.run
./NVIDIA-Linux-x86_64-410.93.run --silent --no-cc-version-check --run-nvidia-xconfig
参数 功能
no-cc-version-check 不检查 gcc 版本
run-nvidia-xconfig 运行 nvidia-xconfig

apt 安装

添加 NVIDIA Graphics 驱动软件源,并安装 nvidia-driver-410

add-apt-repository -y ppa:graphics-drivers/ppa
apt install -y nvidia-driver-410

此时由于刚刚安装完驱动,需要重新启动系统以使系统认出设备,同时使刚刚安装的 fcitx-googlepinyin 生效

reboot

重启后图形界面应正常启动

0x02 配置安装常用软件

更改用户目录语言

从应用程序列表中打开语言支持,此时提示系统安装的语言包不完整,选择安装,待安装完成后将键盘输入法系统切换为 fcitx

按下 Ctrl + Space 即可切换为 Google 拼音输入法

如果在安装系统的时候选择的语言是中文,用户目录下的文件夹都是以中文命名的,这样在命令行界面下操作非常不方便

以命令需要以普通用户的身份执行

首先将控制系统语言的环境变量 LANG 切换为英文,并更新 gtk 控制的用户目录

export LANG=en_US
xdg-user-dirs-gtk-update

在弹出的对话框中选择 Update Names

此时已经将文件夹名称更改为英文,但系统语言变成了英文

再将 LANG 改回中文

export LANG=zh_CN

重启生效

reboot

重启后弹出对话框询问是否更改用户文件夹名,勾选 不要再次询问我 并选择 保留旧的名称

安装 Google Chrome 和 VSCode

以下命令需要以 root 身份执行

sudo -s

下载安装包

Google Chrome for Ubuntu

Visual Studio Code for Ubuntu

apt install ./google-chrome-stable_current_amd64.deb
apt install ./code_xxxxxx_amd64.deb

0x03 安装 Anaconda3

下载 Anaconda3 安装脚本并赋予执行权限

Anaconda3 for Linux

chmod +x ./Anaconda3-xxxx.xx-Linux-x86_64.sh

执行安装脚本,其中 -b 选项用于无人值守安装,-p 用于指定安装目录

./Anaconda3-xxxx.xx-Linux-x86_64.sh -b -p /usr/local/anaconda3

无人值守安装不会添加 conda 的随终端启动脚本,这里手动写入 ~/.bashrc

# >>> conda initialize >>>
__conda_setup="$('/usr/local/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/usr/local/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/usr/local/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/usr/local/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

应用更改

source ~/.bashrc

使用 conda 安装环境

conda install -y python=3.6
conda install -y opencv=3.4.1
conda install -y tensorflow=1.13.1

0x04 安装 CUDA 和 cuDNN

下载 CUDA 10.0

CUDA 10.0

在 CUDA 10.0 下载选择页面中选择 Linux - x86_64 - Ubuntu - 18.04 - runfile (local)

并在下方弹出的列表中下载安装包

下载 cuDNN

cuDNN 7.5.0 for CUDA 10.0

下载 cuDNN 需要注册 NVIDIA 帐号

在 cuDNN 下载列表页面中选择 Download cuDNN v7.5.0 (Feb 21, 2019), for CUDA 10.0

在弹出的列表中选择 cuDNN Library for Linux

安装

赋予执行权限并执行 runfile,其中 --override 选项用于忽略 apt 安装的 gcc-8.3 与用于 cuda 编译的 gcc-8.2 不匹配的问题

chmod +x ./cuda_10.0.130_410.48_linux.run
./cuda_10.0.130_410.48_linux.run --silent --toolkit --samples --samplespath=/usr/local/cuda-10.0 --override --verbose
参数 功能
silent 无人值守安装(静默安装)
toolkit 安装 cuda-toolkit
samples 安装示例
samplespath 示例安装位置
override 覆盖安装
verbose 输出安装日志
echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc
echo 'export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"' >> ~/.bashrc

source ~/.bashrc

cd /usr/local/cuda/NVIDIA_CUDA-10.0_Samples/1_Utilities/deviceQuery && make && ./deviceQuery && cd ~

tar zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz

cp -rf cuda/ /usr/local/cuda/
rm -rf cuda/
LICENSED UNDER CC BY-NC-SA 4.0
Comment