init system basic

init プロセスが Linux の起動処理、システム管理、デーモンプロセス処理等を担当しており、 Sysvinit -> Upstart -> Systemd へと変遷してきた。

  1. BIOS 起動
  2. BIOS から boot loader が起動。
  3. boot loader が Linux kernel を起動。
  4. Linux kernel が init プロセス(PID 1)を起動。

boot loader とは

電源投入(システムリセット)時、OSやモニタ等基本システムを主記憶へ展開し、ユーザプログラムが実行できるようにするまでの処理を boot, bootstrap というが、 boot loader は、その処理で使われる不揮発性の補助記憶装置にある目的のプログラムを読出し、揮発性の主記憶に書込むプログラムである。

Sysvinit

  • 伝統的に使われてきた init システム
  • service を PID によって管理。PIDの場合、プロセスが2度 fork すると親プロセスと孫プロセスの関係性が切れる。
  • /etc/init.d 。
  • 処理は全てシェルスクリプトを記述する。

Upstart

  • Sysvinit システム改良版。
  • Ubuntu 等で採用。
  • event driven (イベント駆動型)。
  • Ubuntu の canonical チームが開発。
  • /etc/init 。
  • conf ファイルを記述する。

Systemd

  • シェルスクリプトを記述せず、Unit という単位で設定ファイルによる service 管理を行う。
  • 処理の細分化、並列実行、優先度設定、依存関係等を管理可能。
  • システム起動時だけで無く、プロセス起動のタイミングが柔軟に設定可能 (タイマー、ソケット通信検出、ファイルシステムのマウント等)。
  • service を cgroup によって管理するため、fork によるプロセスの親子関係が切れない。
  • 2014/12 release の CentOS 7 が Sysvinit から systemd に変更されている。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です