systemdによる起動処理の基礎となるUnitでは、Unit間に依存関係と順序関係があるのが特徴だ。Unitの設定方法を説明する前に、ここでは、Unitの依存関係と順序関係について触れておこう。「依存関係」とは、「Unit Aを有効化するならUnit Bも有効化すべき」という関係だ。「順序関係」とは、「Unit Aを有効化する前にUnit Bを有効化すべき」という関係である。

 systemdの環境では、Linuxカーネルが起動すると、プロセスID=1の最初のプロセスとして、systemdの本体となる「/usr/lib/systemd/systemd」が起動する。systemdはこの後、各種Unitの依存関係を検索して、この環境で有効化すべきUnitの一覧を作成する。そして、これらUnitの順序関係に基づいて、順番にUnitを有効化(起動)していくのである。

 ただし、すべてのUnitに順序関係が設定されるわけではない。順序関係を持たないUnitについては、できるだけ並列に起動処理を行う。これにより、起動処理の並列度を高めることで、システムの起動時間を短縮する。

 ここで、依存関係の全体像を図3に示す。前回の表1で示した「target」タイプのUnitで依存関係の骨組みを構成し、さらに、それぞれのtargetに対して、実際の処理を行う「service」などのタイプのUnitを依存させる。「Unit Aを有効化するならUnit Bも有効化すべき」という依存関係において、矢印の先端のUnitがUnit Aに当たり、矢印の根本のUnitがUnit Bに当たる。

図3●依存関係の主要な骨組み
図3●依存関係の主要な骨組み
[画像のクリックで拡大表示]