【wsl2】wsl2のUbuntuでsystemctlを使用する

いつの間にかwslでmicrosoft公式でsystemctlが使えるようになりました。よく

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

みたいになっていたので公式を見ながら使えるようにしてみる。

今回はwindowsとwsl(ubuntu)での作業があります。

1. バージョンの確認

PowerShell上でバージョンを確認。

PS > wsl --version
コマンド ライン オプションが無効です: --version
・

このように無効の場合はwslをアップデートします。

PS > wsl --update
インストール中: Linux 用 Windows サブシステム
[                           0.0%                           ]
Linux 用 Windows サブシステム  はインストールされました。

再度確認

PS > wsl --version
WSL バージョン: 1.1.3.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.49
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.19045.2604

バージョン 0.67.6 以降になっていればOK

2. ubuntu起動時の設定

wsl(ubuntu)上での設定をしていく

wsl(ubuntu) > sudo vi /etc/wsl.conf

このファイルを編集して(大抵の人は新規作成になる)

[boot]
systemd=true

3. wslを再起動

PowerShell上からwslを再起動。

PS > wsl --shutdown

※勝手に再起動される

今回は面倒なのですべて再起動していますが、特定のwslのみ再起動する方法もあります。

PS > wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
PS > wsl -t Ubuntu-20.04

4. wslのubuntuで確認

wsl上で

wsl(ubuntu) > systemctl
UNIT
-------------------------------------------
sys...
.

のように出てきたら使えるようになっている

おわりに

きっかけは

timedatectl status

で時刻の同期を確認したかったからですが、systemctlを使えるようにすると普通に使えるようになりました。

コメント