前言:前不久雙系統的ubantu被我自編譯的內核搞掛了,突然發現windows的子系統功能,相當於是一個官方虛擬機,比較方便,沒必要再裝雙系統了。
安裝教程
按照官方教程來走一般沒問題
步驟 1 - 啟用適用於 Linux 的 Windows 子系統
需要先啟用“適用於 Linux 的 Windows 子系統”可選功能,然后才能在 Windows 上安裝 Linux 分發。
以管理員身份打開 PowerShell 並運行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
步驟 2 - 檢查運行 WSL 2 的要求(win10處於最新版即可)
需要運行 Windows 10。
- 對於 x64 系統:版本 1903 或更高版本,采用 內部版本 18362 或更高版本。
- 對於 ARM64 系統:版本 2004 或更高版本,采用 內部版本 19041 或更高版本。
- 低於 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
若要檢查 Windows 版本及內部版本號,選擇 Windows 徽標鍵 + R,然后鍵入“winver”,選擇“確定”。 (或者在 Windows 命令提示符下輸入 ver
命令)。 更新到“設置”菜單中的最新 Windows 版本。
備注
如果運行的是 Windows 10 版本1903 或 1909,請在 Windows 菜單中打開“設置”,導航到“更新和安全性”,然后選擇“檢查更新”。 內部版本號必須是 18362.1049+ 或 18363.1049+,次要內部版本號需要高於 .1049。 閱讀詳細信息:WSL 2 即將支持 Windows 10 版本 1903 和 1909。 請參閱疑難解答說明。
步驟 3 - 啟用虛擬機功能
安裝 WSL 2 之前,必須啟用“虛擬機平台”可選功能。
以管理員身份打開 PowerShell 並運行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新啟動 計算機,以完成 WSL 安裝並更新到 WSL 2。
步驟 4 - 下載 Linux 內核更新包
-
下載最新包:
備注
如果使用的是 ARM64 計算機,請下載 ARM64 包。 如果不確定自己計算機的類型,請打開命令提示符或 PowerShell,並輸入:
systeminfo | find "System Type"
。 -
運行上一步中下載的更新包。 (雙擊以運行 - 系統將提示你提供提升的權限,選擇“是”以批准此安裝。)
安裝完成后,請繼續執行下一步 - 在安裝新的 Linux 分發時,將 WSL 2 設置為默認版本。 (如果希望將新的 Linux 安裝設置為 WSL 1,請跳過此步驟。)
步驟 5 - 將 WSL 2 設置為默認版本
打開 PowerShell,然后在安裝新的 Linux 發行版時運行以下命令,將 WSL 2 設置為默認版本:
wsl --set-default-version 2
步驟 6 - 安裝所選的 Linux 分發
-
打開 Microsoft Store,並選擇你偏好的 Linux 分發版。
單擊以下鏈接會打開每個分發版的 Microsoft Store 頁面:
-
在分發版的頁面中,選擇“獲取”。
首次啟動新安裝的 Linux 分發版時,將打開一個控制台窗口,系統會要求你等待一分鍾或兩分鍾,以便文件解壓縮並存儲到電腦上。未來的所有啟動時間應不到一秒。
然后,需要為新的 Linux 分發版創建用戶帳戶和密碼。(利用好這次機會,之后再改密碼設置不了簡單密碼了)
祝賀你!現已成功安裝並設置了與 Windows 操作系統完全集成的 Linux 分發!
安裝 Windows 終端(推薦)
Windows 終端可啟用多個選項卡(在多個 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之間快速切換)、創建鍵綁定(用於打開或關閉選項卡、復制粘貼等的快捷方式鍵)、使用搜索功能,以及使用自定義主題(配色方案、字體樣式和大小、背景圖像/模糊/透明度)。 了解詳細信息。
推薦理由主要是終端可以開啟多個命令行,但其實你可以多開Ubuntu應用來打開多個命令行。
終端可以點上方的下拉菜單打開多個系統的命令行,在右上角的通過在設置里改配置項里改順序。
注意事項
Error “0x80070032”
我后來遇到了報錯“0x80070032”,如果你也遇到了,就是在步驟3出問題了,可以手動打開Hyper-V功能
位置在“控制面板”-(查看方式:小圖標)“程序和功能”-“啟用或關閉Windows功能”-勾選“Hyper-V”並確定。之后重啟即可
推薦Linux版本如下
安裝的時候注意找指定版本,20版的還是兼容性不夠
虛擬機安裝位置
在C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
注意虛擬機必須安裝在C盤,否則會啟動失敗
訪問本機硬盤資源
本機資源全部自動掛載在了/mnt目錄下,非常方便,進入后可以看到自己的c d e f盤
使用CUDA
WSL跟傳統的Linux還是有區別的,不能參考Linux那一套去裝驅動
參考本博客中的下方內容。
優化方案
以下參考 昌南何許人 https://www.jianshu.com/p/dc32a75e2de4?utm_source=oschina-app
更換apt源
因為Linux子系統的apt源使用的是官方源,需要連接到國外的服務器。所以安裝一些軟件時下載會很慢,我們可以改用國內的鏡像apt源。
國內的鏡像源主要有:
阿里源
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
網易源
deb http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe
可以直接使用vim對 /etc/apt/sources.list文件進行修改。
先進行一下備份。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
然后
sudo vim /etc/apt/sources.list
選擇一個源添加到文件最前面或直接替換掉原文件。
保存后運行
sudo apt-get update
使用cmder更便捷使用子系統
下載網站https://github.com/cmderdev/cmder/releases/
推薦下載cmder_mini.zip ,完整版與mini版的功能是一樣的,只是完整版中多了bash。因為我們已經安裝了bash所以直接用mini版的就可以了。
打開cmder直接進入的是cmd,我們可以在設置中更改它的startup方式,選擇command line ,填入bash -cur_console:p
。
保存設置,下次打開時就直接進入Linux子系統了。

