systemd
概要
systemdとは、Linuxの起動時の処理やシステム管理を行う様々な機能を実装したソフトウェア群。従来のinit(SysVinit)などの仕組みを代替するもので、多くのLinuxディストリビューションに採用されている。従来のLinuxはUNIX System Vに由来する「init」(SysVinit)や「upstart」などの仕組みで起動プロセスを管理していたが、これらはデーモンの起動処理などをシェルスクリプトで記述するため、処理に時間がかかり、起動後の停止・再始動などの管理も難しいという難点が指摘されていた。
systemdはこれらに代わり起動処理の仕組みを提供する。initに代わってカーネル起動後にユーザーランドで最初に起動されるプロセス(PIDが1のプロセス)となり、ファイルシステムのマウントや各種システム設定の適用、デーモンの起動などを管理する。
シェルスクリプトで管理されていた起動プロセスの制御は「ユニット」(Unit)という単位で管理され、ユニットごとの設定ファイル(ユニットファイル)に従って処理を進める。ユニットは役割ごとに「service」「device」「mount」「socket」「target」「timer」などが用意されている。
ユニットファイルにはデーモンを起動するコマンドやオプションに加え、起動順序や依存関係(起動前に実行されていなければならないデーモン)の指定などを行うことができる。systemdは起動処理を並行して(システムによっては並列に)実行するため、従来より高速にシステムを起動することができる。
システムの起動やプロセス管理を行う本体(systemdデーモン)の他に、仮想コンソール機能を管理する「consoled」、イベントロギングを行う「journald」、ログイン機能を管理する「logind」、ネットワーク通信の管理を行う「networkd」などの補助的なコンポーネントも提供する。
2010年に米レッドハット(Red Hat)社に所属する開発者らによって開発が始まり、LGPL(Lesser GPL)というライセンスに基づいてオープンソースとして公開されている。Debian GNU/Linux、Fedora、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、openSUSE、Ubuntuなど主要なディストリビューションの多くで採用されている。