WSL 簡介
WSL 全名為 Windows subsystem Linux,是微軟 Hyper-V 虛擬機器裏的一個輕量級子系統,可以在 Windows 裏跑 Linux 系統,而且支援 GPU-PV。GPU-PV 稱為顯卡虛擬化,是在 Linux 虛擬機上存取 Windows 宿主機硬体 GPU 的一種技術。這對沒有多餘機器安裝實体 Linux 的人而言,是蠻不錯的選擇。
WSL 僅支援 Windows 10/Windows 11 的 Professional(專業版) 及 EnterPrise(企業版),若是Home(家用版),則無法使用。
安裝 WSL
以系統管理員身份啟動 Dos 視窗命令提示 ,執行如下指令安裝 wsl 系統
wsl --install
上面的指令除了安裝 wsl 子系統外,重新開機後,還會自動安裝 ubuntu 最新的版本。安裝 ubuntu 時需一段時間,請耐心請待。
安裝ubuntu 時,若出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,請參考本篇最下面的核心隔離,然後重新開機,再執行如下指令
wsl --install -d ubuntu
GPU-PV
WSL2 支援 GPU-PV (顯卡虛擬化),所以 WSL2 一裝好,除了 ubuntu 一併裝進去,dxgkrnl 驅動程式也會自動裝好,馬上可以使用 “nvidia-smi” 這個指令測試。
nvidia-smi Fri Apr 19 14:48:15 2024 +-------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.76.01 Driver Version: 552.22 CUDA Version: 12.4 | |-------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=====================================+========================+======================| | 0 NVIDIA GeForce RTX 3080 Ti On | 00000000:01:00.0 On | N/A | | 53% 43C P8 60W / 400W | 1758MiB / 12288MiB | 13% Default | | | | N/A | +-------------------------------------+------------------------+----------------------+ +-------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=====================================================================================| | No running processes found | +-------------------------------------------------------------------------------------+
有看到上面的訊息,表示GPU-PV 驅動程式已經安裝完成。
與 VMware相衝
wsl 一打開,市面上常用的 vmware, viturebox 馬上失效,這是因為 “Windows 子系統 Linux 版” 及 “虛擬機器平台” 被打開了,造成 VMware 的 Vituralize Intel VT-x/EPT 無法啟用。請由 “開始/Windows 系統/控制台/程式集/開啟或關閉 Windows 功能” 進入查看。
Vituralize Intel VT-x/EPT 加速虛擬機的技術,若要重新啟用 VMware的 Vituralize Intel VT-x/EPT,請將如下紅線框起來的功能全部都取消。
當然上面的功能關掉,WSL 就無法用。所以如果想要 VMware 與 WSL 共存並用,可以考慮將 VMware的 Virtualize Intel VT-X/EPT 取消,這樣VMware 就又可以執行了,只是速度可能會比較慢。
啟動 Ubuntu
開啟 Dos 視窗,輸入如下指令即可
wsl -d ubuntu
移除 Ubuntu
移除 ubuntu 請執行如下指令。
wsl --unregister ubuntu
手動安裝 Ubuntu
如果要重新安裝或手動安裝其它 ubuntu,進入 Dos 視窗輸入
wsl --install -d ubuntu
移除 WSL
要移除 WSL 請先確認如下步驟
wsl --unregister ubuntu
wsl --shutdown
wsl --uninstall
控制台關掉 windows 子系統 Linux
重新開機
預設安裝路徑
WSL 預設安裝在 C 碟如下目錄
C:\Users\mahal\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState
搬移安裝位置
通常我們不會把 utuntu 安裝在 C 碟,所以要作搬移的動作,請依續執行如下指令
wsl --shutdown wsl --export Ubuntu d:\ubuntu.tar wsl --unregister Ubuntu d: mkdir wsl wsl --import Ubuntu d:\wsl d:\ubuntu.tar del d:\ubuntu.tar
搬移後打開 wsl 進入 ubuntu,卻發現登入的帳號是 root。
請在 開始 按右鍵,執行 regedit,依序進入如下位置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{xxxxxx}
然後將 DefaultUid 改成十進位的 1000,最後重新執行 wsl 即會用一般使用者登入。
ubuntu 初始設定
一開始要初始的設定如下
sudo apt-get update sudo apt-get upgrade sudo apt-get install net-tools network-manager ubuntu-drivers-common
sudo apt-get install nvidia-cuda-toolkit
核心隔離
WSL2 有時會出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,網路常教大家切換到 WSL1 即可,但這樣就無法支援 GPU-PV,唯一的方法就是重新安裝 Windows,這應該是微軟的嚴重bug。
若緊急狀況不能重新安裝 Windows ,可以將核心隔離暫時打開,就可以跑 wsl2 了,但核心隔離一打開,整台電腦的效能就會降低很多,由其是 “雷電” 或 “BlueStacks” 等 Android 模擬器更為嚴重,而且 VMware 及 VirtualBox 就無法執行了。所以想要執行其它虛擬器,核心隔離就要再度手動關上,然後重心開機。
開啟核心隔離的方法,請由 Windows 安全性/裝置安全性/核心隔離/記憶体完整性將之打開,如下圖所示