PC が CPU をブートする際、 CPU は読み出し専用メモリからコードを取り出して実行します。 このコードが基本入出力システム、つまり BIOS です。 それから、BIOS は最初のハードディスクのマスターブートレコードから、 ブートローダーをロードします。 [1] 続いて、ブートローダーがオペレーティングシステムをメモリに読み込み、 それを起動します。 [2]
BIOS もブートローダーも厳密に言えば不要です。例えば、 こういうバージョンの Linux がありますが、これは、普通は BIOS を内蔵しているフラッシュメモリから直接起動します。 Linux は、もともとカーネルをディスクの然るべきセクターに置いておけば、 対話的なブートローダーが無くても走るようになっているのです。
それでもブートローダーを使うのは、次のような利点があるからです。
複数のオペレーティングシステムがブートできます。詳細は、 Linux + Windows HOWTO を参照してください。
対話的にパラメータをカーネルに渡せます。 ハードウェアの問題を解決する場合に、これが役に立ちます。 例えば、割り込みラインのいくつかを無効にできるし、 ドライブへのダイレクトメモリアクセスを無効にできる、等々です。 カーネルパラメータのリストについては、 Linux BootPrompt-HOWTO [3] を参照してください。
別々のカーネルを対話的にロードできます。 これは新しいカーネルをインストールする際に役立ちます。 というのは、こうすれば、 正しく動作するカーネルを簡単な予備にできるからです。
こういった理由から、システム管理者はシリアルコンソールから、 ブートローダーを対話的に管理可能にする必要があるのです。
LILO や GRUB、 SYSLINUX は、 IBM PC では一般的なブートローダーです。お使いの Linux では、これらのうちどのブートローダーを使っているのかを調べて、 そのブートローダーに該当するセクションの指示に従ってください。
[1] | IBM PC/AT のハードウェアにはよくあることですが、 “最初のハードディスクの MBR から、 ブートローダーをロードする” というのは説明が簡単すぎます。 BIOS の設定が許せば、 BIOS 拡張を搭載しているコントローラカードなら、 どれに接続されているハードディスクでも、 そのうち最初に検出した二台のハードディスクから MBR がロードできます。したがって、 最初に検出した二台の IDE ディスクのうちの一台と、 最初に検出した二台のSCSI ディスクのうちの一台から、 MBR はロードできます。 |
[2] | これも説明が簡単すぎます。 MBR が 512 バイトというのは小さ過ぎて、 複雑なオペレーティングシステムを、 充分ロードできるだけのプログラムは収まり切れません。 ですから、ほとんどのブートローダーには段階が二つあります。 最初の段階は MBR の中にあり、 ディスクのどこか (例えば最初のパーティションのブートセクターのような場所) から、ブートローダーの第二段階をロードすることしかできません。 ブートローダーの第二段階では、ユーザーインタフェースを表示して、 オペレーティングシステムをロードします。 |
[3] | 邦訳は、 Linux BootPrompt-HOWTO です。 |