回答:
BIOSはカーネルをロードする方法を知る必要があり、これはBIOSを過度に複雑にします:利用可能な多くの異なるオペレーティングシステムをロードする方法、カーネルパラメータをそれらに渡す方法などを知る必要があるBIOSを想像してください...
したがって、ハードウェアのみを初期化し、ブートローダーが格納されている既知の場所にジャンプします。次に、コントロールが渡されます。
以下からのUnixとインターネットの基礎HOWTO:
BIOSがカーネルを直接読み込まないのはなぜかと疑問に思うかもしれません。なぜブートローダーを使用した2ステッププロセスなのでしょうか。さて、BIOSはあまり賢くありません。実際、これは非常に愚かであり、Linuxは起動後はまったく使用しません。もともとは、小さなディスクを備えたプリミティブな8ビットPC用に作成されたもので、文字通り、カーネルを直接ロードするのに十分なディスクにアクセスできません。ブートローダーステップでは、Unixでは不十分な場合に、ディスク上の異なる場所から複数のオペレーティングシステムのいずれかを起動することもできます。
BIOSが実行される最初のプログラムである場合:(Wikipediaから)
BIOSソフトウェアはPCに組み込まれており、電源投入時にPCによって実行される最初のコードです(「ブートファームウェア」)。
しかし、ファームウェアはソフトウェアです。そのため、GRUBマニュアルは少なくともその部分で混乱を招くと思います。ブートローダーは、コンピューターで実行される最初のユーザー定義のソフトウェアと見なすことができます。
その理由は柔軟性です。1つのハードディスク(Windows、Linuxなど)に複数の異なるOSがある場合や、同じOSの複数の異なるバージョンがある場合があります。したがって、ハードディスクにインストールされている各OSの場所、各OSのロード方法、ロードするOS、メニューを表示するかどうかなどを知るOSに依存しないコードを用意することをお勧めします。ブートローダー。
BIOSは、ハードディスク(最初のセクター)の事前定義された場所にあるコードをロードして実行します。このコードをブートローダーと呼びますが、技術的には空のハードディスクにWindowsをインストールした場合、このコードもWindowsによってインストールされるため、特にWindowsブートローダーはWindows以外のOSをロードできないため、Windowsの一部と呼ぶことができます。
コンピューターの起動時に実行される最初のソフトウェアプログラムに関して:ファームウェア/ソフトウェアの区別はかなり薄く、現代のコンピューターの起動プロセスは非常に複雑です。BIOS自体もモノリシックプログラムではなく、いくつかの異なるステージが連鎖しています。ただし、ブートローダーはユーザーが変更できる最初の実行コードです。これは、ユーザーが損傷、消去、ウイルス感染などを行うことができる最初のコードです。したがって、技術的にはBIOSが最初に実行されるソフトウェアですが、コンピューターがユーザーを起動しない場合、ブートローダーは最初の意味です大丈夫かどうかを確認します。
BIOSがOSカーネルを直接ロードできないのはなぜですか?
3つの理由:
1981年に導入された当初のPCプラットフォームのBIOSは、CP / Mオペレーティングシステムと同じ役割で機能することを意図していました。つまり、いくつかのデバイスの薄い抽象化レイヤーと単純なディスクブートローダーです。CP / Mには、ファイルシステムを処理する「BDOS」と呼ばれる別のレイヤーがありました。DOSは当時流行していたオペレーティングシステムであったため、多くの点でCP / Mと類似しており、同様に構成されていました。BIOSは、OSのドライバーが現在果たす役割である、プラットフォームのハードウェア固有の側面を処理することを目的としていました。
OSとは別のファイルシステムという概念は、まだまだ定着していませんでした。
現時点では、RAMとROMは高価で希少なリソースでした。元のIBM 5150 PCは、わずか16KのRAMで入手できました(参照)。このシステムのROMサイズは48Kで、BASICインタープリターが含まれていました。当時は、標準のファイルシステムというものもありませんでした。
DOSがこのプラットフォームで最も人気のあるOSになり、その後Windowsがこのセットアップで動作するようになったため、この方法でBIOSを拡張して実際のブートローディング機能を含めることは考えられませんでした。
UEFIの機能については確信がありません-何らかの理由でWindowsによって使用されない実際のブートローディング機能を備えている可能性があります(Windowsはインストール時に独自のブートマネージャーを使用することを主張します)。U-Bootのような他の非BIOSファームウェアや、多くの電話やルーターのカーネルは、カーネルを直接ロードして実行します。BIOSがより多くのことを行うためにROMに余裕を持ち始めて以来、技術的な理由はありませんでした。