web-dev-qa-db-ja.com

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

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

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

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

28
aoeui

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

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

The Unix and Internet Fundamentals HOWTO から:

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

BIOSが実行される最初のプログラムであることについて:(from Wikipedia

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

しかし、ファームウェアソフトウェアです。したがって、GRUBマニュアルは少なくともその部分で混乱を招くと思います。ブートローダーは最初のuser-definedコンピューター上で実行されるソフトウェア。

28
Renan

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

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

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

10
haimg

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に空き領域が増え始めてから、もっと多くのことを行うことができるようになって以来、技術的な理由はありませんでした。

2
LawrenceC