
WSL2の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
このエラーは、UbuntuのPID 1がsystemdではない状態で起動していることが原因です。最短の解決手順は次のとおりです。
- systemdで起動しているか確認する
- 無効なら
/etc/wsl.confへ設定を追加する - Windows側から
wsl --shutdownを実行する - Ubuntuを起動し直して確認する
最初に確認:すでにsystemdが有効か
Ubuntuを開き、次のコマンドを実行します。
ps -p 1 -o comm=
結果がsystemdなら設定は不要です。そのまま次のようにサービスを確認できます。
systemctl --version
systemctl is-system-running
sudo systemctl status ssh
systemctl is-system-runningがrunningまたはdegradedを返し、各サービスの状態が表示されればsystemctlは利用できます。サービス名はソフトウェアによって異なるため、Unit ... could not be foundと出る場合は正しいunit名も確認してください。
systemdが無効な場合の有効化手順
1. WSLのバージョンを確認・更新する
Windows TerminalまたはPowerShellで次を実行します。
wsl --version
wsl --list --verbose
UbuntuのVERSIONが2であることを確認します。wsl --versionが認識されない場合やWSLが古い場合は、管理者権限のWindows Terminalで更新してください。
wsl --update
2. /etc/wsl.confにsystemdの設定を追加する
Ubuntuで次を実行します。
sudo nano /etc/wsl.conf
ファイルへ次の2行を追加します。すでに[boot]セクションがある場合は重複させず、その中へsystemd=trueを追加してください。
[boot]
systemd=true
nanoではCtrl + O、Enterで保存し、Ctrl + Xで終了します。
3. WSLを完全に停止する
Ubuntuの画面を閉じ、Windows TerminalまたはPowerShellで次を実行します。
wsl --shutdown
このコマンドは実行中のすべてのWSLディストリビューションを停止します。作業中のファイルを保存してから実行してください。
4. Ubuntuを起動し直して確認する
Ubuntuを起動し、次のコマンドで確認します。
ps -p 1 -o comm=
systemctl list-unit-files --type=service
1行目の結果がsystemdで、2つ目のコマンドにサービス一覧が表示されれば完了です。
まだsystemctlが動かない場合
「System has not been booted with systemd」が消えない
/etc/wsl.confのスペルと改行を確認する- Windows側で
wsl --updateを実行する wsl --list --verboseでUbuntuがWSL2になっているか確認する- Ubuntuの終了だけでなく
wsl --shutdownを実行する
WSL1になっている場合は、ディストリビューション名を確認してから変換します。
wsl --set-version Ubuntu 2
環境によって名前がUbuntu-24.04などの場合があります。wsl --list --verboseに表示された名前へ置き換えてください。
「Unit ○○.service could not be found」と表示される
systemd自体は動いていますが、指定したサービス名が違うか、そのソフトウェアが未インストールです。利用可能なunitを検索します。
systemctl list-unit-files --type=service | grep -i サービス名
たとえばPostgreSQLでは環境によりpostgresql.serviceやバージョン付きunitを使います。エラーの意味を混同しないことが重要です。
WSLそのものが起動しない
0x8007019eなどのエラーでUbuntuを起動できない場合は、先にWindows側のWSL機能を有効にします。
【2026年版】WSL2エラー「0x8007019e」の直し方
よくある質問
現在のUbuntuでもwsl.confの設定は必要ですか?
新しくwsl --installで導入したUbuntuはsystemdが既定のため、通常は不要です。以前から使っているディストリビューションや他のディストリビューションでPID 1がsystemdでない場合だけ設定してください。
Docker Desktopを使うために必要ですか?
Docker DesktopのWSL 2バックエンドだけを使う場合、必ずしもUbuntu側でsystemdを手動有効化する必要はありません。一方、Ubuntu内へDocker Engineを直接入れ、サービスとして管理する場合はsystemdが役立ちます。
設定するとWindows起動時にサービスも動きますか?
systemdのサービスはWSLディストリビューションが起動したときに管理されます。Windowsの起動と同時に必ずWSLが常駐する、という意味ではありません。
まとめ
2026年現在のポイントは、「最初から設定を書き換えず、まずPID 1を確認する」ことです。
ps -p 1 -o comm=がsystemdなら設定不要- 旧環境では
/etc/wsl.confへsystemd=trueを追加 - 設定後はWindows側から
wsl --shutdown - 動かない場合はWSLの更新・WSL2化・unit名を確認
公式情報:
Microsoft「WSL で systemd を使用して Linux サービスを管理する」
Microsoft「WSL の詳細設定の構成」


コメント