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

bios bootloader grub

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

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

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

  29  aoeui  2012-05-27


ベストアンサー

BIOS はカーネルをロードする方法を知る必要があり、これは BIOS を過度に複雑にします

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

Unixとインターネットの基礎知識 HOWTOより

なぜ BIOS がカーネルを直接ロードしないのか、なぜブートローダとの 2 段階のプロセスが必要なのか、と疑問に思うかもしれません。まあ、BIOS はあまり賢くありません。実際、BIOS は非常に愚かで、Linux は起動後には全く使いません。BIOS はもともと小さなディスクを持つ原始的な 8 ビット PC 用に書かれたもので、文字通りカーネルを直接ロードするのに十分なディスクにアクセスすることができません。ブートローダのステップはまた、万が一 Unix があなたにとって十分でない場合に備えて、ディスク上の異なる場所からいくつかのオペレーティングシステムのうちの一つを起動することを可能にします

BIOSが最初に実行されるプログラムとしては:(Wikipediaより)

BIOSソフトウェアはPCに内蔵されており、電源投入時にPCが最初に実行するコード(「ブートファームウェア」)です

しかし、ファームウェアはソフトウェアです。ブートローダは、コンピュータ上で動作する最初のユーザ定義のソフトウェアの一部として見ることができます

29  Renan  2012-05-27


理由は柔軟性です。1つのハードディスク上に複数の異なるOS(Windows、Linuxなど)があるかもしれませんし、同じOSの異なるバージョンがいくつかあるかもしれません。そのため、ハードディスクにインストールされている各 OS がどこにあるのか、どのようにロードするのか、どの OS をロードするのか、メニューを表示するのかしないのか、などを知っている OS に依存しないコードがあった方が良いでしょう。これがブートローダです

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

コンピュータの起動時に最初に実行されるソフトウェアプログラムについて: ファームウェアとソフトウェアの区別は非常に薄く、現代のコンピュータの起動プロセスは非常に複雑です。BIOS自体も一枚岩のプログラムではなく、いくつかの異なるステージが連結されています。しかし、ブートローダは、最初に実行されるユーザーが変更可能なコードです。これは、ユーザーが損傷したり、消去したり、ウイルスに感染したりする可能性のあるコードの最初の部分です。つまり、技術的にはBIOSが最初に実行されるソフトウェアですが、コンピュータが起動しない場合、ユーザーはそれが大丈夫かどうかを確認する必要があるという意味では、ブートローダが最初だと思います

11  haimg  2012-05-27


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

Three reasons:

  • 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  2014-01-25


タイトルとURLをコピーしました