WSL2 Ubuntu20.04でsystemdを有効化する方法

タイトル通りですが、WSL2 Ubutnu20.04でsystemdを有効化する方法を紹介します。

WSLではsystemdが対応されているのですが、デフォルトでは有効化されていないので、/etc/wsl.confファイルを編集して有効化します。

https://crieit.net/posts/systemd-supported-in-wsl

現在のsystemd状況を確認

WSLを起動して、systemctlコマンドを実行してみてください。下記のような出力が得られた場合は有効化されていません。

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

systemdとsystemctl

systemdは、カーネルによって最初に起動されるプログラムのことです。サービスやデーモンの起動などを管理するために利用されます。

一方で、systemctlは、systemdをコントロールするためのコマンドです。サービスの起動、自動起動の設定、定期、サービス状態の確認などに利用されます。

/etc/wsl.confファイルを編集

/etc/wsl.confファイルに、systemd有効化の設定を追加します。

$ sudo vim /etc/wsl.conf
[boot]
systemd=true

設定を追加したら、Windows側でPowerShellを開いて、wslを一度シャットダウンします。

PS> wsl --shutdown

systemdの状況を確認

改めてsystemctlコマンドをUbuntu上で実行してみます。下記のような結果が得られれば、systemdは正常に有効化されています。

$ systemctl
  UNIT                                                                                                                 >
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-33e415ed\x2d8266\x2d4e56\x2d8089\x2d579e8b101577-pci8266:00->
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-33e415ed\x2d8266\x2d4e56\x2d8089\x2d579e8b101577-pci8266:00->
  sys-devices-platform-serial8250-tty-ttyS0.device
....

  • この記事を書いた人

たかさん

犬と暮らすクラウドエンジニア。GCPが好きだけど良く触るのはAWSとAzureです。

-WSL
-,