Linuxの起動シーケンス

マシンの電源投入後、以下の順序で処理が進みます。

0. 電源の投入

1. BIOSがブート・ローダーを起動

2. ブート・ローダーがカーネルを起動

3. カーネルが /sbin/init を起動

4. /sbin/init が /etc/inittab を参照し、ランレベルに応じたスクリプト(/etc/rc.d/rc0.d 〜 rc6.d のいずれか)を実行

もう少し書くとこうなります。

  1. BIOS
    1. マザーボード内に記録されているBIOSが起動する。
    2. マザーボード上のデバイスを認識・初期化(メモリーのチェック等)する。
    3. どのデバイス(HDD、FD、光学ドライブ等)から起動するかチェックする。※ここではHDDが指定されていることを想定。
    4. HDDの先頭セクター(MBR: Master Boot Record)から、ブート・ローダー(CentOSの場合はGRUBが採用されている)を起動する。※GRUBの本体は、/bootディレクトリに格納されている。
  2. ブート・ローダー(GRUB: GRand Unified Bootloader)
    1. どのカーネルを起動するかチェックする。※「(1) GRUBの設定内容の調べ方」参照。
    2. 指定されたカーネルを起動する。
  3. カーネル
    1. /sbin/init を起動する。
  4. /sbin/init
    1. /etc/rc.d/rc.sysinit を起動する。※「(3) rc.sysinit の内容」参照。
    2. /etc/inittab を参照し、ランレベルに応じたプログラム起動スクリプトを実行する。※「(2) ランレベルの調べ方」参照。
    3. 実行されたスクリプト(/etc/rc.d/rc0.d 〜 rc6.d のいずれか)が各種サービスを起動する。