LoginSignup
8
8

More than 1 year has passed since last update.

WSL2でsystemctlを使う方法

Last updated at Posted at 2023-01-11

PCをMacからWindowsに買い替えてWSLにてローカル環境構築している際の備忘録。

LAMP環境を作っている際にこんなエラーが・・・

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

systemctlが使えない・・・だと?

ということで、調べていくと以前は使うにはいろいろな手順を踏む必要があったようですが、今は簡単に導入できるみたいなのでやってみます。

必要条件確認 & WSLのアップデート

公式ブログの情報によると

his change is only available in the Microsoft Store version of WSL version 0.67.6 and higher. You can check your version number by running wsl --version.

とのことで、WLSバージョンは0.67.6以上で使えるみたいです。
早速Windows PowerShellを起動してバージョンを確認してみます。
バージョンの確認方法は、ブログにあるようにwls --versionで確認できるようです。
私の環境で出力された結果が以下の通り(2023/1時点)

> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.1105

このWSLバージョンが既定の0.67.6以上なので問題なさそうです。
公式ブログの記事ではwsl --updateで更新確認もできるとあったのでついでに試してみます。

> wsl --update
更新プログラムを確認しています。
Linux  Windows サブシステムの最新バージョンは既にインストールされています。

とりあえず最新みたいです。
このまま続けます。

設定ファイルを設置

公式ブログによると、

Add these lines to the /etc/wsl.conf (note you will need to run your editor with sudo privileges, e.g: sudo nano /etc/wsl.conf):
[boot]
systemd=true

とのことなので、従って追加していきます。
今度はWSLのターミナル(WSL環境のUbuntu)を開いて作業をしていきます。
wsl.confというファイルを/etc/wsl.confに設置するみたいです。
この時注意なのが、wsl環境上の/パスはコマンドプロンプトやPowerShellの/とは場所が違うので注意です。
もしもフォルダなどで開く際には\\wsl$/ディストリビューション名/etcに該当しますのでこちらを検索してみてください。

早速ファイルを作成して書き込みます。

ubuntu > sudo vim /etc/wsl.conf

私の場合はvimを使用していますが、ご自身の環境に合わせてこちらを書き換えてください。
これでwsl.confを編集し、下記を追加します。

[boot]
systemd=true

書き込んだら保存して最後のステップです

WSLの再起動

wsl.confに書き込んだらWSLを再起動します。
またPowerShellを起動して次のコマンドを実行します。

wsl --shutdown

これでWSLが再起動されるので、再度WSL環境に入ってみます。
再度WSLのターミナル(WSL環境のUbuntu)を起動してください。

起動後systemctlコマンドを実行します。

ubuntu > systemctl
  UNIT                                                                                                     
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-1c77dc32\x2dda4b\x2d4dda\x2db0ba\x2d47a2b946ec6e...
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-e249ac6e\x2d2779\x2d4bc0\x2d8373\x2dcb9eb2559fb0...
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0...
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0...
  sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0...
  sys-devices-platform-serial8250-tty-ttyS0.device                                                         ...
  sys-devices-platform-serial8250-tty-ttyS1.device                                                         ...
  sys-devices-platform-serial8250-tty-ttyS2.device                                                         ...
....

実行したら上のような結果が表示されたら完了です。
これでsystemctlが使用できます!

あとがき

PowerShellで操作したりとMacとは違う部分があり迷いましたが、そこさえ迷わなければ何とかなります。
今後LAMP環境構築についても別記事でメモを残しておこうと思います。

以上!

参考にした記事

https://crieit.net/posts/systemd-supported-in-wsl
https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8