為什么要使用WSL
- 本地調(diào)試/測(cè)試服務(wù)器程序
工作電腦是Win10系統(tǒng),但目前大部分公司的服務(wù)器都是linux系統(tǒng),某些要部署到服務(wù)器上的程序需要在本地進(jìn)行測(cè)試時(shí),因啟動(dòng)腳本都是采用linux shell編寫的,而且通過git下載到本地的腳本文件會(huì)自動(dòng)轉(zhuǎn)為windows的換行模式,使用git的bash也不能正確的啟動(dòng)這些腳本,給調(diào)試帶來不便。 - 學(xué)習(xí)linux命令
作為互聯(lián)網(wǎng)人免不了要做一些服務(wù)器的部署或運(yùn)維操作,一些常用的linux命令還是需要了解和掌握的。
在這些情況下,安裝雙系統(tǒng)的話雙系統(tǒng)需要切換使用,不能同時(shí)使用,不能很好的滿足要求。那么有沒有辦法在windows中同時(shí)使用linux系統(tǒng)呢,這就是WSL提供的功能。
WSL初探
WSL(Windows Subsystem for Linux),適用于 Linux 的 Windows 子系統(tǒng),可讓開發(fā)人員按原樣運(yùn)行 GNU/Linux 環(huán)境 - 包括大多數(shù)命令行工具、實(shí)用工具和應(yīng)用程序 - 且不會(huì)產(chǎn)生傳統(tǒng)虛擬機(jī)或雙啟動(dòng)設(shè)置開銷。
在WSL中可以:
- 安裝偏好的Linux分發(fā)版,Ubuntu/Red Hat/CentOS/Debian。
- 運(yùn)行常用的命令行工具(例如grep、sed、awk等)。
- 運(yùn)行Bash shell腳本和Linux命令行應(yīng)用程序。
- 使用Linux分發(fā)包管理器安裝其他軟件。
- 使用類似于Unix的命令行shell調(diào)用Windows應(yīng)用程序。
- 在Windows上調(diào)用Linux應(yīng)用程序。
簡(jiǎn)而言之,使用WSL相當(dāng)于在Windows中內(nèi)嵌了一個(gè)Linux系統(tǒng),它與所屬的Windows系統(tǒng)可以互相訪問本地系統(tǒng),可以使用Windows的網(wǎng)絡(luò)訪問互聯(lián)網(wǎng),繼承Windows中配置的hosts等,除了Linux GUI操作以外的其他操作,都可以在wsl中使用。
WSL當(dāng)前有兩個(gè)版本,WSL 1和WSL 2,目前的最新版本是2,相對(duì)于版本1,WSL 2主要的區(qū)別是提高了文件系統(tǒng)的性能和系統(tǒng)調(diào)用的兼容性。推薦使用WSL 2。
WSL 2和1的區(qū)別和新增功能詳情參考:比較 WSL 1 和 WSL 2 | Microsoft Docs
安裝WSL
1. 啟用WSL
需要先在Windows中啟用“適用于Linux的Windows子系統(tǒng)”。
打開“控制面板”->“程序和功能”,在左側(cè)欄選擇“啟用或關(guān)閉Windows功能”,在打開的對(duì)話框中找到“適用于Linux的Windows子系統(tǒng)”并打勾,點(diǎn)擊【確定】關(guān)閉對(duì)話框,等待系統(tǒng)安裝新功能完成,并按提示重啟電腦。

也可以通過命令行來啟用該功能:
- 按“Win+X”鍵,選擇“Windows PowerShell(管理員)”。
- 在打開的Power Shell中運(yùn)行以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2. 更新到WSL 2
上一步完成后,系統(tǒng)內(nèi)已經(jīng)安裝好了WSL 1,如果不想使用WSL 2,可以直接跳到“3. 安裝Linux分發(fā)版”。
WSL 2要求Win10 版本不能低于1909(18363.1049),如果系統(tǒng)版本低于此版本,請(qǐng)先升級(jí)Win10系統(tǒng)。
2.1 啟用虛擬機(jī)功能
安裝 WSL 2 之前,必須啟用“虛擬機(jī)平臺(tái)”可選功能。 計(jì)算機(jī)需要虛擬化功能才能使用此功能。
有兩種方式可以啟用虛擬機(jī)功能:
- 同步驟1“啟用WSL”功能一樣,通過“啟用或關(guān)閉Windows功能”對(duì)話框,勾選“虛擬機(jī)平臺(tái)”,確定后等待安裝或重啟。
- 以管理員身份打開Power Shell并運(yùn)行以下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.2 更新WSL 2
自動(dòng)方式:通過Windows更新,下載安裝WSL更新。
手動(dòng)方式:下載并安裝 適用于 x64 計(jì)算機(jī)的 WSL2 Linux 內(nèi)核更新包
安裝完成后可能需要重啟才能生效。
2.3 將WSL 2設(shè)置為默認(rèn)版本
將WSL 2設(shè)置為WSL的默認(rèn)版本,以便在安裝或?qū)隠inux分發(fā)版的時(shí)候使用WSL 2。
打開命令提示符或Power Shell,輸入以下命令并運(yùn)行:
wsl --set-default-version 2
3. 安裝Linux分發(fā)版
打開“Microsoft Store”,在搜索框中輸入“l(fā)inux”,選擇偏好的Linux分發(fā)版并下載安裝。
目前商店內(nèi)的Linux分發(fā)版還不太多,Ubuntu 20.04 LTS是一個(gè)不錯(cuò)的選擇。

安裝完成后可以通過wsl查看分發(fā)版是否可用:
wsl -l -v

上圖表明Ubuntu-20.04分發(fā)版已安裝好,使用的是WSL 2,“*”號(hào)表示是默認(rèn)的分發(fā)版,可以不用輸入名稱通過“wsl”命令直接啟動(dòng)。
4. 啟動(dòng)Linux
安裝分發(fā)版后,在命令提示符或Power Shell中輸入“wsl”命令可以直接啟動(dòng)默認(rèn)的分發(fā)版,啟動(dòng)后即進(jìn)入分發(fā)版的shell中,shell的當(dāng)前工作目錄為啟動(dòng)時(shí)的windows命令提示符或Power Shell的當(dāng)前工作目錄在Linux中的表示形式,如下圖:

上圖表示啟動(dòng)默認(rèn)的Linux分發(fā)版(當(dāng)前默認(rèn)的分發(fā)版為Ubuntu-20.04),并且以root用戶的身份登錄,當(dāng)前工作目錄為啟動(dòng)時(shí)的E盤中的workspace目錄。
Windows文件系統(tǒng)中的各個(gè)盤均掛載到Linux分發(fā)版的
/mnt目錄下,例如C盤掛在/mnt/c,D盤掛在/mnt/d,以此類推,可以方便的在wsl中在兩個(gè)系統(tǒng)間傳輸文件。
小提示
- 有時(shí)候進(jìn)程管理器中會(huì)發(fā)現(xiàn)一個(gè)“Vmmem”的進(jìn)程占用比較多的內(nèi)存,且不能通過進(jìn)程管理器結(jié)束。這個(gè)進(jìn)程是wsl的一個(gè)內(nèi)存管理進(jìn)程,通常關(guān)閉了wsl的窗口后會(huì)自動(dòng)終止,如果沒有終止,可以通過
wsl --shutdown指令來結(jié)束該進(jìn)程。