はじめに
WSLでsystemdをPID=1に対応しました。非常にうれしいニュースです。
-
Systemd support is now available in WSL! - Windows Command Line
Systemd support is now available in WSL! The Windows Subsystem for Linux (WSL) can now run systemd i ...
devblogs.microsoft.com
現状はWindows 11かWindows 10 Insider Programのみです。ビルドのバージョンは22000.0以上です。
WSLのインストール
WSLのインストールは通常通りインストールして問題ないです。
そのうえでWSLをアップデートします。
GitHubからダウンロードしてインストールするのが確実だと思います。
-
GitHub - microsoft/WSL: Issues found on WSL
Issues found on WSL. Contribute to microsoft/WSL development by creating an account on GitHub.
github.com
0.67.6をダウンロードしてインストールします。
以上でWSLのインストール/バージョンアップは完了です。
PS C:\Users\azureuser> wsl --version WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.1042
PS C:\Users\azureuser> wsl --version WSL version: 0.67.6.0 Kernel version: 5.15.62.1 WSLg version: 1.0.44 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.1042
確認
Ubuntu 20.04で試しています。
通常はsystemdは起動していません。
user@vm1:~$ systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is dow
下記のファイルを書き換えます。
/etc/wsl.conf
[boot] systemd=true
プロセスを確認してみます。systemdがPID=1で動作していることがわかります。
user@vm1:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 3.1 0.2 103892 11144 ? Ss 10:07 0:00 /lib/systemd/systemd --unit=graphical.target root 2 0.0 0.0 2412 1224 ? Sl 10:07 0:00 /init root 56 0.8 0.3 43256 15072 ? S<s 10:07 0:00 /lib/systemd/systemd-journald root 76 0.5 0.1 21612 5084 ? Ss 10:07 0:00 /lib/systemd/systemd-udevd systemd+ 83 0.4 0.1 18380 7448 ? Ss 10:07 0:00 /lib/systemd/systemd-networkd root 244 0.0 0.0 3644 1452 ? Ss 10:07 0:00 snapfuse /var/lib/snapd/snaps/snapd_14978.snap /snap/root 245 3.5 0.0 3768 1864 ? Ss 10:07 0:00 snapfuse /var/lib/snapd/snaps/core20_1361.snap /snap/root 246 0.0 0.0 3832 1656 ? Ss 10:07 0:00 snapfuse /var/lib/snapd/snaps/lxd_22526.snap /snap/lxsystemd+ 253 0.6 0.3 23928 12064 ? Ss 10:07 0:00 /lib/systemd/systemd-resolved root 256 0.1 0.2 241048 9152 ? Ssl 10:07 0:00 /usr/lib/accountsservice/accounts-daemon message+ 257 0.4 0.1 7536 4392 ? Ss 10:07 0:00 /usr/bin/dbus-daemon --system --address=systemd: --noroot 260 1.0 0.4 29196 17708 ? Ss 10:07 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-ssyslog 261 0.1 0.1 224348 6532 ? Ssl 10:07 0:00 /usr/sbin/rsyslogd -n -iNONE root 262 2.5 0.9 873260 37704 ? Ssl 10:07 0:00 /usr/lib/snapd/snapd root 263 0.6 0.1 16672 7476 ? Ss 10:07 0:00 /lib/systemd/systemd-logind root 264 0.5 0.3 394916 13348 ? Ssl 10:07 0:00 /usr/lib/udisks2/udisksd root 282 0.0 0.0 8540 2768 ? Ss 10:07 0:00 /usr/sbin/cron -f root 291 0.8 0.5 108108 20504 ? Ssl 10:07 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattroot 305 0.0 0.0 7356 2244 pts/0 Ss+ 10:07 0:00 /sbin/agetty -o -p -- \u --noclear --keep-baud consolroot 310 0.0 0.0 5832 1844 tty1 Ss+ 10:07 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux root 316 0.1 0.2 236312 8616 ? Ssl 10:07 0:00 /usr/lib/policykit-1/polkitd --no-debug root 388 0.9 0.1 16232 6196 ? Ss 10:07 0:00 /lib/systemd/systemd-timedated root 442 0.0 0.0 2412 108 ? Ss 10:07 0:00 /init root 443 0.0 0.0 2428 108 ? S 10:07 0:00 /init user 444 0.9 0.1 10044 5108 pts/1 Ss 10:07 0:00 -bash root 445 0.0 0.1 5696 4156 pts/2 Ss 10:07 0:00 /bin/login -f user 576 0.5 0.2 18408 9360 ? Ss 10:07 0:00 /lib/systemd/systemd --user user 577 0.0 0.0 105248 3256 ? S 10:07 0:00 (sd-pam) user 582 0.2 0.1 10020 4920 pts/2 S+ 10:07 0:00 -bash user 593 0.0 0.0 10616 3220 pts/1 R+ 10:08 0:00 ps aux
まとめ
WSLでsystemdに対応することが簡単に行えるようになりました。
特にDockerを利用している人には朗報かもしれません。
さらに開発環境としてWSLの重要性が高くなると思いました。