LPIC Level1 復習ラジオ 03:Linuxの起動とsystemd

投稿日:2026-07-11

音声

※ AI音声で読み上げます

目次

  1. カーネルの次に起動するもの
  2. initとsystemd
  3. unitとは
  4. targetとは
  5. systemctlによるサービス管理
  6. startとenableの違い
  7. journalとjournalctl
  8. 起動状態を確認する流れ
  9. 30秒チェック
  10. 要約

カーネルの次に起動するもの

ブートローダーによってLinuxカーネルが読み込まれると、カーネルはCPU、メモリ、デバイスなどを初期化します。

その後、カーネルはユーザー空間で最初に動くプロセスを起動します。この最初のプロセスには、通常PID 1が割り当てられます。

PIDは、Process IDの略です。Linuxが各プロセスを識別するために使用する番号です。

現在の多くのLinuxディストリビューションでは、PID 1としてsystemdが起動します。

ブートローダー → Linuxカーネル → PID 1のプロセス → 各種サービス

initとsystemd

initとは

initは、initializationに由来する名前です。LinuxやUnix系OSで、システムの初期化を担当する仕組みや、最初に起動するプロセスを指す言葉として使われます。

従来はSysVinitなどが広く利用され、起動時にシェルスクリプトを一定の順序で実行してサービスを開始していました。

systemdとは

systemdは、Linux向けのシステムおよびサービスマネージャーです。

PID 1として動作する場合はinitシステムとして働き、ユーザー空間のサービスを起動し、その状態を管理します。

systemdは、サービスだけでなく、ソケット、マウント、タイマー、デバイス、起動目標などをunitという共通の単位で管理します。

unitとは

systemdが管理する対象をunitと呼びます。

unitの設定ファイルには、対象の種類に応じた拡張子が付きます。

unitの種類 主な役割
.service サービスやデーモンを管理する sshd.service
.target 複数のunitをまとめ、起動目標を表す multi-user.target
.socket 通信ソケットを管理する cups.socket
.mount ファイルシステムのマウントを管理する home.mount
.timer 決められた時刻や間隔で処理を起動する example.timer

サービスはsystemdが管理する対象の一つであり、すべてのunitがサービスというわけではありません。

targetとは

targetは、複数のunitをひとまとめにし、システムの起動状態や到達目標を表すunitです。

従来のSysVinitで使用されていたランレベルに近い役割を持ちますが、完全に同じ仕組みではありません。

target 概要
rescue.target 保守作業向けの限定的な状態
multi-user.target 複数ユーザーが利用できる、主に文字ベースの状態
graphical.target GUIを含む通常の利用状態
reboot.target 再起動を行うための目標
poweroff.target 電源停止を行うための目標

既定のtargetを確認する

systemctl get-default

既定のtargetを変更する

sudo systemctl set-default multi-user.target

get-defaultは既定の起動targetを表示し、set-defaultは次回以降の起動で使用する既定targetを設定します。

systemctlによるサービス管理

systemctlは、systemdの状態を確認し、systemdが管理するunitを操作するコマンドです。

基本構文は次のとおりです。

systemctl コマンド unit名

例として、SSHサーバーのunit名をsshd.serviceとします。ディストリビューションによってはssh.serviceなど、名前が異なる場合があります。

操作 コマンド例
状態を確認する systemctl status sshd.service
起動する sudo systemctl start sshd.service
停止する sudo systemctl stop sshd.service
再起動する sudo systemctl restart sshd.service
設定を再読み込みさせる sudo systemctl reload sshd.service

reloadに対応していないサービスもあります。その場合は、設定反映にrestartが必要になることがあります。

startとenableの違い

startenableは意味が異なります。

start

sudo systemctl start sshd.service

現在の起動中システムで、そのサービスを開始します。これだけでは、次回のOS起動時に自動起動するとは限りません。

enable

sudo systemctl enable sshd.service

次回以降、必要なtargetなどに合わせて自動起動できるように設定します。これだけでは、現在停止中のサービスが直ちに起動するとは限りません。

自動起動を設定し、同時に今すぐ起動する

sudo systemctl enable --now sshd.service

自動起動を解除する

sudo systemctl disable sshd.service

journalとjournalctl

systemd-journaldは、カーネルや各種サービスなどからログを収集し、journalとして保存するサービスです。

journalctlは、journalに保存されたログを表示・検索するコマンドです。

ログを表示する

journalctl

引数を付けずに実行すると、閲覧権限のあるjournalの内容を古いものから表示します。

特定のunitのログを表示する

journalctl -u sshd.service

-uは、指定したunitに関係するログへ絞り込むために使います。

今回の起動以降のログを表示する

journalctl -b

新しいログを継続して表示する

journalctl -f

-fは、新しく追加されるログを追跡して表示します。

末尾付近を表示する

journalctl -e

サービスが起動しない場合は、systemctl statusで状態を確認し、journalctl -uで詳しいログを見る、という流れが基本です。

起動状態を確認する流れ

例えばSSHサービスが動作しているかを確認する場合、次の順番で整理できます。

  1. unitの状態を確認する

    systemctl status sshd.service
  2. 現在動作中かだけを確認する

    systemctl is-active sshd.service
  3. 自動起動が設定されているか確認する

    systemctl is-enabled sshd.service
  4. unitに関するログを確認する

    journalctl -u sshd.service

activeenabledは別の状態です。現在動いていても自動起動が無効な場合や、逆に自動起動が有効でも現在は停止している場合があります。

30秒チェック

  1. Linuxカーネルの後に起動する最初のユーザー空間プロセスには、通常何番のPIDが割り当てられるでしょうか。
  2. systemdが管理する対象をまとめて何と呼ぶでしょうか。
  3. systemctl startsystemctl enableの違いは何でしょうか。
  4. 特定のunitのjournalを表示するには、どのコマンドを使うでしょうか。
答えを表示
  1. PID 1
  2. unit
  3. startは現在のシステムで起動し、enableは起動時に自動起動する設定を行う
  4. journalctl -u unit名

要約

  • カーネルは、通常PID 1のプロセスを最初のユーザー空間プロセスとして起動します。
  • 現在の多くのLinuxでは、systemdがinitシステムとして動作します。
  • systemdは、サービスやtargetなどをunitとして管理します。
  • targetは、複数のunitをまとめた起動目標です。
  • systemctlはsystemdとunitの状態確認・操作に使います。
  • startは現在の起動、enableは自動起動の設定です。
  • journalctlはjournalに保存されたログの表示・検索に使います。

参考資料