13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「System has not been booted with systemd as init system (PID 1). Can't operate.」のエラー解決

Last updated at Posted at 2024-04-17

WSL2上にインストールしたUbuntuからsystemdにてdockerを起動しようとした際に、起動できず軽くハマってしまったため備忘として残します。

環境

  • Windows11
  • WSL2
  • Ubuntu 22.04.3 LTS
  • Docker Engine

エラー概要

WSL上のUbuntuにインストールしたDockerを起動しようとしたら以下のエラーが発生。
ssytemdがPID=1になっていないことが原因らしい。

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

プロセスからPIDを確認

確認するとPID=1は、/initが実行されている。

XXXX@XXX:~$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   1824  1192 ?        Sl   11:29   0:00 /init
root        11  0.0  0.0   1812    84 ?        Ss   11:29   0:00 /init
root        12  0.0  0.0   1812    92 ?        S    11:29   0:00 /init

systemdの実体は/sbin/initのため、本来は/sbin/initがPID=1で実行されていないといけない。

XXX@XXX:~$ ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Sep 20  2023 /sbin/init -> /lib/systemd/systemd

試したこと

以下の流れにて、原因を確認してエラーを解決した。

WSL側でSystemdが有効になっているか確認

上記サイトを参考に/etc/wsl.confを確認。
systemdを利用するパラメータは設定されている。


[boot]
systemd=true

WSLを再起動すれば、有効化されると判断し、Powershellから以下コマンドを実行。

wsl --shutdown

再度、WSL上のUbuntuからsystemdが実行できるか確認したが、同じエラーが出力され解決せず。。。

WSLのバージョンアップ

WSLのバージョンを確認していなかったため、バージョンを確認。
コマンドラインオプションが無効になっている。。。

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

ここで、WSLをアップデートしていなかったことに気づき、WSLをアップデート。

wsl --update

WSLをアップデート後、WSLを再起動。

wsl --shutdown

PowershellからWSLのバージョンを確認。

wsl --version
WSL バージョン: 2.1.5.0
カーネル バージョン: 5.15.146.1-2

Systemd動作確認

その後、プロセスからPIDを確認し、/sbin/initファイルが実行されていることを確認。

XXX@XXX:~$ ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  4.8  0.0 167140 12608 ?        Ss   13:57   0:00 /sbin/init
root           2  0.0  0.0   2280  1304 ?        Sl   13:57   0:00 /init

systemdからDockerデーモンのステータスも確認。
以下から、問題なく実行できていることが確認できた。

XXX@XXX:~$ systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-04-17 15:44:42 JST; 3h 13min ago
TriggeredBy: ● docker.socket

無事、systemdを有効化させることができた。

まとめ

普段、WSLを使用しないこともあり、軽くハマってしまいました。
公式ドキュメントへの不十分な理解が原因であったことを認識し、今後はより注意深く取り組むように反省しています。

13
5
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
13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?