5
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

WSL2でsystemdを使えるようにした話

筆者環境: 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+のプロセスが動いていれば大丈夫です。

お疲れ様でした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
5
Help us understand the problem. What are the problem?