原文地址:解決 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
將阿里雲 OPSX、網易雲、清華 TUNA 的軟件源添加至 apt 源列表中
apt (Advanced Packaging Tool) 是 Debian 系 Linux 的包管理工具,其中包括 apt-get、apt-cache 和 apt-cdrom
cat 命令用於將文件中的內容輸出到終端,>> 用於將 cat 輸出的文本追加到文件末尾
注意:>> 符號用於追加到文件末尾,> 符號用於替換文件內容,不要寫錯導致文件內容被替換
wget https://www.leviatan.cn/download/source-list/ubuntu-18.10
cat ubuntu-18.10 >> /etc/apt/sources.list
檢查軟件包更新
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
下載安裝包
wget https://www.leviatan.cn/download/google-chrome-stable_current_amd64.deb
wget https://www.leviatan.cn/download/vscode/code_1.33.1-1554971066_amd64.deb
apt install ./google-chrome-stable_current_amd64.deb
apt install ./code_1.33.1-1554971066_amd64.deb
0x03 安裝 Anaconda3
下載 Anaconda3 安裝腳本並賦予執行權限
wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
chmod +x ./Anaconda3-2019.03-Linux-x86_64.sh
執行安裝腳本,其中 -b 選項用於無人值守安裝,-p 用於指定安裝目錄
./Anaconda3-2019.03-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 下載選擇頁面中選擇 Linux - x86_64 - Ubuntu - 18.04 - runfile (local)
並在下方彈出的列表中下載安裝包
下載 cuDNN
下載 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/