F.2.4. sbin/init プログラム
sbin/init プログラム (init とも 呼ばれる) は、ブートプロセスの残りの部分を調整し、ユーザーのために環境を設定します。
init コマンドが起動すると、システム上で自動的に起動するすべてのプロセスの親または祖父母になります。まず、
/etc/rc.d/rc.sysinit
スクリプトを実行し、環境パスの設定、スワップの開始、ファイルシステムのチェック、その他システム初期化に必要なすべてのステップを実行します。例えば、ほとんどのシステムはクロックを使用しているので、rc.sysinit は
/etc/sysconfig/clock
設定ファイルを読み込んで、ハードウェアクロックを初期化します。他の例としては、初期化しなければならない特別なシリアルポートプロセスがある場合、rc.sysinit は
/etc/rc.serial
ファイルを実行します。
init コマンドは、次に
/etc/event.d
ディレクトリーにある、各 SysV init ラン レベルでどのようにシステムをセットアップすべきかを記述したジョブを処理します。ランレベルは、SysV /etc/rc.d/rc<x >. d/
ディレクトリーに記載されているサービスによって定義される状態、または モード であり、<x>は ランレベルの番号である。SysV init のランレベルについての詳細は、「SysV Init Runlevels」 を参照してください。
次に、init コマンドは、システムのソース関数ライブラリーである
/etc/rc.d/init.d/functions
を設定し、プログラムの起動、終了、PID の決定方法などを設定する。
init プログラムは、適切な
rc
ディレクトリーで、/etc/inittab
でデフォルトとして指定されたランレベルを探して、すべてのバックグラウンドプロセスを開始します。rc
ディレクトリーは、ランレベルに対応した番号が付けられています。例えば、/etc/rc.d/rc5.d/は
ランレベル 5 用のディレクトリーです。
ランレベル 5 で起動する場合、init プログラムは
/etc/rc.d/rc5.d/
ディレクトリーを検索して、どのプロセスを起動停止するかを決定します。
以下は、
/etc/rc.d/rc5.d/
ディレクトリーの一覧の例です。
このリストにあるように、実際にサービスを起動停止するスクリプトは、
/etc/rc.d/rc5.d/
ディレクトリーには一つも配置されていない。むしろ、/etc/rc.d/rc5.d/
にあるすべてのファイルは、/etc/rc.d/init.d/
ディレクトリーにあるスクリプトを指す シンボリックリンク である。シンボリックリンクは 各 rc
ディレクトリーで使用され、シンボリックリンクを作成、変更、削除することにより、それらが参照する実際のスクリプトに影響を与えることなくランレベルを再設定することができます。
各シンボリックリンクの名前は、
K
またはS
のどちらかで始まります。K
のリンクはそのランレベルで強制終了されるプロセスで、S
で始まるものは起動されます。
init コマンドは、まず、/etc/rc.d/init.d/<command> stop コマンドを発行して、ディレクトリー内のすべての
K
シンボリックリンクを停止します。ここで <command>は 停止するプロセスです。そして、/etc/rc.d/init.d/<command> start を発行してS
のすべてのシンボリックリンクを開始します。
注記
システムの起動が完了した後、root でログインして同じスクリプトを実行し、サービスを起動停止することができます。例えば、/etc/rc.d/init.d/httpd stop という コマンドは、Apache HTTP Server を停止させます。
各シンボリックリンクには、開始の順番を決めるための番号が振られています。この数値を変更することで、サービスの起動停止順を変更することができます。数字が小さいほど早く開始されます。同じ番号のシンボリックリンクは、アルファベット順に開始されます。
注記
init プログラムが最後に実行するものの 1 つが、
/etc/rc.d/rc.local
ファイルです。このファイルは、システムのカスタマイズに便利です。rc.local
ファイルの使用方法については、「ブート時に追加プログラムを実行する」 を参照してください。
init コマンドがランレベルに適切な
rc
ディレクトリーを進行した後、アップスタートは /etc/event.d
ディレクトリーのジョブ定義によってランレベルに割り当てられた各仮想コンソール (ログインプロンプト) 用に /sbin/mingetty プロセスをフォークします。ランレベル 2~5 には 6 台すべてのバーチャルコンソールがあり、ランレベル 1(シングルユーザーモード) には 1 台、ランレベル 0 と 6 には 1 台もありません。sbin/mingetty プロセスは、tty デバイスへの通信経路を開きます。[18]を設定し、ログインプロンプトを表示し、ユーザーのユーザー名とパスワードを受け入れ、ログイン処理を開始します。
ランレベル 5 では、アップスタートは
/etc/X11/prefdm
と呼ばれるスクリプトを実行します。prefdm
スクリプトは、優先 X ディスプレイマネージャーを実行します。[19] - etc/sysconfig/desktop
ファイルの内容に応じて、gdm、kdm、xdm のいずれかを使用します。
終了すると、ランレベル 5 で動作し、ログイン画面が表示されます。