【WSL2】Ubuntu20.04でPID1をSystemdにする
追記: 2022/11/20
WSL自体がsystemdをサポートしたとのことで記事を投稿しました。
こちらもご確認ください。
こんにちは、しきゆらです。
今回は、何度も書いていますがUbuntu20.04にてPID1をSystemdにする方法を改めてメモしておきます。
というのも、最近Windowsをクリーンインストールしたので改めて環境を構築していたんですが、
前回メモした内容ではうまくいかなかったからです。
何か変化したのかしら。
というわけで、何度かメモしていますが改めてメモしておきます。
なお、以下が関連する過去記事です。
- 【WSL2】Ubuntu20.04にてMySQL8.0が動かない問題を解決する
- 【WSL2】systemctlが動かない問題をきちんと解決する
- 【WSL2】Ubuntu 20.04でPID1をsystemdにする 2021年7月版
前回の「【WSL2】Ubuntu20.04にてMySQL8.0が動かない問題を解決する」ではGenieというものを使いました。
前回はUbuntu20.04用のパッケージが公開されておらず、自前でビルドする必要がありましたが、2020/08/14時点では公開されていました。
なので、前回よりも格段に導入のハードルは低くなっています。
以下、手順をメモしておきます。
導入準備
Genieの依存するパッケージをインストールしていきます。
基本は自動でインストールされるはずですが、一応事前に手動で入れておきます。
sudo install -y daemonize dbus policykit-1
追加で必要な「dotnet-runtime-3.1」ですが、これは別途「Linux ディストリビューションに .NET Core をインストールする | Microsoft Docs | https://docs.microsoft.com/ja-jp/dotnet/core/install/linux」を参考に導入します。
# リポジトリを追加
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb dpkg -i packages-microsoft-prod.deb
# いったん更新
sudo apt update; sudo apt upgrade
# 本命
sudo apt-get install -y dotnet-runtime-3.1
なお、「dotnet-runtime-3.1が見つからない」というエラーが出た場合は、公式にあるように「https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-debian#apt-troubleshooting」を参考にしてみてください。
これにて導入の準備は完了です。
Genieのインストール
導入は、公式に示されている手順でOKです。
# リポジトリの追加
curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
# Genieをインストール
sudo apt install -y systemd-genie
これにて完了です。
すべて公式にある手順だけで完結するのでとても楽です。
動作確認
動作確認としては、まずは起動させるところから。
genie -s
これでエラーが出なければOKです。
それでは、公式から推奨されている「getty@tty
」というサービスを止めてみます。
止めるには、普段通り「systemd
」で行います。
sudo systemd stop getty@tty
Genieを問題なく動かせていればsystemdがPID1になっているのでsystemctlでプロセスを操作できるようになっているはずです。
WSLを起動時にGenieを実行しておく
前回の記事でも記載しましたが、以下のスクリプトを.bashrcや.zshrcあたりに追記しておけばOK。
PID1がsystemdでない場合にGenieを実行してくれます。
if [ "`ps -eo pid,lstart,cmd | grep systemd | grep -v -e grep -e systemd- | sort -n -k2 | awk 'NR==1 { print $1 }'`" != "1" ]; then
genie -s
fi
まとめ
今回は、執筆時点では以前にまとめた内容ではGenieの導入ができなかったので再度調べなおして導入手順をメモしました。
必要であれば、前回の記事で記載したスクリプトを仕込んでおけば手間なく普通のLinuxとほぼ同じような感覚でWSLを操作できます。
今回はここまで。
おわり
ディスカッション
コメント一覧
もう古いですよ。迷惑なんで更新するか記事を削除お願いします。
こちら、適宜別で記事を上げて、古い記事にはリンクを張っていました。
何件か漏れていたのと、最新のもの書いたので更新しておきました。
最新はこちらです。
https://shikiyura.com/2021/07/do-release-upgrade_on_wsl2/
ピンバック & トラックバック一覧
[…] 【WSL2】Ubuntu20.04でPID1をSystemdにする | しきゆらの備忘録 […]