いつの間にか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を使えるようにすると普通に使えるようになりました。
コメント