なぜブートローダーが必要なのですか?


29

BIOS、またはファームウェアとして機能する同様の何かが開始された後、私が知る限り、制御はブートローダーに渡されます。

BIOSがOSカーネルを直接ロードできないのはなぜですか?

また、GRUBマニュアルには、簡潔に言うと、ブートローダーはコンピューターの起動時に実行される最初のソフトウェアプログラムです。BIOSは最初に実行されるプログラムではありませんか?


回答:


28

BIOSはカーネルをロードする方法を知る必要があり、これはBIOSを過度に複雑にします:利用可能な多くの異なるオペレーティングシステムをロードする方法、カーネルパラメータをそれらに渡す方法などを知る必要があるBIOSを想像してください...

したがって、ハードウェアのみを初期化し、ブートローダーが格納されている既知の場所にジャンプします。次に、コントロールが渡されます。

以下からのUnixとインターネットの基礎HOWTO

BIOSがカーネルを直接読み込まないのはなぜかと疑問に思うかもしれません。なぜブートローダーを使用した2ステッププロセスなのでしょうか。さて、BIOSはあまり賢くありません。実際、これは非常に愚かであり、Linuxは起動後はまったく使用しません。もともとは、小さなディスクを備えたプリミティブな8ビットPC用に作成されたもので、文字通り、カーネルを直接ロードするのに十分なディスクにアクセスできません。ブートローダーステップでは、Unixでは不十分な場合に、ディスク上の異なる場所から複数のオペレーティングシステムのいずれかを起動することもできます。

BIOSが実行される最初のプログラムである場合:(Wikipediaから)

BIOSソフトウェアはPCに組み込まれており、電源投入時にPCによって実行される最初のコードです(「ブートファームウェア」)。

しかし、ファームウェアソフトウェアです。そのため、GRUBマニュアルは少なくともその部分で混乱を招くと思います。ブートローダーは、コンピューターで実行される最初のユーザー定義のソフトウェアと見なすことができます。


10

その理由は柔軟性です。1つのハードディスク(Windows、Linuxなど)に複数の異なるOSがある場合や、同じOSの複数の異なるバージョンがある場合があります。したがって、ハードディスクにインストールされている各OSの場所、各OSのロード方法、ロードするOS、メニューを表示するかどうかなどを知るOSに依存しないコードを用意することをお勧めします。ブートローダー。

BIOSは、ハードディスク(最初のセクター)の事前定義された場所にあるコードをロードして実行します。このコードをブートローダーと呼びますが、技術的には空のハードディスクにWindowsをインストールした場合、このコードもWindowsによってインストールされるため、特にWindowsブートローダーはWindows以外のOSをロードできないため、Windowsの一部と呼ぶことができます。

コンピューターの起動時に実行される最初のソフトウェアプログラムに関して:ファームウェア/ソフトウェアの区別はかなり薄く、現代のコンピューターの起動プロセスは非常に複雑です。BIOS自体もモノリシックプログラムではなく、いくつかの異なるステージが連鎖しています。ただし、ブートローダーはユーザーが変更できる最初の実行コードです。これは、ユーザーが損傷、消去、ウイルス感染などを行うことができる最初のコードです。したがって、技術的にはBIOSが最初に実行されるソフトウェアですが、コンピューターがユーザーを起動しない場合、ブートローダーは最初の意味です大丈夫かどうかを確認します。


1
経験から、ユーザーは確かにBIOSを破ることができます。
ハーミングモニカを停止

2

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に余裕を持ち始めて以来、技術的な理由はありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.