Systemd とは?
Systemd は、ほとんどの最新の Linux ディストリビューションで標準の init システムおよびサービスマネージャーです。カーネルがロードされた後、システムを正しい順序で初期化する役割を担います。お使いのシステムで systemd が使用されているかを確認する簡単な方法は、/usr/lib/systemdディレクトリが存在するかどうかを見ることです。存在する場合、あなたはsystemdによって管理されているシステムを実行している可能性が高いです。
Systemd のブートプロセス
systemdは、厳格な逐次スクリプトの代わりに、「ゴール」の概念を使用してシステムを機能的な状態にします。プライマリゴール、つまりtargetを特定し、その依存関係を満たすように動作します。このアプローチにより、起動時の柔軟性と並列化が向上します。systemdによって管理される典型的なブートプロセスは、次の手順に従います。
- systemdは、
/etc/systemd/systemや/usr/lib/systemd/systemなどのディレクトリから設定ファイルを最初にロードします。 - 次に、デフォルトのブートゴール、通常は
default.targetという名前のシンボリックリンクを識別します。 - 最後に、systemdはこのターゲットのすべての依存関係を解決し、目的のシステム状態を達成するために必要なユニットをアクティブ化します。
Systemd ターゲットの理解
systemdにおけるターゲットは、古い SysV init システムのランレベルに似ています。これらはシステムが取りうる異なる状態を表します。一般的なターゲットには以下のようなものがあります。
poweroff.target: システムをシャットダウンします。rescue.target: メンテナンスのためにシングルユーザーシェルで起動します。multi-user.target: グラフィカルインターフェイスなしで、ネットワーキングを備えた標準的なマルチユーザー環境。graphical.target: ネットワーキングとグラフィカルユーザーインターフェイス(GUI)を備えた完全なマルチユーザー環境。reboot.target: システムを再起動します。
default.targetは、システムがデフォルトで起動するターゲット(デスクトップシステムでは多くの場合graphical.target)を指すシンボリックリンクです。
コアコンセプト:Systemd ユニット
systemdが管理する基本的なオブジェクトは「ユニット」と呼ばれます。ユニットは、リソースまたはサービスを記述する設定ファイルです。system dアーキテクチャの強みは、サービスだけでなく、さまざまなタイプのリソースを管理できる点にあります。各ユニットタイプは、そのファイル拡張子によって識別されます。最も一般的なタイプは次のとおりです。
- サービスユニット(
.service): これらは、Web サーバーやデータベースなどのシステムデーモンまたはサービスを管理します。 - マウントユニット(
.mount): これらはファイルシステムのマウントポイントを制御します。 - ターゲットユニット(
.target): これらは他のユニットをグループ化するために使用され、起動時の同期ポイントを作成します。
例えば、システムがgraphical.targetで起動するとき、そのターゲットユニットは、multi-user.targetやnetwork.serviceなどのさまざまなサービスユニットを含む、そのすべての依存関係が最初に開始されることを保証します。