Linux システムの起動プロセスは、systemd によって管理されます。サービスの起動順や動作の制御、起動モード(ターゲット)の切り替えなど、柔軟なカスタマイズが可能です。
この記事では、systemd の構造と操作方法、起動モードの制御についてわかりやすく解説します。
目次
✅ systemdとは?
systemd は Linux の init システム の一種で、以下のような役割を担います:
- サービスの起動と監視
- ブートプロセスの制御
- ログの管理
- ターゲット(旧ランレベル)の管理
📁 systemd の構成ディレクトリ
| ディレクトリ | 内容 |
|---|---|
/usr/lib/systemd/ | 標準のユニットファイル(OSやパッケージ由来) |
/etc/systemd/ | 管理者が作成・上書きするユニット設定 |
/run/systemd/ | 実行時に動的に生成される情報(再起動でリセット) |
補助コマンド:
systemd-delta
→ 上書き・差分のあるユニットファイルを確認できます。
🔧 基本的な systemctl 操作
| 操作内容 | コマンド例 |
|---|---|
| サービスの状態確認 | systemctl status sshd |
| 起動中のユニット一覧 | systemctl list-units |
| サービスの起動 / 停止 | systemctl start nginx / systemctl stop nginx |
| 自動起動の有効化 / 無効化 | systemctl enable nginx / systemctl disable nginx |
| 完全に無効化(マスク) | systemctl mask nginx |
| マスク解除 | systemctl unmask nginx |
🎯 systemd ターゲットとは?
従来の「ランレベル」に相当する概念が ターゲット(target) です。
| ターゲット名 | 概要 |
|---|---|
default.target | 通常のマルチユーザGUI(またはCLI) |
multi-user.target | マルチユーザモード(GUIなし) |
graphical.target | GUI付きのログインモード |
rescue.target | シングルユーザモード(最小限) |
emergency.target | システム修復向け、rootシェルのみ |
現在のターゲットを確認:
systemctl get-default
ターゲットを切り替え:
systemctl isolate multi-user.target
起動時ターゲットを変更:
systemctl set-default multi-user.target
🆘 rescue モードと emergency モード
🔹 rescue.target(レスキューモード)
- ネットワークやログインサービスなし
- root シェルで最小限の修復が可能
起動方法:
systemctl isolate rescue.target
🔹 emergency.target(緊急モード)
- ルートファイルシステムのみマウント(読み取り専用)
- 他のサービスは一切起動しない
- 最低限の修復・調査用
起動方法:
systemctl isolate emergency.target
カーネルパラメータで起動時から移行も可能:
systemd.unit=rescue.target
systemd.unit=emergency.target
💡 実務でのTips
- サーバーでGUI不要なら
multi-user.targetを既定に。 - 開発者向けPCなら
graphical.targetがデフォルト。 - トラブル時には
rescue.targetまたはemergency.targetで復旧に。
🧩 まとめ
systemd を理解し操作できるようになることで、Linux の起動やサービスの管理を自信を持って行えるようになります。ターゲットの活用や rescue モードの使い方は、トラブルシューティングにも欠かせない知識です。
コメント