WSL 中有哪個 Linux 核心?

WSL 中有哪個 Linux 核心?

我使用 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。

我的問題:

  1. 我使用的是哪個版本的 Linux 核心?
  2. 如果是4.4.0,如何升級到5.x?
  3. 如果是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 主機的檔案系統時效能有限。

您通常不應根據核心版本進行選擇。

相關內容