通読man 5 systemd.unit
し、man 5 systemd.target
ユニットファイルを対象としてだけでなく、他のすべてにsystemdを定義するために使用されていることを教えてくれる。ターゲットの作成方法に関するドキュメントは特にないので、どのように実行すべきかを判断するのは困難ですが、サービスの作成とそれほど違いはありません。
ターゲットを作成するときは、systemdサービスディレクトリからディレクトリへのシンボリックリンクを作成する必要がありtarget.wants
ます。その後、ターゲットを設定/起動できます。以下に例を示します。
/etc/systemd/system/foo.target
これは、ターゲットのユニットファイルです。graphic.targetを例にとると、それをベースとして独自のターゲットを作成できます。
[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
systemdのマンページから取得したオプションを説明するため。
Description
-ターゲットを説明します。あなたは理解する必要があります
Requires
-ターゲットのハード依存関係。独自のサービスを開始する前に、基本システムを開始する必要があります
Wants
-ソフト依存関係。ターゲットはこれらを開始する必要はありません。
Conflicts
-ユニットに別のユニットで競合設定がある場合、前者を起動すると後者が停止し、逆の場合も同様です。
After
-これらのサービスの後に起動する
AllowIsolate
-本当にあなたとあなたの環境次第。詳細はマンページにありますsystemd.unit(5)
/etc/systemd/system/foo.target.wants/
これは、ターゲットに対して作成/要求するサービスをリンクするディレクトリです。Wants=
ユニットファイルのオプションと同等です。このディレクトリを作成してから、そのようなシンボリックリンクを作成します。ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
。これにより、システムディレクトリのbar.serviceからfoo.target.wantsディレクトリへのシンボリックリンクが作成されます。
サービスのユニットファイルを作成することは、この回答の範囲外であり、その質問は間違いなくより詳細に文書化されているので、ここでは省略します。ユニットファイルを作成するときは、それをtarget.wantsディレクトリにシンボリックリンクするか、Wants=
ディレクティブに追加します。