Systemd

systemdは、システム管理を担うソフトウェア群であり、従来のSystem V initに代わって導入された仕組みである。デーモン・ライブラリおよび各種ユーティリティで構成され、システム管理・設定における中心的プラットフォームとして、2010年、RedHat社のエンジニアにより、Linux OS用に設計された。
著者によるとsystemdはオペレーティングシステムの「基本的な積木」であると評され、UNIX System VやBSDから継承された（Linuxスタートアッププロセス中のユーザー空間で最初に実行されるプロセスである）Linuxのinitシステムを置き換えることを第一の目標としている。"systemd"という名前はファイル名の最後尾に"d"という文字を付けることでデーモンを区別しやすくするというUNIXの慣習を受け継いでいる。またこの名称は言葉遊びの側面もあり、フランスで最近よく言われている「」という言葉に因んでいる。「システムD」とは、状況に迅速に適応し問題を即興で解決する（＝なんとかする、に由来）個人の能力を意味する。
systemdはLinux用に設計され、Linux API専用にプログラミングされている。systemdはGNU Lesser General Public License (LGPL) version 2.1以降という条件でフリーなオープンソースソフトウェアとして公表されている。
systemdの設計はフリーソフトウェアコミュニティにおける重要な論争の元となった。これはsystemdのアーキテクチャはUNIX哲学に反しており最終的に相互依存でがんじがらめの塊を作ってしまうと批評家達を主張させるようになっているためである。しかしながら2015年現在、主要なLinuxディストリビューションのほとんどはsystemdをデフォルトのinitシステムとして採用している。
設計.
初期にsystemdを開発したソフトウェア技術者であるLennart PoetteringとKay Sieversはどうにかしてinitデーモンの効率をしのごうとした。彼らはシステムのブート中にたくさんの処理を並行または並列に行えるようにし、さらにシェルのオーバーヘッドを減少させるために、依存関係を表現できるようにそのソフトウェアフレームワークを改良したいと思っていた。
Poetteringはsystemdの開発を「決して終了せず決して完成しないが、技術の進歩を追い求める」ことと述べている。2014年5月にPoetteringはさらに進んで、systemdは以下の3つの一般的な機能を提供して「ディストリビューション間の無意味な違い」の統合を目指すものであると定義した:
systemdは単なるinitデーモンの名前ではなく、 initデーモンに加え、およびの各デーモンとそれ以外の多くの低レベルコンポーネントを含む、ソフトウェアバンドル全体を指している。2013年1月、Poetteringはsystemdは1つのプログラムではなく、69個の個別バイナリから成る巨大なソフトウェア一式だと述べた。systemdは統合されたソフトウェアスイートとして、伝統的なinitデーモンが自身の制御の元で実行するシェルスクリプトと協力して制御していた起動過程とランレベルを置き換える。その他にもsystemdは、ユーザーログイン、システムコンソール、デバイスホットプラグ（udevを参照）、計画された実行（cronを置き換える）、ロギング、ホスト名およびロケールを処理することで、Linuxシステムで共通するサービスの多くを統合する。
はinitデーモンのように、自身を含むバックグランドプロセスである全てのデーモンを管理するデーモンである。はブート中に開始される最初のデーモンであり、シャットダウン中に終了される最後のデーモンである。デーモンはユーザー空間のプロセスツリーのルートとなる。最初のプロセス (pid 1) は（親プロセスから分離した）デーモンプロセスが終了した際にSIGCHLDシグナルを受け取るため、UNIXシステムでは特殊な役割を持つ。このため、最初のプロセスはデーモンをモニタリングする目的のために特に適している。systemdはこの領域において、デーモンを自動的に再起動するのではなくデーモンを一度だけ開始してモニタリングをしないという伝統的なアプローチよりも改善しようとしている。
はその起動過程の要素を並行に実行する。それは伝統的な起動過程のシーケンシャルなアプローチよりも高速である。プロセス間通信 (IPC) のため、はUNIXドメインソケットとD-Busを実行しているデーモンから使えるようにする。将来の再呼び出しに備えて、自身の状態をスナップショットに保存することもできる。
ユニットファイル.
は伝統的に使われるデーモンごとの起動シェルスクリプトを置き換えるため、宣言型言語を使う設定ファイル（これを「ユニットファイル」と言う）に各デーモン用の初期化命令を記録する。ユニットファイルの型には、、、、、、、、（cronライクなジョブスケジューラとして使用できる）、、およびなどがある。
コアコンポーネントおよびライブラリ.
systemdは統合されたアプローチに従い、起動シェルスクリプト、pm-utils、inetd、、syslog、watchdog、cronおよびなどの様々なデーモンやユーティリティの代替も提供する。systemdのコアコンポーネントには以下が含まれる:
MACHINECTL
はプロセス識別子 (PID) ではなくLinuxカーネルのcgroupsサブシステムを使うことでプロセスを追跡する。このため、デーモンは2回forkしてもから逃れることができない。はcgroupsだけを使うのではなく、ソフトウェアコンテナの作成と管理を容易にするユーティリティプログラムであるとによりcgroupsを強化する。バージョン205から、systemdはそのLinuxカーネルcgroupsへのAPIであるControlGroupInterfaceも提供する。Linuxカーネルcgroupsはkernfsをサポートするよう改造されており、さらに統一された階層構造をサポートするよう修正中である。
補助コンポーネント.
systemd一式はLinux initシステムの代替を提供することを第一の目的としているが、それ以外にも以下のコンポーネントを含む追加機能を提供する:
他のソフトウェアとの統合.
systemdとGNOMEデスクトップ環境との相互運用性を向上させるため、systemdの共著者であるLennart PoetteringはThe GNOME Projectに対し、systemdをGNOME 3.2の外部依存にすることを考慮するよう要請した。
2012年11月にThe GNOME Projectは、基本的なGNOME機能はsystemdに依存すべきでないとの結論を出した。しかしGNOME 3.8では当時systemdのみが提供していたと、ConsoleKit APIとのどちらかをコンパイル時に選べるようになった。Ubuntuは独立したを提供したが、ほとんどのLinuxディストリビューションにおいてはsystemdは"事実上"GNOMEの依存ソフトウェアになった。こうなったのはConsoleKitがもはや保守されている状態ではなく上流ではの使用を推奨していることが主な理由である。Gentoo Linuxの開発者達もOpenRCをこれらの変化に対応させようとしたが、その実装には多くのバグがあったため、systemdをGNOMEの依存ソフトウェアにした。
GNOMEはさらにを統合した。Mutterはバージョン3.13.2現在、Waylandセッションにおいてを依存ソフトウェアとしている。gnome-sessionをsystemdに置き換える計画があるが、systemdはPID 1として実行"されない"でさらにgnome-sessionはLinux以外のシステムでも利用できるままである。systemdはLinuxカーネルAPIを大量に使うため、Linuxしかサポートせず他のオペレーティングシステムへの移植は容易ではない。このため、OpenBSDのようなLinux以外のオペレーティングシステムは互換APIを提供する必要がある。
2014年9月のZDNetのインタビューでセオドア・ツォーは、技術的な課題よりも多いsystemdの中央集権型設計哲学をめぐる議論は、Linux生態系の均一化に向かう危険な一般的傾向の兆候であり、オープンソースコミュニティのあちこちを疎外して排斥することで代替プロジェクトの可能性がほとんど残らなくなるという意見を述べた。この中で彼は標準でない設定に対するThe GNOME Projectの姿勢との類似点を見い出した。後にツォーはソーシャルメディアで、2人の重要な開発者の姿勢とGNOME開発者の姿勢とを比較した。
グラフィカルフロントエンド.
以下に示すグラフィカルフロントエンドが利用できる:
採用および反響.
ほとんどのディストリビューションはデフォルトでsystemdをブートするが、systemd以外のinitシステムを使えるディストリビューションもある。systemd以外のinitシステムに変更する場合は、適切なパッケージをインストールすればよい。DebianのフォークであるDevuanはsystemdを避けるつもりである。
歴史と論争.
2011年5月、Fedoraはsystemdをデフォルトとして利用できるようにした最初のメジャーLinuxディストリビューションとなった。
2011年7月、Lennart PoetteringはDebianがFreeBSD版 (kFreeBSD) もあるためsystemdの正式採用をためらっていたことを問題とは考えず、「Debian kFreeBSD はおもちゃのOSだ」と発言した。
2012年のインタビューでSlackwareの代表であるは、systemdアーキテクチャについての不安を述べ、systemdの設計が狭義に定義された機能による相互接続ユーティリティというUNIX哲学に反しているという彼の信念を表明した。2014年8月現在、Slackwareはsystemdのサポートや使用をしていないが、Volkerdingはsystemdへ変更する可能性を否定していない。
2013年10月から2014年の間、Debian Technical Committee内でDebian 8 "jessie" のデフォルトとしてどのinitシステムを使うかを話し合うための長期に渡る議論がDebianメーリングリストで起こり、その結果としてsystemdを選ぶことになった。この議論は広く公開され、この結論に引き続き議論がDebianメーリングリストで続いている。
2013年1月、Lennart Poetteringは"The Biggest Myths"と呼ばれるブログポストでsystemdについての懸念に対処しようとした。systemdをめぐり続いている論争の後の2014年10月、Poetteringは「オープンソースコミュニティはくそったれだらけで、他の誰よりも私が彼らの最もお気に入りの標的になっているのだろう」と不満を漏らした。続けてPoetteringはオープンソースコミュニティの状態をリーナス・トーバルズなどのカーネル開発者のせいにした。
2014年2月Debianの決定がされた後、ubuntuコミュニティのマーク・シャトルワースは2013年10月初期のコメントでsystemdは「非常に侵略的で正当化されることはほぼない」と評したにもかかわらず、systemd実装についてはUbuntuもやり抜くとブログでアナウンスした。
2014年3月、エリック・レイモンドはsystemdの設計目標はミッションクリープでソフトウェアの肥大化の傾向があると言った。2014年4月、リーナス・トーバルズはユーザーやバグレポートに向けてsystemdの中心開発者であるKay Sieversの姿勢についての不安を表明した。
2014年4月後期、systemdの採用に反対する様々な理由を並べたWebサイトを使って、systemdのボイコットキャンペーンが行われた。
2014年4月の"InfoWorld"で発行された記事で、Paul Veneziaはsystemd論争について書き、この論争をUNIX哲学の破壊と「自分達は何も間違っていないはずだと固く信ずる巨大なエゴ」にあると考えた。この記事はsystemdのアーキテクチャを、幅広い機能範囲で使われ酷評されるMicrosoft Windowsのシステムコンポーネントであるsvchost.exeのアーキテクチャとよく似ていると述べた。
2014年11月、DebianのメンテナーでTechnical CommitteeのメンバーであるJoey Hess、Russ Allbery、イアン・ジャクソンと、systemdパッケージメンテナーであるTollef Fog Heenが自らの地位を辞した。Debianのメンテナーであった3人は全員、通常のメンテナンスを事実上不可能にしてしまうDebianやオープンソースコミュニティ内におけるsystemd統合についての論争に関係する並外れたストレスレベルに身をさらしながら、公開されているDebianメーリングリストや個人ブログで決定を正当化した。
2014年12月、自身を"Veteran Unix Admins"と呼ぶグループがDevuanと呼ばれるDebianのフォークをアナウンスした。この意図はデフォルトでsystemdをインストールしないDebian派生を提供することである。