比如在桌面點擊右鍵,選擇cmder here,這樣打開cmder就可以直接進入桌面的路徑了。
具體方法是:把cmder路徑(比如D:\Program Files\cmder_mini)添加到環境變量的Path里,保存之后就可以用win+R的方式打開cmder了。
接下來,以管理員方式打開cmd,輸入命令 Cmder.exe /REGISTER ALL
。之后就可以直接在右鍵中打開cmde了。
在Windows10子系統里安裝運行桌面(xUbuntu)
參考https://www.cnblogs.com/lee-li/p/11220533.html
如果報錯 xfce4-session: Cannot open display: .
自己踩坑之后的解決辦法,推薦按照我的順序來
- 安裝好VcXsrv,啟動桌面上的XLaunch
- 啟動,如圖選擇(這個沒有上方的置頂工具欄)
- 勾選禁用訪問控制,其他的默認就行
- 此時桌面上就有一個黑色窗口
- 依次執行
sudo apt-get update sudo apt-get upgrade
-
安裝xfce4
sudo apt-get install xfce4
- 安裝xubuntu(安裝很漫長)
sudo apt-get install xubuntu-desktop
如果報錯 Errors were encountered while processing
參考https://blog.csdn.net/qingfengxiaosong/article/details/87889995
- 配置
DISPLAY
環境變量
由於WSL2
其實是用Hyper-V
技術實現的一個虛擬機,和WSL1
的工作原理不一樣,因此如果使用之前網上的方法直接設置DISPLAY=:0.0
的話,啟動xfce4的時候會出現下面的錯誤:
lpwm@DESKTOP-FI0NTIP:~$ startxfce4
/usr/bin/startxfce4: X server already running on display :0.0
xrdb: Connection refused
xrdb: Can't open display ':0.0' Unable to init server: Could not connect: Connection refused xfce4-session: Cannot open display: . Type 'xfce4-session --help' for usage.
- 正確的配置姿勢
- 輸入
$ sudo vim /etc/resolv.conf
會顯示nameserver后面的地址就是Windows系統虛擬網卡的地址,記一下,假設是192.168.112.1
取消下面兩行內容的注釋,禁用自動重新生成配置文件,否則重啟后這個地址會變
[network] generateResolvConf = false
在bashrc文件最后追加顯示信息(ip是前一步查看的)
echo 'export DISPLAY=export DISPLAY=192.168.112.1:0' >> ~/.bashrc
添加后需要在命令行使之生效
source ~/.bashrc
啟動xfce4(確保已啟動XLaunch)會跳出來一大堆信息,同時XLaunch中開始了初始化提示
$ startxfce4
目前看起來xfc4界面會模糊,因為默認分辨率太低,我們可以修改一下
參考https://blog.csdn.net/opportunityl/article/details/107090401
#輸入以下查看1080p配置
# cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
# 查看顯示器信息,注意Virtual1所在xxx connected的位置是顯示器名稱
# xrandr
Screen 0: minimum 0 x 0, current 1920 x 1080, maximum 32767 x 32767
Virtual1 connected primary 1920x1080+0+0 389mm x 228mm
1920x1080 0.00*
1920x1080_60.00 59.96
#設置分辨率
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync #后面這一串是之前cvt得到的Modeline的信息
xrandr --addmode Virtual1 "1920x1080_60.00" #Virtual1是xrandr得到的顯示器名稱
xrandr --output default --mode "1920x1080_60.00"
#然后重啟xfce4即可,不過這樣不是永久的,我們可以保存命令到profile文件中。
echo 'xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync' >> ~/.profile
echo 'xrandr --addmode default "1920x1080_60.00"' >> ~/.profile
echo 'xrandr --output default --mode "1920x1080_60.00"' >> ~/.profile
如果還是模糊,那是windows的鍋:
右鍵點擊XLaunch的快捷方式或者可執行文件 –> “屬性” –> “兼容性” – > “更改高DPI設置” –> 勾選“替代高DPI縮放行為”。
應用后重啟XLaunch,瞬間清晰了!
xfce的右上角界面也可以自定義顯示內容,參考https://blog.csdn.net/zhousmq/article/details/103772684
在WSL 2中使用CUDA安裝流程
參考https://blog.csdn.net/qq_20291997/article/details/106897324
和官方文檔
https://docs.microsoft.com/zh-cn/windows/win32/direct3d12/gpu-cuda-in-wsl
加入windows預覽體驗計划
電腦登陸自己的微軟賬戶,打開“系統設置-更新和安全-Windows預覽體驗計划”點擊“開始”以加入計划
windows預覽體驗計划空白,沒有“開始按鈕”的話
嘗試運行一下下方鏈接中所描述的powershell命令,檢查一下Datacollect這一項,之后看是否正常。
https://www.msftnext.com/fix-blank-or-empty-insider-program-settings-page-in-windows-10/
一定要選取Dev通道(快速通道),隨后保存並按照提示重啟,隨后檢查更新即可自動安裝最新的快速預覽版系統。(一定要安裝全部更新)
需要確保win版本高於20150,可在運行(win+R)中執行winver進行確認。
安裝wsl2
由於我們之前已經安裝了wsl2的ubuntu18.04版本,所以直接下一步。
沒安裝的話參考上面的幾個參考鏈接。
以管理員身份打開 PowerShell 並運行:
wsl --list --verbose
如果返回的結果中version下的值為2,WSL2就安裝成功了。
安裝預覽版驅動
wsl的驅動跟普通的linux版驅動不一樣!請勿在 WSL 中安裝任何 Linux 顯示驅動程序!
在英偉達下載與安裝支持WSL的GPU驅動。Windows 顯示驅動程序將同時安裝本機 Windows 和 WSL 支持的常規驅動程序組件。
記得按照自己的GPU產品選擇對應的驅動,該步驟需要Nvidia賬戶,登陸之后頁面中有下載鏈接,下載后安裝即可。
在子系統中安裝CUDA
先在子系統中安裝必要的工具,特別是gcc
sudo apt update
sudo apt install build-essential
前往Nvidia官網下載對應的cuda包,自己用什么版本就下什么版本。
比如我下載10.2版本,按照這個方法就是通過wget下載一個.run文件,然后在子系統里運行。
安裝cuda時千萬記住不要安裝驅動,也就是第一個X要取消,不要安裝驅動,不要安裝驅動!!!!其余選項該怎么裝怎么裝,就是不要裝驅動!!!!Driver相關一定要N或者X掉!!!!!!
安裝后一定有如下提示,Driver: Not Selected。
如果提示缺少相應的依賴庫,直接執行如下代碼自動安裝相應的依賴庫
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安裝完了並不能通過nvidia-smi查看顯卡信息,但是可以通過下面命令查看
cat /usr/local/cuda/version.txt
(如果沒有nvidia-smi命令,是因為沒安裝CUDA Driver API Version,可以通過命令安裝 apt install nvidia-utils-390 ,要注意這個跟CUDA Runtime API是不一樣的,后者就是我們裝的10.2版本的cuda toolkit)
我們也可以安裝pytorch確認cuda的使用是否正常
安裝Pytorch
參考官網的安裝鏈接,注意cuda版本
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
我在下載的時候遇到了pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2下載失敗
Downloading and Extracting Packages pytorch-1.7.1 | 575.5 MB | ##6 | 4% CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way.
通過提示可以手動下載
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2
這個文件,然后運行本地安裝
conda install --use-local pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2
安裝好后再執行
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
這樣應該就能裝好了
然后測試一下
python Python 3.8.5 (default, Sep 4 2020, 07:30:14) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> print(torch.version.cuda) 10.2 >>> exit()