BIOSはMBRからフェーズ1ブートローダをロードする必要がありますが、UEFIがロードしないのはなぜですか?

BIOSはMBRからフェーズ1ブートローダをロードする必要がありますが、UEFIがロードしないのはなぜですか?

BIOSはMBRからフェーズ1ブートローダをロードする必要がありますが、UEFIがロードしないのはなぜですか?

これは、BIOSが64ビット(および32ビット)メモリを処理できないのに対し、UEFIはすべてのメモリに直接アクセスできるためです。それとも私が間違っていますか?

ベストアンサー1

MBRはパーティションスキーム(パーティションがディスクに表示される方法のレイアウト)です。クラシックBIOSはパーティションを理解していません。これは、ブートディスクのセクタ0(元はシリンダヘッドトラック、現在は通常論理ブロックアドレッシング)から512バイトをロードし、2バイトの署名を確認し、署名が一致した場合にコードを実行します。 BIOSのフェーズ1ブートローダは、16ビット実行コードをロードし、署名用に2バイトを予約するディスクの512バイト領域です。

対照的に、UEFIはMBRとGPTを理解し、2つのパーティションシステムのうちの1つを使用して、特別に定義されたパーティションにあるOSの起動環境であるフェーズ1ローダーファイルをロードし、複数のチップブートタイプでカスタマイズすることもできます。 。使用可能な物理メモリの量が異なります。

UEFIを実装するBIOSは、特定の種類のパーティションを読み取り、そのコードをメモリにロードする方法を知っています。ロードすると、UEFIブート環境は32ビットモードまたは64ビットモードを使用し、ディスク上の任意の場所でオペレーティングシステムをロードし、ロードするオペレーティングシステムの選択、起動条件が正しいことを確認するなどの追加サービスを提供できます。安全など、パーティション全体を最初のステップブートローダとして使用します。

BIOSは従来、CPUモード(拡張モード、ロングモードなど)の切り替えやオペレーティングシステムの起動条件を変更するゲートA20の変更が制限されていました。この制限はまた、セクタ 0 ブートローダがアクセスできるメモリの量やロードできるセクタの数が制限されることを意味します。また、この場合、フェーズ 1 ブートローダーは通常、フェーズ 2 ブートローダーをロードするために使用可能なスペースの大部分を必要とするため、CPU モードを切り替えたり、より多くのメモリーを活動化する方法はありません。

ブートセクタを起動可能にするには、2番目のステップブートローダがディスク上の特定のオフセットに物理的に存在する必要があります。デフォルトでは、BIOSに関するすべてのものは以前のバージョンとの互換性を維持します。ブートセクタコードは最初は16ビットモードでなければなりません。次のステップが32ビットモードであることを知っている場合は、32ビットモードに切り替えることができますが、限られた空き容量を他のタスクに利用することは困難です。ディスクからより多くのデータをロードし、その場所に移動します。

さらに、32ビットモードを使用すると、実行できる残りのコマンドの数がそれに応じて減少します。最後に、BIOSは16ビットの「ドライバ」のみを提供するため、CPUモードを変更するとBIOSが効果的に無効になります。これは、コアをロードする時間があるときに2番目のステップブートローダまで実行したくない作業です。ドライバーなど

BIOSがブートセクタのロードをサポートしている限り、16 GBのRAMと4 TBのハードドライブを備えた最新の8コアプロセッサにDOS 5.0(またはそれ以前)をインストールできます。そして必要なBIOS呼び出し(ディスクの読み取り/書き込み/検索、キーボード割り込みなど)を提供する限り、プログラムは基本オペレーティングシステムの制限内で実行され続けます(ハードドライブスペースの一部のみを分割できます)。メモリにアクセスし、コア1つのみを使用)。最も優れた最新のハードウェアは、30年以上前に書かれたコードをベアメタル(仮想マシンやエミュレータなし)でも引き続きサポートすることがよくあります。

おすすめ記事