学んだように、initプロセスは Linux のブートプロセス中に最初に実行されるプロセスです。これは他のすべてのプロセスの親であり、システムを使用可能な状態にするために不可欠なサービスを起動する責任があります。
しかし、それはどのようにこれを達成するのでしょうか?
Linux の init システムには、サービス管理に対するアプローチが異なる 3 つの主要な実装があります。
System V Init
System V init(しばしばsysvinitと呼ばれます)は、Linux の従来の init システムです。これはスクリプトによって定義された順次起動手順に従います。システムの状態はランレベルによって管理され、各ランレベル(例:シングルユーザーモード、ネットワーキング付きマルチユーザーモード)には、起動または停止する特定のサービスセットがあります。これは、従来の Linux ブートプロセスにおける長年の標準でした。
Upstart
古い Ubuntu バージョンで見られる Upstart は、イベントベースの init システムです。これは System V の厳密な順次モデルから脱却しました。代わりに、Upstart は、ネットワークデバイスが利用可能になるなどのシステムイベントに応答して、サービス(ジョブと呼ばれる)を起動および停止します。これにより、より柔軟で高速なブート時間が可能になります。
systemd
Linux init システムの最新の標準はsystemdです。これは、依存関係を積極的に管理する目標指向のシステムです。単にサービスのリストを起動するのではなく、グラフィカルインターフェイスのようなターゲット状態を定義し、systemdはそのターゲットのすべての依存関係を満たすように動作し、多くの場合、サービスを並行して起動することでブートプロセスを大幅に高速化します。