手当たり次第に書くんだ

飽きっぽいのは本能

目次に戻る

Overview

systemd は、SysVinit を置き換える新しい init の仕組みです。systemdは、システムの起動やサービスの管理、ログの収集など、システム全体の管理を担当します。システムの初期化やサービスの制御に関する機能に加えて、systemd は cgroups を活用したプロセス管理や、動的なデバイスの検出・管理を行います。

プロセス

Systemd では、以下のデーモンプロセスが連携して動作しています。

プロセス名機能
systemdsystemd の本体となるプロセスで、init の代わりに常駐します。
systemd-journaldsystemd が制御する、各サービスが出力するログを扱います。
systemd-logindシステムへのログイン、起動停止、電源ボタン操作などを管理します。
systemd-udevd従来の udevd に変わり、デバイスの動的変更、検出を行います。
systemd のプロセス

Unit

systemd における各機能は、Unit という単位で管理されます。Unit は設定ファイルであり、その設定に基づいて systemd が処理を実行します。各 Unit は、拡張子によってその機能を識別可能です。

Unit の拡張子機能
device各種デバイスを管理します。
mountファイルシステムのマウントを管理します。
serviceサービスを制御します。
swapスワップ領域を管理します。
target複数のサービスを一つのグループにします。
Unit の機能別の拡張子

SysVinit と systemd の違い

SysVinit と systemd の主な違いは以下の通りです。

項目SysVinitsystemd
イニシャルプロセスinit プロセスsystemd プロセス
プロセス管理PID によるプロセス管理cgroups を利用したプロセス管理
サービスの起動逐次起動並列起動
サービス管理init スクリプトユニットファイル
システム起動速度比較的遅い高速
ログ管理syslog を使用systemd-journald を使用
ユーザー管理単純な管理systemd-logind を使用
ターゲットランレベルターゲット
起動プロセスrc ランレベルスクリプトsystemd ターゲット
管理ツールservice コマンドsystemctl コマンド
プロセス優先度設定が難しいcgroups による柔軟な管理
SysVinit と systemd の違い

ランレベルと Systemd targets のマッピング

SysVinit のランレベルと systemd のターゲット は、以下のように対応しています。

ランレベルTarget
0poweroff.target
1rescue.target
2, 3, 4multi-user.target
5graphical.target
6reboot.target
ランレベルと systemd targets のマッピング

これらのターゲットは、/lib/systemd/system 配下に格納されています。また、SysVinit との関連がわかりやすいように、runlevel0.target – runlevel6.target までのシンボリックリンクも用意されています。

systemctl コマンド

各サービスの稼働状況や起動設定を管理するには systemctl コマンドを使用します。systemctl コマンドの書式は以下のとおりです。Unit 名に拡張子がない場合、.service の拡張子を持つ Unit が指定されたものとみなされます。

systemctl [OPTIONS...] COMMAND ...

systemctl の主なサブコマンドは以下の通りです。

サブコマンド機能
disableサービスの自動起動を無効にする。
enableサービスの自動起動を有効にする。
get-default次回起動時のターゲットを表示する。
haltシステムを停止し、halt 状態にする。
is-activeサービスが稼働しているか表示する。
list-unit-filesすべての Unit 定義ファイルを一覧表示する。
rebootシステムを再起動する。
restartサービスの設定ファイルを再読み込みする。
set-default次回起動時のターゲットを設定する。
startサービスを起動する。
statusサービスの状態を表示する。
stopサービスを停止する。
poweroffシステムを停止し、電源を切断する。
systemctl 主なサブコマンド

systemctl rescue コマンドを使用すると、現在のランレベルをシングルユーザーモードに変更できます。この画面では、”systemctl default”コマンドの実行または”^D(Ctrl-D 押下)”によって通常モードに戻すことができます。また、「systemctl rescue」コマンドはデフォルトのターゲットを変更しないため、「systemctl reboot」コマンドで再起動すると、デフォルトのターゲットで起動します。

systemdが動作するシステムにおいて、起動時に最初に読み込まれるUnitは「/etc/systemd/system/default.target」です。「default.target」をSysVinitでのランレベルに相当するUnitへのシンボリックリンクとして作成することで、期待するサービス群を起動できるようになります。SysVinitのランレベルとsystemdのターゲットは以下のように対応しています。

これらのターゲットは「/lib/systemd/system」配下に格納されています。また、SysVinitとの関連がわかりやすいように、runlevel0.target〜runlevel6.targetまでのシンボリックリンクも用意されています。

最低限のシステムサービス状態で起動するには、シングルユーザーモード(ランレベル1)を指定することになります。

よって正解は、
・rescue.target
・runlevel1.target
です。

その他の選択肢については以下のとおりです。

・single.target
・maintenance.target
そのようなターゲットはないため、誤りです。

・multi-user.target
提供しているサービス群を起動するターゲット(ランレベル2,3,4に相当)のため、誤りです。

目次に戻る

LPIC systemd

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る