カーネルが起動した後は
ここからは各種起動スクリプトや起動モジュールが次々と読み込まれていき、最終的にOSの起動が完了することになります。
UbuntuではUpstartというイベント駆動型のデーモンで、タスクやサービスをイベントベースで起動・停止します。
※一方、従来これと同じ起動時のタスク・サービスの管理を行ってきたsysinitというデーモンもありますがUbuntuでは上記のUpstartが使用されいます。というかこのUpstartはUbuntuが発祥のようで、従来のSystemVinitとの互換性を保つことを念頭に開発されたことから移植性も高く、しかも設定が容易で起動も早い!といい事尽くめのように書かれています。実際はどうなんでしょ?
Upstartデーモン起動~OS起動完了まで
ここでUpstartがキックされてからの一連の流れを確認してみます。とっても分かりやすく纏められている部分を見つけたので詳しくはコチラを。
- Upstartデーモンが起動し、startupイベントが発生
- /etc/event.d/rcS を順次読み込む
- 2の動作を受けて/etc/init.d/rcS を実行
- /etc/rcS.d/ 内の各シンボリックリンクが次々とキックされて/etc/init.d/以下の起動スクリプトが走る。全てのスクリプト処理が終わると/etc/event.d/rcS が終了する
- 4の終了を受けて「stopped rcS」イベントに移行。/etc/event.d/rc-default を読み込む
- Ubuntu(とその元になるDebianも)では基本のRunlevel=2となる
- /etc/event.d/rc2 が読み込まれ、/etc/init.d/rc2/ 以下のスクリプトが走る
- /etc/rc2.d/以下の各シンボリックリンクがキックされ、/etc/init.d/以下の各スクリプトが走り終わってOSの起動が完了
という流れになっているようです。
では、いざ自分のサーバで確認・・・と思ったら/etc/event.d/なるディレクトリがないじゃありませんか!
もう少し調べた結果、Ubuntu9.10辺りから/event.d/がなくなって全て/etc/init.d/以下に移動したようです。
さらに、後半で出てくるrc-defaultも見つかりません。。。
ここは自分で調べてみるしかないようです。。。
ということで電源の投入~OSの起動完了までをざっくりと見てきました。それぞれを深く見ていきたいんですが、まずは今回のUpstartイベント関連について調べてみようと思います。