7.1. はじめに

Linux システムの起動時には実行されるタスクがいくつかあります。 実質的および仮想的なファイルシステムのマウント、デバイスの初期化、スワップ有効化、ファイルシステムの整合チェック、スワップパーティションなどのマウント、システムクロックの設定、ネットワーク起動、システムデーモンの起動、そしてユーザー指定によるタスクの起動です。 この処理過程は適正な順序により実行されることが必要ですが、同時に出来るだけ速く処理されることも必要になります。

7.1.1. System V

System V は古くからあるブートシステムであり、Unix や Unix ライクである Linux において 1983年頃より活用されています。 小さなプログラム init があり、これが login のような基本的なプログラムを (getty を通じて) 設定しスクリプトを実行します。 そのスクリプトは通常 rc と命名され、他のスクリプトの実行を制御します。 こうしてシステムの初期化を行うタスクが処理されます。

init プログラムは /etc/inittab ファイルにより制御されます。 そしてユーザーが設定可能なランレベルを設定します。


0 — 停止 (halt)
1 — シングルユーザーモード
2 — マルチユーザー、ネットワークなし
3 — フルマルチユーザーモード
4 — ユーザー定義
5 — フルマルチユーザーモード、ディスプレイマネージャーあり
6 — 再起動 (reboot)

通常のデフォルトランレベルは 3 か 5 です。

長所

  • 確立されていて、十分に理解されているシステムであること。

  • 容易にカスタマイズ可能であること。

短所

  • 起動が遅いこと。 中程度の処理性能による LFS システムの場合、最初のカーネルメッセージの出力からログインプロンプトまでの処理時間は 8 から 12 秒程度。 ログイン後のネットワーク接続の確立に 2 秒ほど要する。

  • 起動タスクがすべて順番に行われること。 これは前項にも関係する。 ファイルシステムのチェックなどの処理に処理遅延があったとすると、起動処理全体の処理時間を遅らせることになる。

  • コントロールグループ (control groups; cgroups) やユーザーごとの適正なスケジュール共有といった、最新機能には直接対応していないこと。

  • スクリプト追加にあたっては手作業を要し、固定的な順序を考慮しないといけないこと。