#大まかな流れ
- BIOSがマスターブートレコードを読みに行く
- その中にあるブートローダを起動する。(ブートローダ:OSを起動するためのプログラム)
- ブートローダがどのブートセクタを読み込むか(どのOSを起動するか)パーティションテーブルを参照する
- 起動するOSがパーティションを見て分かったのでブートセレクタを読み込む
- ブートセクタが読み込まれるとOS起動のためのプログラムが起動する
- OS起動プログラムがOSを起動する
#Linuxシステムは以下の順序で実行される
- BIOSの起動 メモリのチェック、ハードウェア設定の読み込み、起動デバイスのチェック、起動デバイスのMBRに格納されたブートローダを実行します。
- ブートローダ カーネルをメモリにロードし、OSに制御を引き渡します。 Linuxで使用されるブートローダはGRUB2やGRUBがよく使われていますが、古いディレクトリビューションではLILOが利用されています。 またDVDやUSBから起動するライブメディアなどは、SYSLINUXが利用されています。
- カーネルとinitramfsのメモリロード まずカーネルの読み込みを行います。 その後、カーネルはinitramfsのマウントを行い、initramfsに保存されたカーネルモジュールの読み込みを行います。 カーネルモジュールの読み込みを行うことで、必要なドライバを全て読み込み、ルートファイルシステムのマウントが出来るようになります。
- ルートファイルシステムのマウント ルートファイルシステムの検索、エラーチェック、マウントを行います。
- initプロセスの起動 プロセスID1のプロセスinitが起動され、システムの初期化を行います。 その後、ランレベルに応じたサービスを起動します。