運行 Windows 10(版本 21H1 19043.1415)。
我前段時間啟用了所需的 Windows WSL 功能。從那時起,我多次使用 Linux 軟體套件在 WSL1 和 WSL2 之間來回切換。
我使用 Docker 一段時間了。 Docker 最近的更新似乎將 Windows 上的 Docker 從 WSL1 轉換為 WSL2。
Ubuntu 剛從 PC 上卸載。檢查 WSL 的狀態:
wsl --list --verbose
傳回的狀態顯示:
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 已停止 | 2 |
docker-桌面 | 已停止 | 2 |
問題: Linux 的 Windows 子系統版本 Ubuntu 20.04 是否可以安裝為 WSL1?這意味著 PC 的 WSL1 和 WSL2 都處於活動狀態?
答案1
是的。 Windows 10 可以同時啟動 WSL1 和 WSL2。
在探索 Microsoft 的 WSL 基本命令後,我了解到 Linux 的 Windows 子系統版本可以輕鬆地從 WSL1 轉換為 WSL2,反之亦然。
https://docs.microsoft.com/en-us/windows/wsl/basic-commands
下面演示了 Ubuntu(或其他發行版)如何從 WSL1-WSL2 來回轉換。所有命令都是在 Windows 終端機(新的 PowerShell)中給予的命令。要轉換的 PowerShell 指令是:
wsl --set-version ubuntu 1
wsl --set-version ubuntu 2
Ubuntu(剛剛)從 Microsoft Store(再次)重新安裝。使用者名稱和密碼已建立。尚未完成 sudo 更新/升級。檢查 WSL 狀態並顯示新安裝(正在執行)的 Ubuntu 已安裝為 WSL2。
PS C:\Users\prior> wsl --list --verbose
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 已停止 | 2 |
docker-桌面 | 已停止 | 2 |
烏班圖 | 跑步 | 2 |
然後Ubuntu從WSL2轉換為WSL1。再次檢查了狀態。這表明 Ubuntu 轉換為 WSL1 並停止了。
PS C:\Users\prior> wsl --set-version ubuntu 1
轉換正在進行中,這可能需要幾分鐘...轉換完成。
PS C:\Users\prior> wsl --list --verbose
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 已停止 | 2 |
docker-桌面 | 已停止 | 2 |
烏班圖 | 已停止 | 1 |
Ubuntu 已從 Windows 啟動應用程式清單中重新啟動。再次檢查 WSL 狀態。傳回的狀態顯示 Ubuntu 正在作為 WSL1 運行。 Docker 應用程式仍然是 WSL2。
PS C:\Users\prior> wsl --list --verbose
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 已停止 | 2 |
docker-桌面 | 已停止 | 2 |
烏班圖 | 跑步 | 1 |
Docker 已啟動並檢查了 WSL 狀態。很明顯,WSL1 和 WSL2 檔案都可以在 Windows 10 中處於活動狀態並運行。
PS C:\Users\prior> wsl --list --verbose
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 跑步 | 2 |
docker-桌面 | 跑步 | 2 |
烏班圖 | 跑步 | 1 |
然後出於好奇,將Ubuntu轉換回WSL2然後啟動。檢查狀態並顯示到 WSL2 的轉換有效。 Ubuntu 和 Docker 是 WSL2 並且正在運行。
PS C:\Users\prior> wsl --set-version ubuntu 2
正在進行轉換,這可能需要幾分鐘...有關與 WSL 2 的主要差異的信息,請訪問https://aka.ms/wsl2 轉換完成。
PS C:\Users\prior> wsl --list --verbose
姓名 | 狀態 | 版本 |
---|---|---|
docker-桌面-數據 | 跑步 | 2 |
docker-桌面 | 跑步 | 2 |
烏班圖 | 跑步 | 2 |
顯然,每當切換 WSL1 或 WSL2 子系統時,都無需卸載並重新安裝 Linux。