WSL
WSL 全名為 Windows subsystem Linux,是微軟 Hyper-V 虛擬機器裏的一個輕量級子系統。
WSL 僅支援 Windows 10/Windows 11 的 Professional(專業版) 及 EnterPrise(企業版),若是Home(家用版),則無法使用。
WSL 使用指令簡化 Hyper-V 的設定,但因為無法設定橋接器,所以只能說是個玩具。若真的要安裝Linux 伺服器,不太建議使用些法,所以此篇僅作記錄用。
啟動 hyper-v & vbs
如果 Win11 把 hyper-v 及 vbs 關閉,啟動 hyper-v 的最快的方式就是安裝 docker。
Mirrored Networking
wsl 的網址預設為 NAT,會自行產生子網域。wsl 沒有橋接器(bridge),所以無法設定跟宿主機同網域。但 wsl 有 Mirrored Networking,可將 Windows 的 IP 鏡射到 Linux,讓 Windows 及 Linux 共同使用同一個 ip。
請在 C:\user\登入者\ 下新增 .wslconfig 檔案,然後輸入如下設定。
[wsl2] networkingMode=mirrored
重啟 wsl 即可生效。
wsl 裏的 ip 會跟 Win11 一模一樣,而且此 ip 無法更改。
安裝 WSL
第一次安裝時,以系統管理員身份啟動 DOS 視窗命令提示 ,執行如下指令安裝 wsl 系統
第一次安裝時一定要用系統管理員身份,因為需開啟 Windows 的「虛擬機器平台」及「適用於 Linux 的 Windows 子系統」。第二次安裝時,就不需系統管理員。
上面的指令會自動安裝 Ubuntu 最新的版本。安裝 Ubuntu 時需一段時間,請耐心請待。

安裝ubuntu 時,若出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,請參考本篇最下面的核心隔離,然後重新開機,再執行如下指令
wsl --install -d ubuntu
安裝後的虛擬磁碟檔案置於如下
C:\Users\mahal\AppData\Local\wsl\{xxx-xxx-xxx-xxx}
sudo 免密碼
sudo 是切換到最高權限的方法,但每次 sudo 都要輸入密碼,所以更改如下設定就可省略密碼的輸入
sudo visudo
最後面加入如下設定
帳號 ALL=(ALL) NOPASSWD:ALL
Ctrl + o 儲存,Ctrl + x 離開
安裝常用套件
使用如下指令安裝常用套件
sudo apt install net-tools vim openssh-server
啟動 ssh
ssh 可以在 Windows 宿主機使用 putty 對其控制,首先需設定 /etc/ssh/sshd_config 檔案,將
ListenAddress 0.0.0.0 前面的 #註解拿掉
然後執行如下指令
sudo systemctl enable ssh sudo systemctl restart ssh
在 Windows 下,防火牆必需將 port 22 開通,若還不能連線,需刪除Windows 下的 C:\Users\mahal\.ssh\known_hosts。
請注意,ssh xxx@localhost、ssh xxx@xxx.ddns.net都可以連線,但 ssh xxx@192.168.1.2 是無法使用虛ip 連線的,因為整体連線還在在 Windows 裏。
啟動 wsl
使用如下指令啟動 Ubuntu
wsl -d ubuntu 或 wsl --distribution Ubuntu
-d 就是 –distribution,指令要啟動那一個 Linux 發行版本
查詢安裝那些版本
使用如下指令查詢電腦安裝了那些版本
wsl -l 結果 : PS C:\Users\mahal> wsl -l Windows 子系統 Linux 版發佈: Ubuntu (預設)
退出 wsl
wsl –shutdown 會關閉所有的 wsl 發行版本。
wsl --shutdown
若在 Linux 下執行 sudo poweroff,則只會關閉目前的發行版本。
刪除已安裝的 Linux 版本
使用 — unregister xxx 刪除已安裝的 Linux 版本
wsl --unregister Ubuntu
上述指令會把 C:\Users\mahal\AppData\Local\wsl\{xxx-xxx}的虛擬磁碟檔案一併刪除,所以完全無法復原
搬移安裝位置
通常我們不會把 utuntu 安裝在 C 碟,所以要作搬移的動作,請依續執行如下指令
搬移後打開 wsl 進入 ubuntu,卻發現登入的帳號是 root。
請在 開始 按右鍵,執行 regedit,依序進入如下位置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{xxxxxx}
然後將 DefaultUid 改成十進位的 1000,最後重新執行 wsl 即會用一般使用者登入。
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,進入 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
ubuntu 初始設定
一開始要初始的設定如下
核心隔離
WSL2 有時會出現 WslRegisterDistribution failed with error: 0x80370102 錯誤,網路常教大家切換到 WSL1 即可,但這樣就無法支援 GPU-PV,唯一的方法就是重新安裝 Windows,這應該是微軟的嚴重bug。
若緊急狀況不能重新安裝 Windows ,可以將核心隔離暫時開啟,就可以跑 wsl2 了,但核心隔離一但開啟,整台電腦的效能就會降低很多,由其是 “雷電” 或 “BlueStacks” 等 Android 模擬器更為嚴重,而且 VMware 及 VirtualBox 就無法執行了。所以想要執行其它虛擬器,核心隔離就要再度手動關閉,然後重心開機。
開啟核心隔離的方法,請由 Windows 安全性/裝置安全性/核心隔離/記憶体完整性將之打開,如下圖所示

