今回はLinuxのブートプロセス(起動順序)についてまとめてみました。
一般的なブートプロセスは、
BIOS → ブートローダ → カーネル → init の順番です。
それでは細かく見ていきましょう。
■BIOS
(Basic Input Output System)
マザーボードに搭載されているプログラムで、CPUからディスプレイ、キーボード、マウスに至るまでの管理や制御をしている。
マシンの電源をオンにするとまずBIOSが起動し、
ストレージ(HDDなど)などに関して最低限の認識を行い、起動デバイスの優先順位を決める(こちらの順位は変更することも可能)。
順番に各デバイスの※MBRを読み込み、読み込んだブートローダに制御を移す。
BIOSは最近ではUEFI(Unified Extensible Firmware Interface)に置き換わりつつある。
※MBR…ストレージの先頭にある小さな領域。ブートローダが格納されている
↓
■ブートローダ
OSを起動するためのプログラム。MBRに保存されている。
LinuxではGRUB(GRand Unified Bootloader)が一般的に採用されている。
ストレージ内のカーネルをロードし、制御を移す。
↓
■カーネル
OSの核となる部分。
高度にハードウェアを認識・制御し、各種デバイスなど様々な初期化処理を行う。
initプロセスを起動する。
↓
■init
カーネルによって最初に起動されるプロセス。
全てのプロセスの親で、PIDは1。
設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ち上げる。
最近はupstartやsystemdなどがinitプログラムとして採用されており、システム起動時間がより短くなっている。
この順序を把握しておくと、OS起動の際にトラブルなどが起きても問題を特定しやすくなります。
参照資料
Linux - システムのブート (infraeye.com)
【Linux】ブートプロセスについて - Qiita
第5回 ブートローダ|Linux技術者認定機関 LPI-Japan [エルピーアイジャパン]