show log include yuh

勉強したことの復習を兼ねて、IT関係(ネットワーク/サーバ/アプリケーション)についてまとめてます。たまに趣味のこと

スポンサーリンク

WSL2でsystemdを使えるようにする

概要

自宅での利用PCは自作PCWindows、ノートPCはMacbookを利用してます。
プログラミング等を実施する際はUNIX系のOSのほうが勝手がなれていることもあり、どうしても自宅のWindowsでは慣れませんでした。
コマンドプロンプトPowershellに私の知見がない....
そこでWindows でもLinuxを軽量に動かすことができるWSL2を利用してみました。

WSL2って?

Windowsから参照する

\\wsl$\Ubuntu-20.04\home\{USER NAME}

systemctld で困ったこと

sshクライアントでWSLを操作するためにsshをsystemctldで自動起動設定したところ、エラーが発生しました。
sudo systemctl

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

どうやらSystemd が PID 1 だがWindows システムと PID が共有されており、WSL特有の問題らしい。 donga-donga.appspot.com

解決策

Genieをインストール

Genieをインストールすることで解決できるとのことで下記を実行。

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

インストールに失敗する。
下記コマンドで確認、どうやら私のはWSLであってWSL2ではないようだった。

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         1

WSL2にバージョンアップ

WSL2 にあげていきます。ちなみにWSLとWSL2の違いはこのようになっているとのこと。

docs.microsoft.com

wsl --set-version ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

もう一度Genieをインストール

うまくいきました

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

確認

ps aux

PID1で稼働していることが確認する