如何在適用於 Linux 的 Windows 子系統 (WSL) 上啟用 Systemd

如何在適用於 Linux 的 Windows 子系統 (WSL) 上啟用 Systemd

適用於 Linux 的 Windows 子系統 (WSL) 是一個兼容層,用於在 Windows 11/10 客戶端計算機以及 Windows Server 2019 及更高版本的計算機上本地運行 Linux 二進制可執行文件。隨著 WSL 2 的發布,通過 Hyper-V 功能的子集進行了重要更改,例如實際的 Linux 內核。在這篇文章中,我們將指導您如何在 WSL 中啟用 Systemd

什麼是系統化?

Systemd 是 Linux 系統的一組基本構建塊。它提供了一個系統和服務管理器,作為 PID 1 運行並啟動系統的其餘部分。Systemd 默認安裝在幾個知名發行版上,包括 Ubuntu、Debian 等。通過此更改,WSL 將變得更加類似於在裸機上運行您首選的 Linux 發行版,並允許您使用需要 systemd 支持的應用程序。一些依賴 systemd 的 Linux 應用程序示例是 snap、microk8s 和 systemctl。

據微軟稱:

Systemd 支持需要對 WSL 架構進行更改。因為 systemd 需要 PID 1,所以在 Linux 發行版上運行的 WSL init 進程成為 systemd 子進程。由於 WSL 供應過程負責為 Linux 和 Windows 組件之間的通信提供基礎設施,因此更改此層次結構需要重新考慮 WSL 供應過程中所做的一些假設。需要進行其他更改以確保完全關閉(因為該關閉現在由 systemd 控制)並確保與 WSLg 的兼容性。還需要注意的是,通過這些更改,systemd 服務不會讓您的 WSL 實例保持正常運行。

鑑於這會改變 WSL 的啟動行為,我們希望在將其應用於用戶已經存在的 WSL 發行版時要小心。因此,目前您需要註冊才能為特定的 WSL 分發啟用 systemd,我們將監控反饋並研究如何在未來將此行為設為默認行為。

如何在適用於 Linux 的 Windows 子系統 (WSL) 上啟用 Systemd

到目前為止,在撰寫本文時,Windows Subsystem for Linux (WSL) 社區一直在尋找實現 systemd 的方法。但在與 Canonical 合作之後,微軟正式在 WSL 中實現了 systemd。借助 WSL 中提供的 systemd 支持,您現在可以在 WSL 發行版中運行 systemd,從而允許您在 Windows 機器上使用 Linux 工作進程執行更多操作。

要在您的機器上安裝 systemd,您需要執行以下操作:

確保您使用的是 WSL 版本 0.67.6 或更高版本。

如果您通過 PowerShell 啟用了 WSL,並且沒有從您設備上的 Microsoft Store 下載它,那麼您最初不會有 systemd。它僅適用於運行 Windows 11 Insider Build 或使用從 Microsoft Store 下載的 WSL 的用戶。如果您在 WSL 上運行 Ubuntu Preview,則會自動添加 systemd。因此,要檢查您是否有受支持的 WSL 版本,只需打開 Windows 終端並在 PowerShell 控制台中運行以下命令:

wsl –version

根據輸出,如果 WSL 為 0.67.6 或更早版本,您可以前往 Microsoft Store 並下載WSL。此外,PC 用戶,特別是如果您不是 Windows 預覽體驗成員,可以從 WSL GitHub 存儲庫下載最新版本。將來將向所有用戶添加 Systemd 支持。要檢查 WSL 的更新,請在 PowerShell 中運行以下命令:

wsl –update

在 WSL 分發設置中設置 systemd 標誌。

顯示 systemd 服務的狀態

一旦您確定您運行的是 systemd 所需的受支持版本的 WSL,您將需要編輯 wsl.conf 文件(在任何 WSL Linux 發行版上都可以找到的配置文件,它允許按發行版進行自定義,而不是更改常規設置 WSL)以確保 systemd 在引導時啟動。要完成此任務,請執行以下步驟:

  • 使用 sudo 權限運行編輯器並添加以下行:

[boot]systemd=true

  • 之後,保存文件並退出。
  • 您現在可以關閉 WSL Windows 發行版並在 PowerShell 中運行以下命令以重新啟動 WSL 實例。

wsl.exe --shutdown

  • 啟動後,您應該運行 systemd。要檢查並顯示服務的狀態,請運行以下命令:

systemctl list-unit-files --type=service

這是在 Windows 子系統 Linux (WSL) 上啟用 Systemd 的方法!

如何以 init 方式啟動到 systemd?

要在 systemd 下啟動,請選擇您為此目的創建的啟動菜單項。如果您還沒有創建啟動菜單條目,只需選擇已修補內核的條目,直接在 grub 中編輯內核命令行,然後添加以下行:init=/lib/systemd/systemd。

資料來源:Windows 俱樂部

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *