システムの起動とシャットダウン
電源の投入からOSが起動するまでの流れ
①システムの電源が投入されるとまずBIOS上のPOST(Power On Self Test)と呼ばれる自己診断プログラムが起動する。POSTはCPUやメモリ、をはじめディスク、グラフィックスキーボードコントローラ等の各種コントローラに問題がないかを診断し、問題を見つけた場合にはそれを表示したり、ビープ音でユーザに報告する。
②BIOSがマスターブートレコードにあるブートストラップローダを起動する。これはマスターブートレコードの先頭から445バイト目までに格納された小さなプログラムで、BIOSによってメモリに読み込まれた後実行される。
③ブートストラップローダは、2次ブートローダであるLILOやGRUBを起動する。OSの起動は、この2次ブートローダによって行われる。
④2次ブートローダは、ディスクからカーネルを読み込んでそれを起動する。
⑤カーネルは起動すると各種デバイスを初期化した後、ルートファイルシステムをマウント(Read Only)する。
⑥カーネルは最初のプロセスすなわち/sbin/initを起動する。initはカーネルが最初に起動するプロセスのため、そのプロセスIDは常に1となる。
⑦initは/etc/inittabの中身をみて、先頭がsiで始まる行を検索する。この行は通常以下のようになっているはずである。
si::sysinit:/etc/rc.d/rc.sysinit
この/etc/rc.d/rc.sysinitでは、ネットワークの初期化や、ホスト名の設定といった様々な処理が行われる。
⑧initは次に
ランレベルを決定する。ランレベルは/etc/inittabのid行で指定されている。例えばランレベル5で起動する場合、/etc/inittabには以下のような設定がされている。
id:5:initdefault:
⑨設定されたランレベル用の起動スクリプトが実行される。このスクリプトは/etc/rcX.d(Xはランレベル)というディレクトリに格納されている(実際は/etc/init.dにあるスクリプトのシンボリックリンク)。
補足
マスターブートレコード中身
0バイト~445バイト目 ブートストラップローダー
446~509バイト目 パーティションテーブル(16バイトごとに4つのレコードが記録される)
ブート識別子 (アクティブパーティションかどうかのフラグ)
開始位置 (Starting CHS)
終了位置 (Ending CHS)
システム ID (パーティション ID。ファイルシステムの種類を記録)
オフセット
総セクター数
510~511バイト ブートシグニチャ(0XAA55)。BIOSはこの値をみてマスターブートレコードが有効かどうかを判断する
最終更新:2006年06月11日 23:39