
我使用 Ubuntu 22.04 安裝了 WSL 2。
當我嘗試在 PowerShell 中檢查 WSL 核心時,得到以下結果:
PS C:\Users\user> wsl --status
Default Distribution: Ubuntu-22.04
Default Version: 2
Windows Subsystem for Linux was last updated on 6/7/2022
WSL automatic updates are on.
Kernel version: 5.10.102.1
從上面的訊息中,我假設我使用的是 Linux 核心 5.10.102.1。
但是當我運行 Ubuntu 並使用 時uname -a
,我得到了一個不同的 Linux 核心:
user@DESKTOP-:/mnt/c/Users/user$ uname -a
Linux DESKTOP-VMP6T3Q 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux
其中表示 Linux 核心是 4.4.0。
我的問題:
- 我使用的是哪個版本的 Linux 核心?
- 如果是4.4.0,如何升級到5.x?
- 如果是5.10,我如何檢查以確保它是該版本?
答案1
雖然 WSL2 是您安裝的新發行版的預設設置,但您的 Ubuntu 發行版最初似乎是作為 WSL1 安裝的。
您可以透過以下方式確認:
wsl.exe -l -v
在 WSL1 下運行時uname -a
,偽核心將報告為:
- “Linux”
- 主機名稱
- “4.4.0-”
- Windows 內部版本號(在您的情況下為 19041)
- “-微軟”
- …
在 WSL2 下,核心將報告為:
- “Linux”
- 主機名稱
- 核心版本
- “-微軟標準-WSL2”
安裝發行版是很常見的前WSL2 已安裝或設定為預設值。將預設版本變更為 2 實際上不會變更已安裝的發行版。
您可以(並且應該)透過退出發行版然後從 PowerShell 轉換發行版:
wsl --set-version Ubuntu-22.04 2
如果您願意,可以先使用以下命令進行備份:
wsl --export Ubuntu-22.04 Ubuntu2204_backup.tar
我說「應該」是因為 Ubuntu 22.04 在 WSL1 下有一些重大問題,特別是該unzip
命令不起作用。
答案2
雖然預設 WSL 版本設定為 2,但您執行的 WSL 發行版是 WSL 1。
WSL 1(Windows 10):
$ uname -a
Linux db-d-18 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 GNU/Linux
WSL 2:
# uname -a
Linux db-d-18 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 GNU/Linux
WSL 1 和 2 滿足不同的需求。 WSL 1 提供 Windows 軟體和檔案的高效能互通性。 WSL 2 提供真正的 Linux 內核,支援容器和更快的 Linux 檔案系統等,但代價是存取 Windows 主機的檔案系統時效能有限。
您通常不應根據核心版本進行選擇。