kotoyuuko

CORE

昨日より、明日より、笑える今が一番大好き。
github
telegram
email

在 WSL 上使用 systemd

前言#

巨軟搞的 WSL 非常好用,然鵝,因為他們用了自定義的 init 啟動,使用 systemd 會報下面的錯誤:

System has not been booted with systemd as init system (PID 1). Can’t operate.

通過 genie 使用 systemd#

genie 通過創建一個 pid 空間來實現在 WSL 上使用 systemd。

genie 基於 .NET Core 3 構建,使用前需要先安裝 .NET Core 運行環境,安裝方法參考微軟的官方文檔

然後安裝 genie 即可:

curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
sudo apt install systemd-genie

genie 的使用方法比較簡單:

# 啟動 systemd 環境
genie -i
# 啟動 systemd 環境,並在環境中打開 shell
genie -s
# 啟動 systemd 環境,並在環境中運行命令
genie -c command

開機啟動#

只做上面的配置,還無法完成開機自啟 enabled services,需要繼續配置啟動項。

首先進入 WSL 環境,創建 /etc/init.wsl 文件,內容如下:

#!/bin/bash
/usr/bin/genie -i

然後回到 Windows,Win + R 組合鍵打開運行,輸入 shell:startup 進入啟動目錄。

創建一個 vbs 文件,名稱隨意,內容如下:

Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Debian -u root /etc/init.wsl", vbhide

注:參數中的 Debian 需要改成你自己使用的 WSL 發行版名稱。

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。