參考資料:Xfce4 Desktop Environment and X Server for Ubuntu on WSL 2
2016年發(fā)布的原始Windows Linux子系統(tǒng)(WSL)添加了 Bash shell 并能夠在
Windows 中運行基于 Ubuntu,openSUSE,SUSE Enterprise Linux,Debian 或 Kali
Linux 的用戶空間。但是,沒有真正的Linux內(nèi)核在操作系統(tǒng)上運行。微軟的仿真層將 Linux 系統(tǒng)調(diào)用轉(zhuǎn)換為 Windows 系統(tǒng)調(diào)用。想要在 Windows 上測試和編譯 Linux 應(yīng)用程序的開發(fā)人員大為歡迎 WSL,因為這意味著他們可以使用 GNU 工具和實用程序而無需雙啟動或VM。與VM相比,除了文件系統(tǒng) I / O 之外,WSL 的 CPU 性能接近本地。由于 WSL 沒有真正的 Linux 內(nèi)核,因此在 WSL 中運行的Linux應(yīng)用程序因處理文件元數(shù)據(jù)的 Windows 鉤子而成為瓶頸,比原始 Linux 文件系統(tǒng)要慢得多。而且,某些應(yīng)用程序存在兼容性問題,因為它們依賴的內(nèi)核服務(wù)不可用。
WSL2 是為運行于 2016 年 5 月的 Windows Insider 計劃中的 Fast Ring 用戶而推出的 Windows 子系統(tǒng)。WSL2 是運行的實用程序 VM,它不依賴于內(nèi)核仿真,而是開源的完整 Linux 內(nèi)核。在 Windows 之上。VM 難道不意味著 WSL2 會像使用 Hyper-V 在 Windows 上運行 Linux VM 一樣遭受性能損失嗎?為解決此問題,Microsoft 將 WSL2 視為使用 Hyper-V 功能子集的高度優(yōu)化的 VM,該功能可提供接近本機的 CPU 和文件系統(tǒng) I / O 性能。到目前為止,大多數(shù) Beta 測試人員都觀察到 WSL2 的性能可與 WSL1 媲美。使用本地Linux內(nèi)核,WSL2 擁有近乎本機的文件系統(tǒng)性能,這促使 Docker 宣布其即將推出的 Windows 版 Docker 將利用 WSL2 代替當(dāng)前在 Hyper-V 中運行 Linux 容器所依賴的 Moby Linux VM。您不再需要等待 Docker for Windows 引導(dǎo)其 VM 的啟動。根據(jù) Docker 的說法,WSL2 和 Docker 守護程序會在其開發(fā)筆記本電腦上在2秒內(nèi)啟動,這意味著 WSL2 可以在啟動容器的同時啟動(而不是在啟動時啟動)。另外一個好處是,從容器到 Windows 主機的綁定裝載將不再依賴 Samba 服務(wù),而是由 WSL2 以本機方式進(jìn)行處理,性能要好得多。
安裝 WSL2 不需要啟用 Hyper-V,只需啟用 Linux 的 Windows 子系統(tǒng)和 Windows 可選功能中的虛擬機平臺。只要您運行的是 Insider Preview 內(nèi)部版本 18917 或更高版本,您就會看到這些功能可用-包括 Windows 10 Home。盡管 WSL2 旨在作為開發(fā)人員的命令行工具,但是桌面環(huán)境可以在 WSL2 內(nèi)運行,并且您可以使用 Windows 的X Server(例如 Xming或 VcXSrv)來偵聽 Linux 中的 X11(圖形)程序。Xfce4 是一個輕量級的桌面環(huán)境,開發(fā)人員已經(jīng)能夠使用 WSL 和 WSL2。WSL2 需要 Insider Preview 內(nèi)部版本 18917 及更高版本。 要檢查您當(dāng)前正在運行的 Windows 構(gòu)建版本,請打開 Powershell 窗口并運行命令 winver
。如果內(nèi)部版本號> 18917,就可以開始使用。
接下來,打開 Administrator Powershell 窗口并運行以下命令。啟用每個功能都需要重新啟動,因此請保存所有工作并關(guān)閉其他應(yīng)用程序。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
接下來,打開 Microsoft Store 并安裝您選擇的發(fā)行版。我們使用Ubuntu 20.04 LTS,但您可以選擇任何與 WSL 兼容的發(fā)行版。
下載完成后,從“開始”菜單打開 Ubuntu Shell 以完成 Ubuntu 的安裝。系統(tǒng)將提示您提供 Linux 用戶名和密碼。最初,WSL 將在不利用新功能的原始版本 WSL1 下運行。現(xiàn)在打開 Powershell 窗口并運行以下命令。第一個命令列出了已安裝的 Linux 的 WSL 發(fā)行版,第二個命令將 Ubuntu 從 WSL1 轉(zhuǎn)換為WSL2。如果希望以后安裝的所有 WSL 發(fā)行版默認(rèn)使用 WSL2 功能,則第三條命令是可選的。
wsl --list --verbose
wsl --set-version Ubuntu-18.04 2
wsl --set-default version 2
如果 WSL 到版本2的轉(zhuǎn)換失敗,并顯示錯誤消息,例如“轉(zhuǎn)換失敗”或“錯誤0x03a001a”,則由于虛擬磁盤系統(tǒng)限制,無法完成請求的操作。虛擬磁盤文件必須未壓縮和未加密,并且不能稀疏。”,請嘗試檢查以下內(nèi)容。
- 重新啟動系統(tǒng)。
- 必須在您的BIOS 中啟用虛擬化擴展,例如 Intel VT-x 或 AMD-V。
- 必須為 Ubuntu AppData 文件夾禁用壓縮和加密(請參閱 Github Issue #4103)。 路徑看起來像這樣。
%localappdata%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
1 設(shè)置圖形界面
1.1 安裝 choco
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
1.2 使用 choco 安裝 VcXsrv
choco install vcxsrv
配置防火墻,外界網(wǎng)絡(luò)訪問 VcXsrv 的端口
2 啟動 VcXsrv
Display settings: One large window
How to start clients: Start no client
Disable access control: Yes:一定要選這一項,WSL 2 相當(dāng)于遠(yuǎn)程(外界)網(wǎng)絡(luò)了,和 Windows 10 是分開的,和 WSL 1 不一樣
完成后,單擊“完成”以啟動X服務(wù)器。如果Windows防火墻提示,請確保允許從公用網(wǎng)絡(luò)和專用網(wǎng)絡(luò)都連接到 VcXSrv。雙擊系統(tǒng)任務(wù)欄中的X圖標(biāo),將 VcXSrv 帶入前臺。現(xiàn)在,您將看到黑屏,因為 Linux 中還沒有運行圖形化的 X11 應(yīng)用程序。
3 wsl 安裝 xfce4
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install xfce4
sudo apt install xfce4-session
安裝完之后需要稍微配置一下:
echo "export DISPLAY=:0.0">> ~/.bashrc
或者
echo "export DISPLAY=localhost:0">> ~/.bashrc
如果報錯,則需要在 PowerShell 獲取 IP:
ipconfig
在 WSL 中修改:
echo "export DISPLAY=IP:0">> ~/.bashrc
使設(shè)定生效:
source ~/.bashrc
4 時鐘測試
sudo apt install x11-apps
啟動:
xclock
效果:
5 啟動 Ubuntu 桌面
startxfce4
或者
xfce4-session
效果: