安裝 Win10 & Ubuntu 16.04 雙系統以及 Ubuntu 配置深度學習環境記錄


【20.6.26更新】

注:本篇博客顯卡驅動部分對新顯卡(2080ti)已不適用,請參考以下博客:

  1. https://www.cnblogs.com/pprp/p/9430836.html
  2. https://zhuanlan.zhihu.com/p/64328922

此外,cuda和cudnn建議直接用conda安裝,無需再進行配置


0. 前言

坑爹的Ubuntu晚上運行還是好好的,第二天中午的時候打開機器發現屏幕分辨率不正常了:2K屏顯示800*600左右的分辨率(無法調節),一個圖標一拳頭大,窗口和網頁顯示不全。Google查了一下發現可能是nvidia顯卡驅動壞了(真的脆),照着幾個博客搞了一下還尼瑪進不去系統,一直循環登錄了???之后又折騰了一整個下午,最后的結果是,重裝顯卡驅動一直失敗:PPA裝顯示connect不上、run文件裝顯示build kernel module error。反正我也是不管什么奇怪的配置問題都能遇上,破系統破摔,正好沒有Win10,重新裝一個雙系統。(本文安裝配置過程僅作個人參考


1. U盤啟動盤制作

1.1 系統下載

Win10的系統從MSDN下載,選擇 consumer edition version 1803 x64:

Ubuntu從官網下載Desktop 16.04 LTS即可(貌似是比18.04穩定?)

1.2 制作啟動盤

下載UltraISO,文件 -> 打開 -> 選中iso文件,啟動 -> 寫入硬盤鏡像 -> 寫入方式:USB-HDD+ -> 寫入,制作完成。


2. 安裝系統

2.1 安裝順序

這次雙系統先安裝Win10,之后再安裝Ubuntu。主要有兩個原因:

(上圖來自鳥哥的Linux私房菜,幾句話看得不是很懂,本科買的CSAPP還是得看起來了...)

其次,現在唯一的系統壞了,相當於是裸機,安裝Win10之后方便后續的磁盤分區。

2.2 安裝 Win10

因為主板是華碩的,好像新版的 UEFI 操作確實都比老的 Legacy 方便。先關閉 啟動 這一項中的 安全啟動(需要刪除密碼)和 快速啟動,不是很清楚原理,但既然很多貼子都這么說,還是照做保險。再按 F8,選擇 U盤 前帶 EFI 的那一項,就能進入安裝引導。接着引導會詢問安裝在哪一個分區,有的分區不能安裝,這時候把所有的分區刪了,合成一個大分區,之后可安裝成功。之后進行分區,使用DiskGenius,分給C盤128G,D盤2T,剩下的分區用 Win10 自帶的磁盤管理刪除變為空閑空間,方便安裝 Ubuntu 系統時辨別(中間無盤符區域為留給 Ubuntu 的空間):

2.3 安裝 Ubuntu

同 Win10, 選擇帶 EFI 的 U盤啟動項。選擇 try Ubuntu without installing,可以先隨便用一下系統,連接網絡等,之后再在圖形界面中選擇安裝 Ubuntu 16.04 LTS。注意不要勾選安裝 Ubuntu 時 下載更新和安裝第三方軟件這兩項,可能會導致安裝最后的“執行安裝后執行觸發器 update-notifier-common”卡住(最后拔了網線才安裝成功)。接着引導提示:已經安裝了 Windows 10,此時勾選“其他選項”。

再之后是對系統分區,選中空閑區域,點擊 + 號,根據我的環境,空間分配如下:

**安裝啟動引導器的設備:/boot 所在的分區**,點擊“現在安裝”。最后坐等安裝完成,重啟,拔 U盤。有的博客還有用 EasyBCD 在 Win10 里面添 Ubuntu 引導,但我重啟之后發現已經可以在兩個系統之間(Ubuntu、Windows Boot Manager)切換了,華碩主板(UEFI)的特點?反正目的達到了,至此雙系統安裝完畢。

3. 安裝 Ubuntu NVIDIA 顯卡驅動

(司馬顯卡驅動)

3.1 下載 run 文件

不建議通過 ppa源 安裝,因為你無法配置具體選項且成功后需要經常手動更新驅動。

官網選好分類之后下載 run 文件,並將其復制到英文目錄下,因為切換到 tty 下之后,中文全都變成實心方塊,辨認不出目錄。

3.2 卸載舊驅動

沒有安裝過 NVIDIA 驅動的主機可以省略:

sudo apt-get remove --purge nvidia*
# 卸載對應版本號
# sudo ././NVIDIA-Linux-x86_64-390.48.run --uninstall
sudo /usr/bin/nvidia-uninstall

3.3 安裝各種依賴

不是很清楚,反正照着安裝就vans了

sudo apt-get update 
sudo apt-get install dkms build-essential linux-headers-generic
sudo apt-get install gcc-multilib xorg-dev
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

3.4 禁用 nouveau

應該是將 ubuntu 自帶的顯卡驅動加入黑名單?

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf 
# 添加以下代碼:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
# 保存
# 禁用nouveau 內核模塊
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
reboot # 重啟
lsmod |grep nouveau # 無顯示則成功,驅動沒了桌面分辨率會比較大

3.5 關閉 secure boot、fast boot

安裝系統時已經關閉

3.6 在 tty 中安裝顯卡驅動

按 Ctrl+Alt+F1 進入 tty1,輸入用戶名、密碼(無回顯),之后暫停圖像輸出服務:

sudo service lightdm stop
# 安裝驅動
chmod a+x NVIDIA-Linux-x86_64-390.87.run 
sudo ./NVIDIA-Linux-x86_64-390.97.run --dkms --no-opengl-files

之后出現的 pre-script failed 是確保用戶真的要安裝驅動,屬實睿智。接着 dkms 選 yes,32 位兼容選 yes,x-org 選 no。最后居然沒有出錯,我哭了,前面被各種 build error 搞出心里陰影了。

sudo service lightdm start # 重啟服務
nvidia-smi # 輸出 GPU 信息代表安裝成功

4. 配置 cuda 和 cudnn

4.1 配置 cuda

由於項目需要且目前深度學習框架都支持了 cuda9.0,因此從官網下載 cuda9.0 的 run 文件安裝,下載完成后輸入:

sudo sh cuda_9.0.176_384.81_linux.run

輸入 accept 之后開始安裝,依次選擇不裝驅動、安裝 cuda、建立鏈接、不裝 sample。

添加路徑:

sudo gedit ~/.bashrc
# 添加下面三行
# add for cuda9.0
export PATH="/usr/local/cuda-9.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
nvcc -V # 查看 cuda 是否安裝成功

4.2 配置 cudnn

安裝cudnn比較容易,同樣從官網下載(需注冊賬號)。下載 cuDNN v7.1.4 Library for Linux,完成后選擇提取到此處,得到一個 cuda 文件夾。執行以下命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

之前看到很多博客在這步之后都添加了軟鏈接,不是很理解。后來發現上面命令中第二步就是將 lib64 文件夾中的文件復制到 /usr 目錄下,而在 lib64 中的三個 libcudnn.so 文件,其中兩個都是軟鏈接,只有 libcudnn.so.7.1.4 是最終的的文件:

而復制到 /usr 下的三個 so 文件已經沒有了這種鏈接關系(可能是cuda文件夾也是軟鏈接的原因?),因此需要 rm 之后重建: ```sh sudo rm libcudnn.so libcudnn.so.7 sudo ln -s libcudnn.so.7.1.4 libcudnn.so.7 sudo ln -s libcudnn.so.7 libcudnn.so ``` ---

5. 安裝 anaconda

官網上只有 Python 3.7 版本的了,但是以前安裝的庫好像都是說在3.6的環境下測試的。對於怎么下載之前的版本,網站是這么說的:

There are three ways to get Anaconda with Python 3.5 or 3.6:

  • We recommend that you download the latest version of Anaconda and then make a Python 3.5 (or 3.6) environment.
  • Or download the latest version of Anaconda and run the following command to install Python 3.5 (or 3.6) in the root environment: conda install python=3.5 or conda install python=3.6
  • Or download the most recent Anaconda installer that included Python 3.5 (Anaconda 4.2.0) or Python 3.6 (Anaconda 5.2.0).

感覺前兩條說的挺有道理,我信了,還是下載新版。不過官網下的速度很慢,可以在 Win10 下用迅雷下載 Linux 版,再拷過來安裝。
運行bash Anaconda3-5.3.0-Linux-x86_64.sh即可。
再之后的 TensorFlow 和 PyTorch,都是一條命令完成。


6. 其他

有關 Linux 軟件安裝目錄:

Linux 的軟件安裝目錄是也是有講究的,理解這一點,在對系統管理是有益的

/usr:系統級的目錄,可以理解為 C:/Windows/,/usr/lib 理解為 C:/Windows/System32。
/usr/local:用戶級的程序目錄,可以理解為 C:/Progrem Files/ 。用戶自己編譯的軟件默認會安裝到這個目錄下。
/opt:用戶級的程序目錄,可以理解為 D:/Software,opt 有可選的意思,這里可以用於放置第三方大型軟件(或游戲),當你不需要時,直接 rm -rf 掉即可。在硬盤容量不夠時,也可將 /opt 單獨掛載到其他磁盤上使用。

源碼放哪里?
/usr/src:系統級的源碼目錄。
/usr/local/src:用戶級的源碼目錄。


7. 總結

一趟下來不容易,重裝系統和重配環境之后,感覺比以前清白了一點,畢竟第一次裝雙系統。但也知道了自己有更多不懂的東西,比如裝系統時的磁盤管理,uefi、grub、lagacy等各種名詞,Linux 系統的整體了解等等,還是計組沒學好的鍋。不過因為是一步步采坑搭起來的,感覺現在這個系統更親切了,就算以后再出問題也不會慌了


參考資料:

  1. https://blog.csdn.net/V_code/article/details/64199525
  2. https://blog.csdn.net/fesdgasdgasdg/article/details/54183577
  3. https://blog.csdn.net/u014561933/article/details/79958017
  4. https://blog.csdn.net/aqxin/article/details/48324377


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM