筆者環境: WSL2上のUbuntu-20.04 LTS (Windows 10 Home)
WSLを利用していたら、たまに見かけるこのエラー
System has not been booted with systemd as init system (PID 1)
どうも、原因はWSLでsystemdが使えないからみたいですね。
じゃあ、使えるようにしましょう。
先人の知恵は素晴らしいもので、Genieというリポジトリでsystemdを使えるようにできます。
https://github.com/arkane-systems/genie
コマンドの流れです
$ sudo apt install daemonize
$ sudo apt-get install -y gpg
$ wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
$ wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list
$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
$ sudo apt-get update; \
> sudo apt-get install -y apt-transport-https && \
> sudo apt-get update && \
> sudo apt-get install -y dotnet-sdk-3.1
genieをセットアップするために必要なdotnetのSDKをインストールしました。
次に、genie本体をインストールします。
$ curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
$ mkdir /etc/apt/sources.list.d
$ touch /etc/apt/sources.list.d/wsl-translinux.list
$ sudo vim /etc/apt/sources.list.d/wsl-translinux.list
vimでdeb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /
を追記しておきましょう。
追記を忘れるとアップデート時に429 Too Many Requests
が発生します。
$ sudo apt install -y systemd-genie
インストールが無事に終わったら
$ genie -s
で実行しましょう。
アップデート時にエラーが出るのが気持ち悪いという方はsudo rm -rf /etc/apt/sources.list.d/wsl-translinux.list
で解決できます。
最後に.bashrcか.bash_profileに
if [ "`ps -eo pid,cmd | grep systemd | grep -v grep | sort -n -k 1 | awk 'NR==1 { print $1 }'`" != "1" ]; then
genie -s
fi
を書き込んでおけば、シェル起動時にgenieも起動してくれます。
ps aux
でsystemd+
のプロセスが動いていれば大丈夫です。
お疲れ様でした。