適用於 Linux 的 Windows 子系統教程


前言:前不久雙系統的ubantu被我自編譯的內核搞掛了,突然發現windows的子系統功能,相當於是一個官方虛擬機,比較方便,沒必要再裝雙系統了。

 

安裝教程

按照官方教程來走一般沒問題

適用於 Linux 的 Windows 子系統安裝指南 (Windows 10)

步驟 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 內核更新包

  1. 下載最新包:

     備注

    如果使用的是 ARM64 計算機,請下載 ARM64 包。 如果不確定自己計算機的類型,請打開命令提示符或 PowerShell,並輸入:systeminfo | find "System Type"

  2. 運行上一步中下載的更新包。 (雙擊以運行 - 系統將提示你提供提升的權限,選擇“是”以批准此安裝。)

安裝完成后,請繼續執行下一步 - 在安裝新的 Linux 分發時,將 WSL 2 設置為默認版本。 (如果希望將新的 Linux 安裝設置為 WSL 1,請跳過此步驟。)

 備注

有關詳細信息,請參閱 Windows 命令行博客上的文章對更新 WSL2 Linux 內核的更改

 

步驟 5 - 將 WSL 2 設置為默認版本

打開 PowerShell,然后在安裝新的 Linux 發行版時運行以下命令,將 WSL 2 設置為默認版本:

wsl --set-default-version 2

 

步驟 6 - 安裝所選的 Linux 分發

  1. 打開 Microsoft Store,並選擇你偏好的 Linux 分發版。

    Microsoft Store 中的 Linux 分發版的視圖

    單擊以下鏈接會打開每個分發版的 Microsoft Store 頁面:

  2. 在分發版的頁面中,選擇“獲取”。

首次啟動新安裝的 Linux 分發版時,將打開一個控制台窗口,系統會要求你等待一分鍾或兩分鍾,以便文件解壓縮並存儲到電腦上。未來的所有啟動時間應不到一秒。

然后,需要為新的 Linux 分發版創建用戶帳戶和密碼。(利用好這次機會,之后再改密碼設置不了簡單密碼了)

祝賀你!現已成功安裝並設置了與 Windows 操作系統完全集成的 Linux 分發!

 

安裝 Windows 終端(推薦)

Windows 終端可啟用多個選項卡(在多個 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之間快速切換)、創建鍵綁定(用於打開或關閉選項卡、復制粘貼等的快捷方式鍵)、使用搜索功能,以及使用自定義主題(配色方案、字體樣式和大小、背景圖像/模糊/透明度)。 了解詳細信息。

安裝 Windows 終端

推薦理由主要是終端可以開啟多個命令行,但其實你可以多開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

sjtu(上海交通大學更新服務器)
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添加進win10的環境變量中,這樣我們就可以像在Linux系統中那樣,在任意文件目錄下直接右鍵打開cmder並進入當前路徑了。
比如在桌面點擊右鍵,選擇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: .

參考https://zhuanlan.zhihu.com/p/150555651

自己踩坑之后的解決辦法,推薦按照我的順序來

 

  • 安裝好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

https://docs.nvidia.com/cuda/wsl-user-guide/index.html

加入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()

 


免責聲明!

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



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