起動シーケンスの流れ
どうせUbuntuを使うなら少しくらい中身について本気で勉強してみるか!
なんて一時的に気分が盛り上がってしまったのでしばらく起動シーケンスについて書いてみます。
大雑把な流れを追うと
電源投入
↓
BIOS起動
↓
ブートローダー起動
↓
Linuxカーネル起動
↓
起動スクリプトの実行
↓
起動
といった感じになるようです。順を追って見ていくことにしましょう。
電源投入とBIOSの起動
BIOS(Basic Input/Output System)はその名のとおり各種プログラムと様々なハードウェアの間で基本的な入出力を行うためのプログラムです。
電源が投入されると同時に動き始め、CPUやハードディスクにメモリ、その他光学ドライブやディスプレイにキーボードといった搭載・接続されている各種ハードウェアによるシステム構成に対してテスト・認識・初期化を行うことでパソコンを起動する準備が整います。
一口にハードウェアといってもそれぞれのパーツが異なるメーカーだったりことなる品番であることから、その個体差を吸収して同一の部品として使えるようにしてくれるのがBIOSの大きな役割のひとつです。(これらを”抽象化”というそうです)
ハードウェアの用意が整ったら起動デバイスに指定されている記憶装置(ハードディスクや光学ドライブ、かつてはフロッピードライブなどから選択)を読みにいき、ブートローダを呼び出したところで一仕事完了となります。
昔のパソコンはこの後OSが起動した後もOSとハードウェアを繋ぐ役割も持っていたようですが現在はOS自身が直接ハードウェアを操作するようになっているため、OS起動完了後にBIOSにアクセスされることはないそうです。
次回はBIOSから呼び出されたブートローダについて調べてみます。