2022概要Linuxを触った方なら一度は「systemd」という名前を聞いたことがあるかもしれません。今日はこいつが何者なのかを紹介しようと思います。systemdは一言で言えば複雑なシステム(巨大な航空機)を操縦するパイロットのようなものです。現在のほとんどのディストリビューションは、アンチsystemdを掲げるなどの思想が強いディストリビューションでない限りsystemdが標準です。systemdはRedHatのエンジニアによって開発されました。PluseAudioと同じ開発者であり、この方は後にFlatpakの基礎となる考えを考案した人でもあります。実際にどう動くのかsystemdはカーネルが起動してからシステムを利用可能な状態にするのが主な役割です。ブートローダーがカーネルを読み込み、カーネルの起動が完了するとカーネルは/sbin/initをPID1として実行します。systemdを使用する環境だとこれはsystemdの実行ファイルへのシンボリックリンクとなっているので、systemdがPID1として起動します。ここからがsystemdの出番です。カーネルのみが起動している状態ではグラフィカルシェルはもちろん、CLIですら使用できず最低限の機能しか起動していない状態です。ここでsystemdは必要なサービスやプロセスを次々と起動させシステムを利用可能な状態にします。航空機で例えるのであれば離陸し水平に飛行できるようになるまでの段階です。ここからがやや複雑な部分です。systemdはユニットと呼ばれる設定ファイルを元にシステムを構成し起動させます。ユニットには、サービスの起動に関する設定やパーティションのマウントに関する設定などの複数の種類があります。ここで実際にどんなユニットがあるのかお手元の環境で見てみましょう。適当な環境で実行してみてください。完全なリストはここから見れます。.mountパーティションのマウントに関する設定。一部は/etc/fstabを元に自動生成される。.pathパスの変更を監視する設定。パスのディレクトリやファイルの内容が変わったら実行するコマンドを定義する。.serviceプロセス(デーモン)の起動に関する設定そのサービスが何か別のサービスに依存しているのか、どのサービスが起動した段階でそのプロセスを起動させるべきなのかそのプロセスを起動させる際に実行するコマンドプロセスが異常終了した際にどうするかなどが記述されています。.targetユニットの集まり。複数のユニットをグループ分けにする。詳細は後述ターゲットとは何か例えばLiunxディストリビューションを起動させるといっても最終的にグラフィカルシェルを起動させるのか、あるいはコマンドラインモードで起動させサーバーとして使うのかなど様々です。この際に役立つのが.targetユニットです。どのモードで起動させるかを設定するのに.targetは使われます。内容が最終的に起動することを目標にユニットの設定を解析し起動順序を設定し、それに沿って各サービスを起動させたりファイルシステムをマウントしたりします。このdefault.targetはデスクトップ環境ではgraphical.targetへのシンボリックリンクになっています。サーバーなどの環境ではmulti-user.targetへのシンボリックリンクとなっています他にもpoweroff.target(電源オフ)やrescue.target(レスキューモード)、reboot.target(再起動)など様々なターゲットがあります。勘が良い方なら気づくかもしれませんがpoweroff.targetはシャットダウン時に、reboot.targetは再起動時に利用されます。忘れられがちですが、システムをシャットダウンするときにもsystemdは仕事をします。サービスやプロセスを順次安全に終了させるのが役割です。航空機で言えば着陸です。いざ起動やシャットダウンをしたからといって安心できるわけではありません。何らかのプロセスが異常終了し、システムの一部の機能が利用できなくなることがあります。このような際にsystemdは停止したデーモンを再起動しシステムの修復を試みます。(ただしサービスの設定ファイルに異常終了時再起動するという設定がない場合は何もしませんが、重要なサービスの設定ファイルに大体再起動するよう書かれています)大抵の場合、これで自体は収束します。航空機の例えで言うのであれば飛行中に何らかのアクシデントが発生し、それにパイロット(ここではsystemd)が対応するようなものです。まとめここまで見てきたとおり、systemdはLinuxシステムにおいて極めて重要なプログラムであると言えます。それと同時に複雑なシステムの全体像を設定しやすくしてくれています。systemdが最初から全ての人に歓迎されていたわけではありません。UNIX哲学に反しているなどでGnome3論争と合わさり一時期コミュニティが大荒れ状態になったこともあるそうです。systemdが現在標準であり、Linuxディストリビューションをより扱いやすいものにしてくれたという事実は変わりません。普段何気なく使っているディストリビューションでも、こうして掘り下げてみると面白い発見がありました。systemdは現在も進化を続けており、今度時間があったらsystemd-bootやsystemd-homedも試してみたいなと個人的には考えています。最後まで読んでいただきありがとうございました。NOTICE当ウェブサイトの閲覧を続行することで、当ウェブサイトのプライバシーポリシーに同意したものと見做されます。21E条(いずれもその後の改正を含む)に該当)が含まれるコンテンツがあり、重大なリスクおよび不確定要因を含んでいます。意図に関わるその他同様の用語および表現によって識別することができます。すべての将来予想に関する記述にこうした語句が含まれているわけではありません。さまざまな要因によって、上記の将来予想に関する記述で明示または黙示した結果と実際の結果との間に重大な相違が生じる可能性があります。当ウェブサイトのコンテンツに含まれる将来予想に関する記述は、あくまで記述当日現在の事象についてのみ言及しています。当ウェブサイトは、法律で義務付けられた場合を除き、コンテンツ投稿日の日付以降の事象や状況を反映するために、あるいは新しい情報や予期しない事象の発生を反映するために、将来予想に関する記述を更新する義務を負いません。将来予想に関する記述で開示した計画、意図、予想は実際に実行・達成されない場合があるため、このウェブサイトの将来予想に関する記述に過剰に依存すべきではありません。当ウェブサイトの情報はなるべく正確であるように記述されていますが、当ウェブサイトの内容の正確性に関する保証は存在しません。低下、精神的苦痛など、いかなる種類の損害に対しても、当ウェブサイトの管理人及びコンテンツの執筆者は責任を負いかねます。EULA、利用規約(TOS)、プライバシーポリシーの本文は法的効力を持ちます。reserved.本ウェブサイトのコンテンツに記載されている商標および名称は、各所有者の商標である可能性があります。