在 win11 下搭建並使用 ubuntu 子系統(同時測試 win10)——(附帶深度學習環境搭建)

2022-11-30 12:01:02

  對於一個深度學習從事者來說,Windows訓練模型有著諸多不便,還好現在Windows的Ubuntu子系統逐漸完善,近期由於工作需求,設定了Windows的工作站,為了方便起見,搭建了Ubuntu子系統,網上教學比較多,但是都或多或少存在一些小問題(也許是他們沒有遇到), 於是我自己在嘗試中,將自己踩到的坑記錄如下。

  總結:win11 直接去Microsoft store 下載即可,然後註冊賬號即可使用,無需任何騷操作(它自帶cuda,而且源也是OK的)

 1,ubuntu子系統安裝預備工作

首先,win11的子系統開啟前,需要進行一系列操作,並重啟計算機,過程如下:

1.1 設定開發者模式

開啟win10開發人員模式,在設定-->更新和安全-->針對開發人員,中勾選開發人員模式。

 

1.2 開啟子系統選項和虛擬機器器選項

然後在控制面板中勾選新增Linux子系統。依次進入控制面板-->程式-->啟用或關閉windows功能,勾選適用於windows的linux的子系統,點選確定。之後重啟電腦。

 

1.3 下載Ubuntu 

最後去Microsoft Store下載Ubuntu,進行安裝:

   注意:這裡我測試了 20.04 和  22.04 的 Ubuntu 版本,發現其差異不大,所以隨便一個都可以

2,ubuntu子系統註冊和設定

2.1 設定個人資料

  進入cmd中,設定個人賬號和密碼。

 

   然後進行換源,我們需要更換Linux子系統ubuntu的apt映象源,因為Linux的apt源使用的是官方源,需要連線到國外的伺服器。所以安裝一些包或一些軟體時下載會很慢,我們可以改用國內的映象apt源。

  國內的源主要就是中科大,清華,阿里的,我這裡在網上抄幾個複製如下:

  (大家想看全的,可以參考這個部落格:https://blog.csdn.net/shangyuanlang/article/details/80737434)

 

2.2,Ubuntu子系統換源(不換源直接忽略,不要看)

  注意:這裡我測試了 換源後 和不換源,我發現對於Ubuntu子系統,根本不需要換源,而且沒有任何問題。

        反而是換源後,問題一大堆,存在了各種依賴不存在,報錯。

  總結:建議不要換源(對於Ubuntu子系統而言)。

  不換源,直接 sudo apt-get update,結果無任何warning。

2.2.1 清華源

  清華源地址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

  源資料如下:

# 預設註釋了原始碼映象以提高 apt update 速度,如有需要可自行取消註釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 預釋出軟體源,不建議啟用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

  

2.2.2,阿里源

  阿里源地址如下:http://mirrors.aliyun.com/ubuntu/

  源資料如下:

# 預設註釋了原始碼倉庫,如有需要可自行取消註釋
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

# 預釋出軟體源,不建議啟用
# deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

  

2.2.3,中科大源

  中科大源地址:https://mirrors.ustc.edu.cn/ubuntu/

  源資料如下:

# 預設註釋了原始碼倉庫,如有需要可自行取消註釋
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 預釋出軟體源,不建議啟用
# deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

  隨便選一個源,進入Ubuntu子系統,進行修改。

首先,備份原來的資料來源組態檔,就是對系統給的映象源進行備份,以防出問題。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  然後,修改資料來源組態檔。

sudo vim /etc/apt/sources.list

  進去後,註釋所有的,當然也可以清空內容,選擇一個源新增到檔案最前面或直接將官方的源註釋掉替換掉原檔案。

儲存後執行下面程式碼更新設定即完成換源操作。

sudo apt-get update

  

2.3 報錯1:由於沒有公鑰,無法驗證下列簽名

  報錯如下:

 

   原因分析:GPG是一個加密與解密的工具,在apt更新下載包時會進行加密解密,提供相關支援。如果沒有金鑰的話是無法進行驗證的。我們需要新增金鑰。

  解決方法:新增金鑰(keys後面新增的就是上面報錯NO_PUBKEY 後面的金鑰程式碼):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32(金鑰程式碼)

  執行成功,顯示如下;

 

   然後再sudo apt-get update即可。

  

2.4 警告1:Key is stored in legacy trusted.gpg keyring

  強迫症的我,看到warning就想給他幹掉。查詢了一些資料,大概是Ubuntu版本是22.04,更新源會出現這個問題。

 

     首先檢視key list,找到警告相關源的key,我們使用 apt-key 命令新增倉庫金鑰。首先,讓我們使用命令列出新增的金鑰:(此命令將列出所有新增的倉庫金鑰)

   

  正如你在上面的輸出中所看到的,那串長的(40 個字元)十六進位制值是倉庫金鑰。如果你希望 APT 包管理器停止信任該金鑰,只需使用以下命令將其刪除:

sudo apt-key del "3820 03C2 C8B7 B4AB 813E 915B 14E4 9429 73C6 2A1B"

  

  或者只指定最後八個字元

sudo apt-key del 557BEFF9

  

  另外如果發現列表中某些key的狀態是 [expired] 也可以用以下命令刪除

$ sudo apt-key del 557BEFF9

  我找了一個網友的key-list,裡面存在過期的,大概如下:

 

   所以,發現自己的key也存在過期的,可以刪除。

  完成!倉庫金鑰已被刪除。執行以下命令更新倉庫列表: 

 

 

3,安裝深度學習環境

  注意:這裡我測試了Windows11 和 Windows10,其中window11自帶cuda環境,不需要安裝,而Windows10 則需要進行cuda安裝。

3.1 安裝CUDA

  首先更新:

sudo apt-get upgrade
            
sudo apt-get update

  然後去 nvidia 下載cuda 

  Download linking: https://developer.nvidia.com/cuda-toolkit

  選擇適合自己的版本

 

   bash installer instructions as fellowing:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

    然後執行:

sudo sh cuda_11.7.1_515.65.01_linux.run

sudo sh cuda_11.7.1_515.65.01_linux.run -tmpdir /tmp

  

3.2 安裝Anaconda

  其實也可以按照miniconda,我這裡以miniconda為例。

  miniconda linux download linking: https://docs.conda.io/en/latest/miniconda.html

  進去複製適合自己系統的連結:

 

   如果不知道自己系統的版本,可以使用下面命令檢視:

   然後使用命令下載:

# 下載
curl https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh

# 安裝
sudo sh Miniconda3-py39_4.12.0-Linux-x86_64.sh

  安裝完成後,直接使用conda命令的話,如果顯示如下:

conda: command not found

  則可以使用下面命令直接啟動(需要每次都要啟動):

source ~/miniconda3/bin/activate

  也可以新增環境變數 進入 ~/.bashrc ,在最後一行新增:

export PATH=~/miniconda3/bin:$PATH

  推出重啟即可生效。

  conda換源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

  

3.3 安裝python環境(install pytorch)

  建立環境

conda create -n env_name python==3.9.13(版本號)

  進入環境

conda activate env_name

  進入pytorch 官網: https://pytorch.org/get-started/locally/

   可以使用命令安裝,也可以離線安裝。

 

 

 

4,怪異的bug(WSL無法啟動 \\wsl$\Ubuntu無法存取。你可能沒有許可權使用網路資源)

  報錯如下:

 

 

  為啥說是怪異呢,這裡湊巧,使用了  \\wsl.localhost\   ( \\wsl$ )點選發現可以進去,然後點選Linux按鈕,竟然進去了。