カーネル開発 GRUB マルチブートについて
参考文献
公式のマニュアルは下のサイトにあります。
GRUBマルチブートについて、詳しい情報はマルチブートの仕様書に書いてあります。
http://www.gnu.org/software/grub/manual/multiboot/
GRUBのマルチブートの利点
カーネル開発をするとき、多くのカーネルはカーネルを読み込むのにブートのコードも書かなくては行けない。
GRUBのマルチブートの機能を使うことによって、カーネルを起動するときブート部分をGRUB側に任せる。
GRUBの機能
GRUBはフロッピー、CD-ROM、ハードディスク、ネットワーク越しにブートができる。
GRUBが立ち上がれば、起動するときのオプションを変えることができる。
例えば、次のようなシナリオを考える。
ハードディスクから立ち上がるとき、いつも/boot/kernel からカーネルを読み込んでいたがこのカーネルが起動しなくなった。
このような場合が起こると思われたのでレスキュー用のカーネルを保存しておいた(/boot/rescue)。
このとき、起動するカーネルをGRUBの編集画面で/boot/kernelから/boot/rescueに変更し起動する事ができるようになる。
コンパイルしたカーネルのフォーマットがELF形式で読み込める。
カーネルの起動時に追加のモジュールを読み込める。
GRUBがやってくれることと
A20 gate
アドレスバスA20(A20 gate)の制御をしてくれる。
これで1M以降のメモリを使えるようになる。
CR0のBit 0(PE)
プロテクトモード(CR0のBit 0(PE))
リアルモードからプロテクトモード以降を行う。