systemd
Systemdは、サービスを1つのシェルスクリプトではなくUnitという単位で管理し、設定ファイルとして持ちます。このため処理を細分化でき個別に実効することが可能です。また処理ごとの依存関係を明確にすることが出来ます。さらに処理が細分化されているということは、並列での実行も可能になります。例えばAの処理の後にBとCを並列実行する、というようなきめ細やかな設定が可能になります。
https://dev.classmethod.jp/cloud/aws/systemd-getting-started/
#systemctlコマンド
ログの確認
systemd によって起動された Unit のログは、/var/log/journal 以下にバイナリ形式で保存されるようになっています。そのため、ログの確認には journalctl コマンドを利用する。
-f で tail -f 的な動きになる。
https://qiita.com/sinsengumi/items/24d726ec6c761fc75cc9
systemd系の起動プロセス
次のプロセス順序で起動していく。
電源が入る
BIOSが起動し、ハードウェアを初期化
ブートローダが起動し、Linuxカーネルをメモリ上に展開する
Linuxカーネルが起動
ドライバなどがロードされ、systemdプロセスを起動
default.targetというUnitが処理される
システムの用途に適したターゲットが処理される
ログインを受け付け開始
これが基本的な起動プロセスだ。default.target(/etc/systemd/system/default.target)は他のターゲットへのシンボリックリンクとなっている。
https://eng-entrance.com/linux_startup
#Daemon
#initd
systemdは、システム管理デーモン、ライブラリおよびユーティリティの一式であり、管理および設定における中心的プラットフォームとしてLinuxコンピュータオペレーティングシステム用に設計されている。著者によるとsystemdはオペレーティングシステムの「基本的な積木」であると評され、UNIX System VやBSDから継承された(Linuxスタートアッププロセス中のユーザー空間で最初に実行されるプロセスである)Linuxのinitシステムを置き換えることを第一の目標としている。systemdという名前はファイル名の最後尾にdという文字を付けることでデーモンを区別しやすくするというUNIXの慣習を受け継いでいる。
systemdはLinux用に設計され、Linux API専用にプログラミングされている。systemdはGNU Lesser General Public License (LGPL) version 2.1以降という条件でフリーなオープンソースソフトウェアとして公表されている。
systemdの設計はフリーソフトウェアコミュニティにおける重要な論争の元となった。これはsystemdのアーキテクチャはUNIX哲学に反しており最終的に相互依存でがんじがらめの塊を作ってしまうと批評家達を主張させるようになっているためである。しかしながら2015年現在、主要なLinuxディストリビューションのほとんどはsystemdをデフォルトのinitシステムとして採用している。
systemdは統合されたアプローチに従い、起動シェルスクリプト、pm-utils、inetd、acpid、syslog、watchdog、cronおよびatdなどの様々なデーモンやユーティリティの代替も提供する。systemdのコアコンポーネントには以下が含まれる:
systemdはLinuxオペレーティングシステム用のシステムおよびサービスマネージャである。
systemctlはsystemdのシステムおよびサービスマネージャの状態を監視し制御できる。
systemd-analyzeはシステムブートアップパフォーマンス統計を決定し、システムおよびサービスマネージャからの他の状態と追跡情報を回収することために使うことができる。
MACHINECTL systemdはプロセス識別子 (PID) ではなくLinuxカーネルのcgroupsサブシステムを使うことでプロセスを追跡する。このため、デーモンは2回forkしてもsystemdから逃れることができない。systemdはcgroupsだけを使うのではなく、ソフトウェアコンテナの作成と管理を容易にするユーティリティプログラムであるsystemd-nspawnとmachinectlによりcgroupsを強化する。バージョン205から、systemdはそのLinuxカーネルcgroupsへのAPIであるControlGroupInterfaceも提供する。Linuxカーネルcgroupsはkernfsをサポートするよう改造されており、さらに統一された階層構造をサポートするよう修正中である。
systemdは単なるinitデーモンの名前ではなく、systemd initデーモンに加えjournald、logindおよびnetworkdの各デーモンとそれ以外の多くの低レベルコンポーネントを含む、ソフトウェアバンドル全体を指している。2013年1月、Poetteringはsystemdは1つのプログラムではなく、69個の個別バイナリから成る巨大なソフトウェア一式だと述べた9。systemdは統合されたソフトウェアスイートとして、伝統的なinitデーモンが自身の制御の元で実行するシェルスクリプトと協力して制御していた起動過程とランレベルを置き換える。その他にもsystemdは、ユーザーログイン、システムコンソール、デバイスホットプラグ(udevを参照)、計画された実行(cronを置き換える)、ロギング、ホスト名およびロケールを処理することで、Linuxシステムで共通するサービスの多くを統合する。
systemdはinitデーモンのように、systemd自身を含むバックグランドプロセスである全てのデーモンを管理するデーモンである。systemdはブート中に開始される最初のデーモンであり、シャットダウン中に終了される最後のデーモンである。systemdデーモンはユーザー空間のプロセスツリーのルートとなる。最初のプロセス (pid 1) は(親プロセスから分離した)デーモンプロセスが終了した際にSIGCHLDシグナルを受け取るため、UNIXシステムでは特殊な役割を持つ。このため、最初のプロセスはデーモンをモニタリングする目的のために特に適している。systemdはこの領域において、デーモンを自動的に再起動するのではなくデーモンを一度だけ開始してモニタリングをしないという伝統的なアプローチよりも改善しようとしている。
systemdはその起動過程の要素を並行に実行する。それは伝統的な起動過程のシーケンシャルなアプローチよりも高速である。プロセス間通信 (IPC) のため、systemdはUNIXドメインソケットとD-Busを実行しているデーモンから使えるようにする。将来の再呼び出しに備えて、systemd自身の状態をスナップショットに保存することもできる。
systemd一式はLinux initシステムの代替を提供することを第一の目的としているが、それ以外にも以下のコンポーネントを含む追加機能を提供する:
consoled
systemd-consoledはユーザーコンソールデーモンを提供し、Linuxカーネルの仮想コンソールサポートをより能力のあるユーザー空間コンポーネントで置き換えようとしている。systemd-consoledのプレビューバージョンは2014年10月にsystemd バージョン217の一部としてリリースされた。
journald
systemd-journaldはイベントロギングを担当するデーモンであり、そのログファイルは追加専用のバイナリファイルである。システム管理者はシステムイベントのログ出力をsystemd-journald、syslog-ngまたはrsyslogのどれで行うかを決めることができる。
logind
systemd-logindは様々な方法でユーザーログインとシートを管理するデーモンである。これはマルチシートの改善を提供し既に保守されていないConsoleKitを置き換える、統合されたログインマネージャである。XディスプレイマネージャにおいてConsoleKitをlogindに置き換えるのは最小限の移植で済む。これはsystemdバージョン30で統合された。
networkd
networkdによりsystemdは様々なネットワーク設定を行うことができる。バージョン209でnetworkdが最初に統合された時、静的に割り当てられたアドレスしかサポートせず、さらにブリッジ設定の基本的なサポートしかなかった。2014年7月に、IPv4ホストのDHCPサーバーやVXLANサポートといった新機能を追加したsystemdバージョン215がリリースされた。
timedated
systemd-timedatedはシステム時間、システムタイムゾーン、またはUTCとローカルタイムゾーンシステムクロックとのどちらかの選択といった時間関連設定のコントロールに使えるデーモンである。D-Busでアクセスできる。systemdバージョン30で統合された。
udevd
udevはLinuxカーネル用のデバイスマネージャである。udevは/devディレクトリを処理し、さらにデバイスの装着および脱着時におけるファームウェアのロードなどのユーザー空間アクションを全て処理する。2012年4月、udev用のソースツリーがシステムソースツリーにマージされた。
libudev
libudevはudevを利用するための標準ライブラリで、これによりサードパーティアプリケーションがudevリソースを照会できる。
https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Linux_kernel_unified_hierarchy_cgroups_and_systemd.svg/1280px-Linux_kernel_unified_hierarchy_cgroups_and_systemd.svg.png
https://ja.wikipedia.org/wiki/Systemd