WSL

Windows 11 22H2でのWSLのSystemdの対応について

はじめに

Windows 11では22H2を適用してWSLもアップデートすればSystemdに対応したWSLになります。

以前にもSystemdに対応したことを書きました。

WSLでsystemdのPID=1に対応したらしいので試してみた - 技術的な何か。
WSLでsystemdのPID=1に対応したらしいので試してみた - 技術的な何か。

はじめに WSLでsystemdをPID=1に対応しました。非常にうれしいニュースです。 現状はWindows 11かWindows 10 Insider Programのみです。ビルドのバージョンは

level69.net

ここではSystemd PID=1と記載していますが、最新ではどうやらPID=1にはならないようです。

これを確認していきます。

Windows 11

WSL(アップデート後)

wsl --version
WSL バージョン: 0.70.4.0
カーネル バージョン: 5.15.68.1
WSLg バージョン: 1.0.45
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.755

Systemdの有効化

最初にWSLのアップデートを行っておく必要があります。

Powershellなどでアップデートします。

wsl.exe --update

Systemdの有効化は対象のOSを起動後に/etc/wsl.confを編集します。

[boot]
systemd=true

 

設定後はWSLを起動しなおします。

wsl.exe --shutdown

以上で設定は完了です。

プロセスの確認

PID=1にならないようです。

root@desktop1:~# ps -auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.7 0.0 166248 11516 ? Ss 16:04 0:02 /sbin/init
root 2 0.0 0.0 2268 1160 ? Sl 16:04 0:00 /init
root 5 0.0 0.0 2268 4 ? Sl 16:04 0:00 \_ plan9 --control-socket 7 --log-level 4 --server-fd 8 --log-truncate
root 461 0.0 0.0 2276 104 ? Ss 16:04 0:00 \_ /init
root 462 0.0 0.0 2292 108 ? S 16:04 0:00 | \_ /init
root 463 0.0 0.0 9104 5180 pts/1 Ss 16:04 0:00 | \_ -bash
root 618 0.0 0.0 10884 3440 pts/1 R+ 16:09 0:00 | \_ ps -auxf
root 464 0.0 0.0 7472 4864 pts/2 Ss 16:04 0:00 \_ /bin/login -f
root 596 0.0 0.0 9076 5024 pts/2 S+ 16:04 0:00 \_ -bash
root 59 0.1 0.0 31336 11604 ? S<s 16:04 0:00 /lib/systemd/systemd-journald
root 87 0.1 0.0 22732 6548 ? Ss 16:04 0:00 /lib/systemd/systemd-udevd
root 97 0.1 0.0 4740 1764 ? Ss 16:04 0:00 snapfuse /var/lib/snapd/snaps/core20_1623.snap /snap/core20/1623 -o ro,nodev,allow_other,suid
root 98 0.0 0.0 4680 1708 ? Ss 16:04 0:00 snapfuse /var/lib/snapd/snaps/lxd_23541.snap /snap/lxd/23541 -o ro,nodev,allow_other,suid
root 100 0.0 0.0 4620 1480 ? Ss 16:04 0:00 snapfuse /var/lib/snapd/snaps/snapd_16778.snap /snap/snapd/16778 -o ro,nodev,allow_other,suid
systemd+ 139 0.1 0.0 16112 7860 ? Ss 16:04 0:00 /lib/systemd/systemd-networkd
message+ 140 0.0 0.0 8752 4520 ? Ss 16:04 0:00 @dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 143 0.0 0.1 32980 18652 ? Ss 16:04 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 147 0.0 0.0 234480 8640 ? Ssl 16:04 0:00 /usr/libexec/polkitd --no-debug
syslog 155 0.0 0.0 222396 7272 ? Ssl 16:04 0:00 /usr/sbin/rsyslogd -n -iNONE
root 157 0.1 0.2 1687792 40892 ? Ssl 16:04 0:00 /usr/lib/snapd/snapd
root 163 0.1 0.0 15328 7412 ? Ss 16:04 0:00 /lib/systemd/systemd-logind
root 171 0.0 0.0 392632 14516 ? Ssl 16:04 0:00 /usr/libexec/udisks2/udisksd
root 265 0.0 0.0 243196 13368 ? Ssl 16:04 0:00 /usr/sbin/ModemManager
systemd+ 314 0.1 0.0 25256 12312 ? Ss 16:04 0:00 /lib/systemd/systemd-resolved
root 361 0.0 0.0 7280 2684 ? Ss 16:04 0:00 /usr/sbin/cron -f -P
root 372 0.0 0.1 110092 21248 ? Ssl 16:04 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root 377 0.0 0.0 6212 1128 pts/0 Ss+ 16:04 0:00 /sbin/agetty -o -p -- \u --noclear --keep-baud console 115200,38400,9600 vt220
root 379 0.0 0.0 6168 1112 tty1 Ss+ 16:04 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root 617 0.5 0.0 14684 6268 ? Ss 16:09 0:00 /lib/systemd/systemd-timedated

試しにDockerをインストールしてみます。Systemdで動作していることが分かります。

root@desktop1:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-11-08 17:10:14 JST; 47s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 435 (dockerd)
      Tasks: 12
     Memory: 93.2M
     CGroup: /system.slice/docker.service
             └─435 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

-WSL
-,