はじめに
「systemd の思想と機能」 という技術書を読みましたので記録しておきます。
なぜ読んだか?
- systemd は現代の Linux を構成する統一された仕組みであり、Linux を理解するために不可欠な分野であるため
- 本書は 200 ページ程度なので systemd の概要を広く浅くサクッと掴むのによさそうだったため
感想など
- 狙い通り、systemd の概要を掴むことができたと思います
- 30 h ほどでサクッと (?) 読めました
- 前提知識として、LPIC 201 を合格レベルまで学習してから読むとちょうど良いと思いました
- LPIC-1 に合格したくらいのレベルだと、ちょっと頑張って読まないと内容的に難しい気がします
- 本書は systemd について幅広く紹介してくれています
- 普段の仕事で関係しそうな箇所は重点的に読んだり、実機操作 (EC2 RHEL 9.7) で動作を確認してみました
- 「あんま使わなそうだな」という箇所は流し読み程度にしました
systemd とは?
せっかくなので、systemd の概要を整理してみた
- "systemd" と一口に言っても、文脈によって何を指すのか異なる
-
プロセスとしての systemd
- いわゆる systemd プロセスのこと
- Linux サーバ起動時、ユーザーランドのプロセスとして一番最初に (PID 1 として) 起動されるプロセスである
- 一番最初に起動されるプロセスということで、systemd プロセスのことを init プロセスとも呼ぶ
- systemd が登場する前の SysVinit 環境 (~ RHEL 6) では、PID 1 の init プロセスは文字通り "init" という名前のプロセスだった
- 厳密には、systemd プロセスには「システム向けの systemd プロセス」と「ユーザー向けの systemd プロセス」の 2 種類がある
- システム向けの systemd プロセスは、前述の PID 1 のプロセスのことを指す
- systemd プロセス以降に起動されるあらゆるプロセスの親プロセスとなる
- ps コマンドであらゆるプロセスの親を辿ると PID 1 の systemd に辿り着く
- ユーザー向けの systemd プロセスは、PID 1 ではない PID で起動される
- ユーザーがログインしたタイミング等で、そのユーザーごとに 1 つ起動されるプロセス
- システム向けの systemd プロセスは、前述の PID 1 のプロセスのことを指す
-
Linux を管理する仕組みとしての systemd
- 「Service unit」「Target unit」「systemctl コマンド」「systemd-journald」「systemd-udevd」など、現代の Linux を様々な観点で管理する個々の仕組み、またはその総称として "systemd" という言葉が使われる
- systemd-journald や systemd-udevd などの各仕組みを構成する「コンポーネント群」という理解の仕方もできる
-
プロセスとしての systemd
- systemd は「systemd プロジェクト」にて開発されている
- systemd-journald や systemd-udevd を始めとして、Linux における様々な仕組みを「systemd」という統一した枠組みで開発している
- systemd-journald はログ管理を行う仕組み、systemd-udevd はデバイス管理を行う仕組みである
- systemd 登場以前の Linux では、ログ管理やデバイス管理を行うプログラムはそれぞれ個別に開発されてきており、仕組みとして統一されたものではなかった
- systemd では、ログ管理もデバイス管理も、「systemd」という共通基盤の基で開発する、という開発思想になっている
- そのため、個々の仕組みを個別に開発するよりも統一感のある仕組みとなっている
- 例
- 管理する対象は「unit」という単位で管理する
- 個々の unit に関連する設定ファイルを「unit 名.service」「unit 名.timer」といった形式に統一する
- systemd-journald と systemd-udevd は扱う領域は全くことなるものの、「仕組みや操作の考え方がなんとなく似ている部分が多い」というユーザー体験になる
- 例
- systemd-journald はログ管理を行う仕組み、systemd-udevd はデバイス管理を行う仕組みである
- systemd-journald や systemd-udevd を始めとして、Linux における様々な仕組みを「systemd」という統一した枠組みで開発している
おわりに
Linux を頑張りたいと思うのであれば、やはり systemd はある程度抑えておかなくてはいけないな、と思い本書を読みました。タイトルの通り、systemd の各仕組みに共通する思想を感じ取ることができたと思います。
やはりある分野を深めたいと思ったら、本で体系的に学ぶということは効果的だと感じました。概要はつかめたので、今後実務で systemd に触れていく中でさらに理解を深めていきたいですね。
