systemctlが使えない!エラーの原因と解決方法

Linux

Linuxで systemctl というコマンドを使おうとしたとき、こんなエラーが出たことはありませんか?

System has not been booted with systemd as init system (PID 1). Can't operate.

このエラーは「systemdが起動システムとして動いていないので、systemctlは使えません」という意味です。

簡単に言うと:
あなたの環境では systemctl というコマンドが使えない状態になっているということです。

スポンサーリンク

エラーが出る理由

このエラーが出るのは、あなたのLinux環境が「systemd」以外の方法で起動しているからです。

systemdとは、Linuxを起動するときに最初に動くプログラムのことです。

このプログラムがないと、systemctlコマンドは動きません。

よくある原因

WSL(Windows上のLinux)の古いバージョン

  • WSL1や古いWSL2では、systemdが使えません
  • 新しいWSL2なら設定で有効にできます

Docker(コンテナ環境)

  • 軽量なDockerイメージではsystemdが含まれていません
  • 特にAlpine LinuxやminimalなUbuntuイメージで発生します

軽量なLinux環境

  • 組み込み機器用のLinuxなど
  • runit、OpenRC、SysVinitなど別の起動システムを使っている

解決方法

自分の環境を確認する

まず、どの起動システムが使われているか確認しましょう:

ps -p 1 -o comm=

結果の見方

  • systemd と表示される → systemdが使える環境
  • init と表示される → 古い起動システム
  • runit と表示される → runitという起動システム

WSLでsystemdを有効にする方法

必要な条件

  • Windows 11を使っている
  • WSL2を使っている
  • Ubuntu 22.04以降を使っている

設定手順

  1. WSLのUbuntuで以下のファイルを作成・編集します:
sudo nano /etc/wsl.conf
  1. ファイルに以下を書きます:
[boot]
systemd=true
  1. ファイルを保存して、WSLを完全に終了します:
wsl --shutdown
  1. WSLを再度起動して、systemctlが使えるか確認します

Dockerでsystemdを使う方法

通常のDockerイメージではsystemdは動きません。systemd対応のイメージを使う必要があります:

# systemd対応のUbuntuコンテナを起動
docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro ubuntu:22.04

または、systemd専用のイメージを使います:

docker run --privileged centos/systemd

systemctlの代わりに使えるコマンド

systemctlが使えない環境でも、似たような操作ができます:

サービスを起動・停止する

# 古い方法でサービスを起動
sudo /etc/init.d/apache2 start

# または
sudo service apache2 start

サービスの状態を確認する

# 動いているプロセスを確認
ps aux | grep apache2

# または
sudo service apache2 status

ログを確認する

# ログファイルを直接見る
sudo cat /var/log/apache2/error.log

# または
sudo tail -f /var/log/syslog

まとめ

このエラーは、あなたの入力ミスではありません。使っているLinux環境がsystemdに対応していないことが原因です。

大切なポイント

  • systemctlはsystemdがある環境でしか使えない
  • WSL2なら設定で有効にできる
  • 他の環境では代替コマンドを使う
  • エラーが出ても慌てず、環境を確認する

環境別の対応方法まとめ

環境対応方法
WSL2(新)wsl.confでsystemdを有効化
WSL1(古)代替コマンドを使用
Dockersystemd対応イメージを使用
通常のLinux通常はsystemdが使える
軽量Linux代替コマンドを使用

よくある質問

Q: Windows 10でもsystemdは使えますか?
A: いいえ、Windows 11のWSL2でのみ対応しています。

Q: エラーが出てもLinux自体は正常ですか?
A: はい、システムは正常です。systemctlが使えないだけです。

Q: どうしてもsystemctlを使いたい場合は?
A: systemd対応の環境に移行するか、仮想マシンを使ってください。

コメント

タイトルとURLをコピーしました