| 年が始まった | 1981年[ a ] |
|---|---|
| 組織 | 当初はIBMの独自ソフトウェアとして開発されましたが、後に業界標準として普及しました。 1996年には、コンパック、フェニックス・テクノロジーズ、インテルによってBIOSブート仕様が策定されました。 |
| 後継 | UEFI |
コンピューターにおいて、BIOS(/ ˈ b aɪ ɒ s、- oʊ s /、BY -oss、-ohss ;基本入出力システム、システムBIOS、ROM BIOS、BIOS ROM 、またはPC BIOSとも呼ばれる)は、オペレーティングシステムとプログラムにランタイムサービスを提供し、ブートプロセス(電源投入時の起動)中にハードウェアの初期化を実行するために使用されるファームウェアの一種です。[ 1 ] BIOSファームウェアを使用するコンピューターでは、ファームウェアはコンピューターのマザーボードにプリインストールされています。
この名称は、1975年にCP/Mオペレーティングシステムで使用されていた基本入出力システムに由来しています。[ 2 ] [ 3 ] BIOSファームウェアは元々IBM PC独自のものでしたが、Compaq 、 Phoenix Technologies、AMIなどの企業によってリバースエンジニアリングされ、互換性のあるシステムの開発が進められました。このオリジナルシステムのインターフェースは、事実上の標準となっています。
古いPCのBIOSは、システムのハードウェアコンポーネントを初期化・テスト(パワーオンセルフテスト、略してPOST)し、大容量記憶装置からブートローダーをロードしてカーネルを初期化します。DOSの時代、BIOSはキーボード、ディスプレイ、ストレージ、その他の入出力(I/O)デバイスに対するBIOS割り込み呼び出しを提供し、アプリケーションプログラムとオペレーティングシステムへのインターフェースを標準化していました。最近のオペレーティングシステムは、起動後にBIOS割り込み呼び出しを使用しません。[ 4 ]
ほとんどのBIOS実装は、様々なデバイス、特にシステムチップセットとのインターフェースを介して、特定のコンピューターまたはマザーボードモデルで動作するように特別に設計されています。当初、BIOSファームウェアはPCマザーボード上のROMチップに保存されていました。その後のコンピューターシステムでは、BIOSの内容はフラッシュメモリに保存されるため、マザーボードからチップを取り外すことなく書き換えることができます。これにより、エンドユーザーはBIOSファームウェアを簡単に更新して新機能を追加したり、バグを修正したりできますが、同時にコンピューターがBIOSルートキットに感染する可能性もあります。さらに、BIOSのアップグレードに失敗すると、マザーボードが 故障する可能性もあります。
UEFI ( Unified Extensible Firmware Interface ) は PC BIOS の後継であり、その技術的な制限に対処することを目的としています。[ 5 ] UEFI ファームウェアには、UEFI ネイティブ操作をサポートしないオペレーティングシステムやオプションカードとの互換性を維持するために、レガシー BIOS 互換性が含まれる場合があります。[ 6 ] [ 7 ] [ 8 ] 2020年以降、Intel プラットフォームのすべての PC は、レガシー BIOS をサポートしなくなりました。[ 9 ]レガシー BIOS ファームウェアを使用する PC での実行を公式にサポートする最後のMicrosoft WindowsバージョンはWindows 10です。Windows 11では、 UEFI 準拠のシステムが必要であるためです (バージョン 24H2以降の Windows 11 の IoT Enterprise エディションを除く[ 10 ] )。
/* CP / MBASICI / OSYSTEM (BIOS) 著作権 (C) ゲイリー・A・キルダル 1975年6月 */ […] /* 基本ディスクオペレーティングシステム (BDOS) 著作権 (C) ゲイリー・A・キルダル 1975年6月 */
—ローレンス・リバモア研究所(LLL)のCP/M 1.1または1.2のPL/Mソースコード内のBDOS.PLMファイルヘッダーからの抜粋[ 2 ]
BIOS(基本入出力システム)という用語は、ゲイリー・キルドール[ 11 ] [ 12 ]によって作成され、1975年にCP/Mオペレーティングシステムで初めて登場しました。 [ 2 ] [ 3 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ]は、ブート時にロードされ、ハードウェアと直接インターフェースするCP/Mのマシン固有の部分を表しています。[ 3 ](CP/Mマシンは通常、ROM内に単純なブートローダのみを持っています。)
MS-DOS、PC DOS、またはDR-DOSの各バージョンには、「 IO.SYS」、「IBMBIO.COM 」、「IBMBIO.SYS」、「DRBIOS.SYS」などと呼ばれるファイルが含まれています。このファイルは「DOS BIOS」(「DOS I/Oシステム」とも呼ばれます)と呼ばれ、オペレーティングシステムの下位レベルのハードウェア固有の部分を含んでいます。ROMに格納されている、ハードウェア固有ではあるもののオペレーティングシステムに依存しない「システムBIOS」と合わせて、「CP/M BIOS 」に相当するものです。
もともとIBM PC専用だったBIOS は、互換性のあるシステムの作成を目指す Compaq、Phoenix Technologies、AMIなどの一部の企業によってリバース エンジニアリングされました。
PS/2マシンの導入に伴い、IBMはシステムBIOSをリアルモードとプロテクトモードに分割しました。リアルモード部分はDOSなどの既存のオペレーティングシステムとの下位互換性を確保することを目的として「CBIOS」(Compatibility BIOSの略)と名付けられました。一方、「ABIOS」(Advanced BIOSの略)はOS/2などのマルチタスクオペレーティングシステムに特化した新しいインターフェースを提供しました。[ 16 ]
初代IBM PCおよびXTのBIOSには、対話型ユーザーインターフェースがありませんでした。電源投入時自己診断(POST)がビデオディスプレイアダプタの初期化に成功しなかった場合、エラーコードまたはメッセージが画面に表示されるか、コード化された一連の音によってエラーが通知されました。IBM PCおよびXTのオプションは、メインボードおよび拡張カード上のスイッチとジャンパーによって設定されました。1990年代半ば頃から、BIOS ROMに「BIOS構成ユーティリティ」(BCU [ 17 ])または「BIOSセットアップユーティリティ」が含まれるのが一般的になりました。これは、システムの電源投入時に特定のキーシーケンスでアクセスされます。このプログラムにより、ユーザーは、以前はDIPスイッチを使用して設定していたタイプのシステム構成オプションを、キーボードで操作する対話型メニューシステムを通じて設定することができました。その間、IBM互換機(IBM ATを含む)は、構成設定をバッテリバックアップRAMに保存し、ROMではなくフロッピーディスク上のブート可能な構成プログラムを使用して、このメモリに格納された構成オプションを設定していました。フロッピーディスクはコンピュータに付属しており、紛失するとシステム設定を変更できなくなります。これはEISAバスを搭載したコンピュータにも当てはまり、設定プログラムはEISA構成ユーティリティ(ECU)と呼ばれていました。
現代のWintel互換コンピュータは、1990年代後半のROM常駐型BIOSセットアップユーティリティと本質的に変わらないセットアップルーチンを提供しています。ユーザーはキーボードとビデオディスプレイを使ってハードウェアオプションを設定できます。現代のWintelマシンは、BIOS設定をフラッシュROMに保存している可能性があり、おそらくBIOS自体が保存されているのと同じフラッシュROMに保存されているでしょう。
ハード ディスク ドライブのホスト バス アダプタやビデオ カードなどの周辺カードには独自のファームウェアがあり、BIOS 拡張オプション ROMコードが拡張カード ファームウェアの一部である場合があります。そのコードは BIOS に追加の機能を提供します。オプション ROM 内のコードは、BIOS が大容量記憶装置からオペレーティング システムをブートする前に実行されます。これらの ROM は通常、ハードウェアのテストと初期化、新しい BIOS サービスの追加、または既存の BIOS サービスの独自のサービスへの置き換えを行います。たとえば、SCSI コントローラには通常、そのコントローラを介して接続されたハード ドライブのサポートを追加する BIOS 拡張 ROM があります。拡張 ROM には原理的にオペレーティング システムを入れることもできますが、ネットワーク ブートなどのまったく異なるブート プロセスを実装することもできます。IBM 互換コンピュータ システムの動作は、BIOS 拡張 ROM を含むアダプタ カード (または ROM チップ) を取り外したり挿入したりすることによって完全に変更できます。
マザーボードの BIOS には通常、統合ディスプレイと統合ストレージを初期化してブートストラップするためのコードが含まれています。初期化プロセスには、初期化するデバイスに関連するコードの実行、デバイスの検出、デバイスの種類の確認、ベース レジスタの確立、ポインタの設定、割り込みベクター テーブルの確立、[ 18 ]デバイスで使用可能なレジスタを編成する方法であるページング モードの選択、割り込みに関連するソフトウェア ルーチンにアクセスするための既定値の設定、[ 19 ]および既定値を使用したデバイスの構成の設定が含まれます。[ 20 ]さらに、 SCSI、RAID、ネットワーク インターフェイス カード、ビデオ カードなどのプラグイン アダプタ カードには、多くの場合、独自の BIOS (ビデオ BIOSなど) が含まれており、特定のコンポーネントのシステム BIOS コードを補完または置き換えます。マザーボードに組み込まれたデバイスでもこのように動作することがあり、そのオプション ROM はマザーボード BIOS の一部になることがあります。
アドインカードがマザーボードのBIOSでサポートされておらず、オペレーティングシステムをロードする前にカードを初期化するか、BIOSサービス経由でアクセスできるようにする必要がある場合(通常、これはブートプロセスで必要となることを意味します)、オプションROMが必要になります。初期のPCシステム(特にIBM PCjrなど)におけるROMのもう一つの利点は、ROMがメインシステムRAMよりも高速だったことです。(最近のシステムでは、状況はこれと全く逆で、BIOS ROMコードは通常、RAMにコピー(「シャドウイング」)されるため、より高速に動作します。)

オプションROMは通常、アダプタカード上に存在します。しかし、オリジナルのPC、そしておそらくPC XTにも、マザーボード(IBM用語では「システムボード」)上に予備のROMソケットがあり、そこにオプションROMを挿入できます。また、BASICインタープリタを含む4つのROMは取り外して、オプションROMとして使用できるカスタムROMに置き換えることもできます。IBM PCjrは、 PCの中でも特に前面に2つのROMカートリッジスロットを備えているのが特徴的です。これらのスロットに挿入されたカートリッジは、オプションROM用に使用される上位メモリ領域と同じ領域にマッピングされ、BIOSが認識するオプションROMモジュールを格納できます。カートリッジには、BASICプログラムなど、異なる処理方法を持つ他の種類のROMモジュールも格納できます。1つのPCjrカートリッジには、複数の異なる種類のROMモジュールを格納でき、1つのROMチップにまとめて格納される場合もあります。
8086と8088は物理アドレスFFFF0hから始まります。[ 21 ] 80286は物理アドレスFFFFF0hから始まります。[ 22 ] 80386以降のx86プロセッサは物理アドレスFFFFFFF0hから始まります。[ 23 ] [ 24 ] [ 25 ]システムが初期化されると、BIOSの最初の命令がそのアドレスに表示されます。
システムの電源投入直後、またはリセットボタンが押された場合(「コールドブート」)、完全なパワーオンセルフテスト(POST)が実行されます。Ctrl+Alt+Deleteキーが押された場合(「ウォームブート」)、BIOSによってテストされる不揮発性BIOSメモリ(「CMOS 」)に保存された特別なフラグ値により、時間のかかるPOSTとメモリ検出がバイパスされます。
POST は、 CPU、チップセット、RAM、マザーボード、ビデオ カード、キーボード、マウス、ハード ディスク ドライブ、光ディスク ドライブ、その他のハードウェア (統合周辺機器を含む) などのシステム デバイスを識別、テスト、初期化します。
初期のIBM PCにはPOSTにキーボードポートを介してプログラムをRAMにダウンロードして実行するルーチンがありました。[ 26 ] [ 27 ]この機能は工場でのテストや診断を目的としていました。
マザーボードBIOSがPOSTを完了すると、ほとんどのBIOSバージョンはオプションROMモジュール(BIOS拡張ROMとも呼ばれる)を検索し、実行します。マザーボードBIOSは、「上位メモリ領域」(x86リアルモードアドレス空間のアドレス0xA0000以上の部分)の一部で拡張ROMをスキャンし、見つかったROMを順番に実行します。メモリマップドオプションROMを検出するために、BIOS実装はリアルモードアドレス空間を2KB (2,048バイト)境界0x0C0000でスキャンし、2バイトのROMシグネチャ(0x55とそれに続く0xAA )を探します。有効な拡張ROMでは、このシグネチャの後に、拡張ROMが実メモリ内で占める512バイトブロックの数を示す1バイトが続き、次のバイトはオプションROMのエントリポイント(「エントリオフセット」とも呼ばれる)です。 ROM に有効なチェックサムがある場合、BIOS はエントリ アドレスに制御を移します。これは、通常の BIOS 拡張 ROM では、拡張機能の初期化ルーチンの開始位置になります。 0x0F0000
この時点で、拡張ROMコードが処理を引き継ぎ、通常は制御対象のハードウェアのテストと初期化、およびブート後のアプリケーションで使用する割り込みベクターの登録を行います。また、BIOSサービス(既に初期化済みのオプションROMによって提供されるサービスを含む)を使用して、ユーザー設定インターフェースの提供、診断情報の表示、その他必要な処理を実行する場合もあります。
オプションROMは通常、初期化プロセスを完了するとBIOSに戻ります。オプションROMがBIOSに戻ると(そして戻った場合)、BIOSはメモリ空間内のオプションROM領域全体をスキャンするまで、さらにオプションROMを検索し、見つかったオプションROMを呼び出します。オプションROMがBIOSに戻らず、BIOSのブートシーケンスを完全にプリエンプトしてしまう可能性があります。

POSTが完了し、オプションROMをサポートするBIOSでは、オプションROMのスキャンが完了し、有効なチェックサムを持つ検出されたすべてのROMモジュールが呼び出された後、BIOSは割り込み19hを呼び出してブート処理を開始します。ブート後にロードされたプログラムも割り込み19hを呼び出してシステムを再起動できますが、BIOSの再起動プロセスを妨げる可能性のある割り込みやその他の非同期ハードウェアプロセスを無効にする必要があります。そうしないと、再起動中にシステムがハングアップしたりクラッシュしたりする可能性があります。
割り込み19hが呼び出されると、BIOSはハードディスク、フロッピーディスク、CD、DVDなどの「ブートデバイス」上のブートローダーソフトウェアを検索します。BIOSは最初に見つかったブートソフトウェアをロードして実行し、PCの制御権を取得します。[ 28 ]
BIOSは、不揮発性BIOSメモリ(CMOS)、または初期のPCではDIPスイッチに設定されたブートデバイスを使用します。BIOSは各デバイスがブート可能かどうかを確認するために、最初のセクター(ブートセクター)の読み込みを試行します。セクターを読み取れない場合、BIOSは次のデバイスに進みます。セクターの読み込みに成功した場合、一部のBIOSでは、ブートセクターを受け入れてデバイスをブート可能と判断する前に、セクター(512バイト長)の最後の2バイトにあるブートセクターシグネチャ0x55 0xAAも確認します。[ b ]
起動可能なデバイスが見つかると、BIOSはロードされたセクターに制御を移します。BIOSは、最後の2バイトのブートセクターシグネチャを確認すること以外、ブートセクターの内容を解釈しません。パーティションテーブルやBIOSパラメータブロックなどのデータ構造の解釈は、ブートセクター内のブートプログラム、またはブートプロセスを通じてロードされる他のプログラムによって行われます。
ネットワークアダプタなどのディスク以外のデバイスは、オプションROM 、またはマザーボードのBIOS ROMに統合された同等のROMで定義された手順で起動を試みます。そのため、オプションROMはマザーボードのBIOS ROMで定義された起動プロセスに影響を与えたり、置き換えたりすることもあります。
El Torito光学メディアブート規格では、光学ドライブはブートのためにBIOSに対して3.5インチ高密度フロッピーディスクをエミュレートします。CD-ROMやDVD-ROMの「最初のセクター」の読み取りは、フロッピーディスクやハードディスクのように単純に定義された操作ではありません。さらに、メディアの複雑さから、1つのセクターに有用なブートプログラムを書き込むことは困難です。ブート可能な仮想フロッピーディスクには、光学メディアのネイティブフォーマットへのアクセスを提供するソフトウェアを含めることができます。
拡張ROMがシステムの起動方法(ネットワークデバイスやSCSIアダプタなど)を協調的に変更したい場合、BIOSブート仕様(BBS)APIを使用してその機能を登録できます。拡張ROMがBBS APIを使用して登録されると、ユーザーはBIOSのユーザーインターフェースから利用可能なブートオプションを選択できるようになります。そのため、ほとんどのBBS準拠のPC BIOS実装では、拡張ROMの実行とBBS APIへの登録が完了するまで、ユーザーはBIOSのユーザーインターフェースにアクセスできません。
また、拡張ROMがシステムの一方的な起動方法を変更したい場合は、割り込み19h、または通常は割り込み19hから呼び出される割り込み(例えば、BIOSディスクサービスである割り込み13h)をフックして、BIOSのブートプロセスを傍受することができます。その後、BIOSのブートプロセスを独自のものに置き換えたり、独自のブートアクションを挿入することでブートシーケンスを変更したり、BIOSが特定のデバイスをブート可能として検出しないようにしたり、あるいはその両方を行ったりすることができます。BIOSブート仕様が公布される前は、これがマザーボードのネイティブBIOSでブートがサポートされていないデバイスのブート機能を拡張ROMで実装する唯一の方法でした。
ユーザーはBIOSによって実装された起動優先順位を選択できます。例えば、ほとんどのコンピューターには起動可能なハードディスクが搭載されていますが、リムーバブルメディアドライブの方が起動優先順位が高い場合があり、ユーザーはリムーバブルディスクから起動するように設定できます。
最近のほとんどのBIOSでは、起動優先順位をユーザーが設定できます。古いBIOSでは、選択できる起動優先順位のオプションは限られていました。初期のBIOSでは、固定優先順位方式が実装されており、フロッピーディスクドライブが1番目、固定ディスク(ハードディスク)が2番目で、通常は他の起動デバイスはサポートされていませんでした。これらのルールは、インストールされたオプションROMによって変更される可能性がありました。初期のPCのBIOSでは、2つのドライブが搭載されている場合でも、通常は最初のフロッピーディスクドライブまたは最初のハードディスクドライブからのみ起動していました。
オリジナルのIBM PCとXTでは、起動可能なディスクが見つからない場合、BIOSは割り込み18hを呼び出してROM BASICを起動しようとしました。ROMでBASICを使用するプログラムはほとんどなかったため、クローンPCメーカーはこれを省略しました。そのため、ディスクからの起動に失敗したコンピューターは「No ROM BASIC」と表示され、(割り込み18hへの応答として)停止しました。
後期のコンピュータでは、「起動可能なディスクが見つかりません」といったメッセージが表示され、ディスクを挿入してキーを押すことで起動プロセスを再試行するように促すものもありました。最近のBIOSでは、起動プロセスが失敗すると何も表示されないか、自動的にBIOS設定ユーティリティが起動する場合があります。
ブートプログラムの環境は非常に単純です。CPU はリアルモードであり、汎用レジスタとセグメントレジスタは SS、SP、CS、DL を除いて未定義です。 CS:IP は常に物理アドレス を指します0x07C00。CS と IP が実際に持つ値は明確に定義されていません。一部の BIOS は の CS:IP を使用し、0x0000:0x7C00他の BIOS は を使用する場合があります0x07C0:0x0000。[ 29 ]ブートプログラムは常にこの固定アドレスにロードされるため、ブートプログラムを再配置可能である必要はありません。DL には、割り込み 13hで使用される、ブートデバイスのドライブ番号を含めることができます。SS:SP は、おそらくハードウェア割り込みをサポートするのに十分な大きさの有効なスタックを指しますが、それ以外の場合、SS と SP は未定義です。 (割り込みを処理するには、スタックがあらかじめ設定されている必要があります。また、BIOS が少なくとも時刻カウントを維持するために常に使用し、POST 中に初期化するシステム タイマー ティック割り込みがアクティブになり、キーボードが機能するためには、割り込みが有効になっている必要があります。キーボードは、BIOS キーボード サービスが呼び出されなくても機能します。キーストロークが受信され、BIOS によって管理される 15 文字の先行入力バッファーに格納されます。) BIOS によって設定されるスタックのサイズは不明であり、その場所も同様に可変であるため、ブート プログラムは独自のスタックを設定する必要があります。ブート プログラムは SS:SP を調べることによって既定のスタックを調査できますが、無条件に新しいスタックを設定する方が簡単で時間が短くなります。
ブート時にはすべてのBIOSサービスが利用可能であり、アドレス以下のメモリ0x00400には割り込みベクターテーブルが格納されている。BIOS POSTは、すべてのBIOSサービスを準備状態にするために必要なシステムタイマー、割り込みコントローラー、DMAコントローラー、およびその他のマザーボード/チップセットハードウェアを初期化している。従来型メモリと拡張メモリ(必ずしも拡張メモリではない)のすべてのシステムDRAMのDRAMリフレッシュがセットアップされ、実行されている。BIOS割り込みに対応する割り込みベクターはBIOSの適切なエントリポイントを指すように設定され、BIOSによって初期化されたデバイスのハードウェア割り込みベクターはBIOS提供のISRを指すように設定され、プログラムがフックするためにBIOSが生成する割り込みを含むその他の割り込みは、すぐに復帰するデフォルトのダミーISRに設定されている。BIOSは、0x00400–0x004FFPOST中に初期化されたさまざまなパラメーターを持つアドレスに、システムRAMの予約ブロックを維持している。アドレス以上のすべてのメモリは0x00500ブートプログラムによって使用可能であり、ブートプログラム自身を上書きすることもある。[ 30 ] [ 31 ]
BIOS ROMは特定のメーカーのハードウェアに合わせてカスタマイズされており、低レベルのサービス(キー入力の読み取りやフロッピーディスクへのデータセクターの書き込みなど)を、オペレーティングシステムを含むプログラムに標準化された方法で提供することを可能にします。例えば、IBM PCにはモノクロまたはカラーのディスプレイアダプタ(異なるディスプレイメモリアドレスとハードウェアを使用)が搭載されている場合がありますが、単一の標準BIOSシステムコールを呼び出すだけで、画面上の指定された位置に文字をテキストモードまたはグラフィックモードで表示できます。
BIOSは、周辺機器(キーボード、基本的なテキストおよびグラフィック表示機能など)を操作するための基本的な入出力関数の小規模なライブラリを提供します。MS-DOSを使用する場合、アプリケーションプログラム(またはMS-DOS)は、割り込み命令13hを実行してディスク機能にアクセスするか、その他の文書化されたBIOS割り込み呼び出しのいずれかを実行してビデオディスプレイ、キーボード、カセット、その他のデバイス機能にアクセスすることで、BIOSサービスにアクセスできます。
この基本的なファームウェア機能に取って代わるように設計されたオペレーティング システムと実行ソフトウェアは、アプリケーション ソフトウェアに代替ソフトウェア インターフェイスを提供します。アプリケーションは、これらのサービスを自身に提供することもできます。これは 1980 年代のMS-DOSの時代から始まっており、プログラマーは、グラフィックス表示に BIOS ビデオ サービスを使用すると非常に遅いことに気づきました。画面出力の速度を上げるために、多くのプログラムは BIOS をバイパスし、ビデオ ディスプレイ ハードウェアを直接プログラムしました。他のグラフィックス プログラマー、特にデモシーンのプログラマーは、PC ディスプレイ アダプターの技術的機能が IBM BIOS でサポートされておらず、それを回避しなければ利用できないことに気づきました。AT 互換 BIOS は Intelリアル モードで実行されたため、286 以降のプロセッサーの保護モードで実行されるオペレーティング システムでは、BIOS サービスを置き換えるために、保護モード操作と互換性のあるハードウェア デバイス ドライバーが必要でした。
WindowsやLinuxなどの現代のオペレーティングシステムは、 BIOS割り込み呼び出しをブートプロセス中にのみ使用します。オペレーティングシステムの最初のグラフィカル画面が表示される前に、入出力は通常BIOSを介して処理されます。Windowsのテキストメニューのようなブートメニューは、ユーザーがブートするオペレーティングシステムを選択したり、セーフモードでブートしたり、最後に正常に動作した構成を使用したりできますが、これはBIOSを介して表示され、キーボード入力もBIOSを介して受信されます。[ 4 ]
多くの最新 PC では、システムに BIOS または CSM 対応の UEFI ファームウェアが搭載されていれば、コンソールとディスク I/O を BIOS に大きく依存する MS-DOS や DR-DOS などのレガシー オペレーティング システムを起動して実行できます。
IntelプロセッサはP6マイクロアーキテクチャ以降、再プログラム可能なマイクロコードを備えている。[ 32 ] [ 33 ] [ 34 ] AMDプロセッサはK7マイクロアーキテクチャ以降、再プログラム可能なマイクロコードを備えている。BIOSには、初期のプロセッサマイクロコードのエラーを修正するプロセッサマイクロコードのパッチが含まれている。マイクロコードはプロセッサのSRAMにロードされるため、再プログラミングは永続的ではなく、マイクロコード更新のロードはシステムの電源投入ごとに実行される。再プログラム可能なマイクロコードがなければ、高価なプロセッサ交換が必要になる。[ 35 ]例えば、Pentium FDIVバグは、元のPentiumプロセッサの欠陥のあるマイクロコードを再プログラムできなかったため、製品リコールが必要となり、Intelにとって高額な損失をもたらす大失態となった。オペレーティングシステムもマイクロコードを更新できる。[ 36 ] [ 37 ]
一部のBIOSには、 DellなどのOEM(Original Equipment Manufacturer )によってBIOS内に埋め込まれたデジタル署名であるソフトウェアライセンス記述テーブル(SLIC)が含まれています。SLICはACPIデータテーブルに挿入され、アクティブなコードは含まれていません。[ 38 ] [ 39 ]
Microsoft Windows および Microsoft アプリケーション ソフトウェアの OEM 版を配布するコンピューター製造元は、SLIC を使用して、Windows ソフトウェアを含む OEM Windows インストール ディスクおよびシステム回復ディスクへのライセンスを認証できます。SLIC を備えたシステムは OEM プロダクト キーで事前アクティブ化でき、BIOS で XML 形式の OEM 証明書を SLIC と照合して自己アクティブ化の手段として検証します (システム ロックされたプレインストール、SLP を参照)。ユーザーが Windows の新規インストールを実行する場合、アクティブ化をバイパスするには、OEM キー (SLP または COA) と SLIC のデジタル証明書の両方を所有している必要があります。[ 38 ]これは、OEM によって提供された事前カスタマイズされたイメージを使用してユーザーが復元を実行することで実現できます。パワー ユーザーは、OEM イメージから必要な証明書ファイルをコピーし、SLP プロダクト キーをデコードして、SLP アクティブ化を手動で実行できます。
一部のBIOS実装ではオーバークロックが許可されています。オーバークロックとは、 CPUをメーカーが保証する性能よりも高いクロックレートに調整する操作です。しかし、オーバークロックは、冷却が不十分なコンピュータではシステムの信頼性を著しく損なう可能性があり、一般的にコンポーネントの寿命を縮める可能性があります。また、オーバークロックを不適切に実行すると、コンポーネントが急速に過熱し、機械的に破損する可能性もあります。[ 40 ]
MS-DOSなどの古いオペレーティングシステムの中には、PC内のほとんどの入出力タスクを実行するためにBIOSに依存しているものがあります。[ 41 ]
リアルモードBIOS サービスを直接呼び出すことは、プロテクトモード(およびロングモード)のオペレーティング システムでは非効率的です。BIOS割り込み呼び出しは、最新のマルチタスク オペレーティング システムでは、最初に読み込まれた後は使用されません。
1990年代、BIOSはMicrosoft WindowsおよびUnix系オペレーティングシステム向けに、 Advanced Power Management(APM)、Plug and Play BIOS、Desktop Management Interface(DMI)、VESA BIOS Extensions(VBE)、e820 、 MultiProcessor Specification (MPS)といったプロテクトモードインターフェースを提供していました。2000年以降、ほとんどのBIOSはACPI、SMBIOS、VBE 、 e820といったインターフェースを現代のオペレーティングシステム向けに提供しています。[ 42 ] [ 43 ] [ 44 ] [ 45 ] [ 46 ]
オペレーティングシステムのロード後も、システム管理モードコードはSMRAM上で実行されています。2010年以降、BIOS技術はUEFIへの移行過程にあります。[ 5 ]
歴史的に、IBM PCとXTのBIOSには組み込みのユーザーインターフェースがありませんでした。初期のPC(XTクラス)のBIOSバージョンはソフトウェアで設定できず、ユーザーはマザーボード上のDIPスイッチでオプションを設定していました。80286 CPUを搭載したほとんどのIBM互換機を含む後期のコンピュータには、BIOS設定を保持するバッテリバックアップの不揮発性BIOSメモリ(CMOS RAMチップ)が搭載されていました。[ 47 ]ビデオアダプタの種類、メモリサイズ、ハードディスクパラメータなどのこれらの設定は、ROMに組み込まれたものではなく、ディスクから設定プログラムを実行することによってのみ設定できました。IBM ATでは、メモリサイズなどの設定を行うために、特別な「リファレンスディスケット」が挿入されていました。[ 48 ]
初期のBIOSバージョンには、パスワードや起動デバイスの選択オプションはありませんでした。BIOSは、最初のフロッピードライブから起動するようにハードコードされており、それが失敗した場合は最初のハードディスクから起動するように設定されていました。初期のATクラスのマシンでは、アクセス制御は物理的なキーロックスイッチによって行われていました(コンピュータのケースを開けることができれば、このスイッチを解除するのは容易でした)。コンピュータの電源を入れることができる人なら誰でも起動できました。
その後、386 クラスのコンピュータでは、BIOS コードとともに BIOS セットアップ ユーティリティが ROM 自体に統合されるようになりました。通常、これらのコンピュータは、特定のキーまたはキーの組み合わせが押されると BIOS セットアップ ユーティリティで起動し、それ以外の場合は BIOS POST と起動プロセスが実行されます。

最新のBIOSセットアップユーティリティには、 PCの起動時にキーボードの特定のキーを押すことでアクセスできるテキストユーザーインターフェース(TUI)またはグラフィカルユーザーインターフェース(GUI)が搭載されています。通常、このキーは起動初期に短時間表示されます(例:「DELキーを押してセットアップを開始してください」)。
実際のキーはハードウェアによって異なります。設定キーは、Deleteキー(Acer、ASRock、Asus PC、ECS、Gigabyte、MSI、Zotac)とF2キー(Asusマザーボード、Dell、Lenovoラップトップ、Origin PC、Samsung、Toshiba )が最も一般的ですが、 F1キー(Lenovoデスクトップ)やF10キー(HP )の場合もあります。[ 49 ]
BIOS セットアップ ユーティリティに含まれる機能には通常、次のものがあります。
最近のBIOSセットアップ画面には、PCヘルスステータスやハードウェアモニタリングタブが搭載されていることが多く、マザーボードのハードウェアモニターチップと直接インターフェースします。[ 50 ]これにより、CPUとシャーシの温度、電源ユニットから供給される電圧を監視したり、マザーボードに接続された ファンの速度を監視および制御したりすることができます。
システムが起動すると、ハードウェアの監視とコンピュータファンの制御は通常、ハードウェアモニターチップ自体によって直接行われます。このチップは、I²CまたはSMBusを介してインターフェースされる独立したチップである場合もあれば、業界標準アーキテクチャ(ISA)または低ピン数(LPC)を介してインターフェースされるスーパーI/Oソリューションの一部として提供される場合もあります。[ 51 ] envsysを備えたNetBSDやsysctl hw.sensorsを備えたOpenBSDなどの一部のオペレーティングシステムでは、ハードウェアモニターとの統合インターフェース機能を備えています。
しかし、状況によっては、BIOSはACPIを介してハードウェア監視に関する基礎情報も提供し、その場合にはオペレーティングシステムはACPIを使用してハードウェア監視を実行している可能性があります。[ 52 ] [ 53 ] [ 54 ] [ 55 ] [ 56 ]

現代のPCでは、BIOSは書き換え可能なEEPROM [ 57 ]またはNORフラッシュメモリ[ 58 ]に保存されており、その内容を置き換えたり変更したりすることができます。この内容の書き換えは、フラッシングと呼ばれることもあります。これは、通常、システムメーカーが提供する特別なプログラム、またはPOST時に、ハードドライブまたはUSBフラッシュドライブ内のBIOSイメージを使用して実行されます。このような内容を含むファイルは、「BIOSイメージ」と呼ばれることもあります。BIOSは、バグ修正、パフォーマンス向上、または新しいハードウェアのサポートのために、新しいバージョンにアップグレードするために再フラッシュされることがあります。一部のコンピューターでは、アップデートフロッピーディスクまたはハードドライブ上の特別なパーティションを介してBIOSを更新することもできます。[ 59 ]
_in_a_Winbond_W39V040APZ-5491.jpg/440px-Elitegroup_761GX-M754_-_AMIBIOS_(American_Megatrends)_in_a_Winbond_W39V040APZ-5491.jpg)
オリジナルのIBM PC BIOS(およびカセットBASIC)は、マザーボード上のソケットにマスクプログラムされた読み取り専用メモリ(ROM)チップに格納されていました。ROMはユーザーによる交換[ 60 ]が可能でしたが、変更はできませんでした。アップデートを可能にするために、多くの互換コンピュータでは、 EPROM、EEPROM、そして後にフラッシュメモリ(通常はNORフラッシュ)デバイスなどの再プログラム可能なBIOSメモリデバイスが使用されていました。BIOS製造元Micro Firmwareの社長であるRobert Braverによると、電気的に消去可能なPROM(EEPROM)チップは標準的な紫外線消去可能なPROM(EPROM )チップよりも安価でプログラムが容易だったため、1995年頃にフラッシュBIOSチップが普及しました。フラッシュチップは回路内でプログラム(および再プログラム)されますが、EPROMチップは再プログラミングのためにマザーボードから取り外す必要があります。[ 61 ] BIOSバージョンは、新しいバージョンのハードウェアを利用し、以前のリビジョンのBIOSのバグを修正するためにアップグレードされます。[ 62
IBM AT以降、PCはBIOSで設定可能なハードウェアクロックをサポートしました。このクロックには世紀ビットがあり、2000年になると手動で世紀を変更できました。1995年に作成されたBIOSリビジョンのほとんどと、1997年のほぼすべてのBIOSリビジョンは、1999年12月31日の深夜を過ぎると世紀ビットを自動的に設定することで、2000年をサポートしていました。 [ 63 ]
最初のフラッシュチップはISAバスに接続されていました。1998年以降、BIOSフラッシュメモリは「ファームウェアハブ」(FWH)と呼ばれる新しい標準実装に従い、 LPCバスに移行しました。2005年には、BIOSフラッシュメモリはSPIバスに移行しました。[ 64 ]
BIOSのサイズと、それが格納されるROM、EEPROM、または他のメディアの容量は、コードに新しい機能が追加されるにつれて、時間とともに増加してきました。現在、最大32メガバイトのサイズのBIOSバージョンが存在します。対照的に、オリジナルのIBM PC BIOSは8KBのマスクROMに収められていました。最近のマザーボードには、一部のLinuxディストリビューションなどのコンパクトなオペレーティングシステム全体を格納できる、さらに大きなNANDフラッシュメモリICが搭載されているものもあります。たとえば、一部のASUSノートブックでは、NANDフラッシュメモリICにSplashtop OSが組み込まれていました。[ 65 ]ただし、PCのROMにBIOSとともにオペレーティングシステムを含めるというアイデアは新しいものではありません。1980年代に、MicrosoftはMS-DOS用のROMオプションを提供し、それはTandy 1000 HXなどの一部のPCクローンのROMに含まれていました。
IBM PC ATおよび初期の互換機には、別の種類のファームウェアチップが搭載されていました。ATでは、キーボードインターフェースは、独自のプログラマブルメモリを備えたマイクロコントローラによって制御されていました。IBM ATでは、これは40ピンソケットデバイスでしたが、一部のメーカーはEPROMに似たこのチップのEPROM版を使用していました。このコントローラには、 1MBを超えるメモリを管理するためのA20ゲート機能も割り当てられていました。上位メモリを使用できるソフトウェアを利用するには、この「キーボードBIOS」のアップグレードが必要になることがありました。
BIOSには、メモリの初期化( SPDやメモリタイミングの初期化など)を担当するメモリ参照コード(MRC)などのコンポーネントが含まれている場合があります。[ 66 ]:8 [ 67 ]
最新のBIOS [ 68 ]には、 Intel Management EngineまたはAMD Platform Security Processorファームウェアが含まれています 。
| 会社 | 賞BIOS | アミビオス | インサイド | シーバイオス |
|---|---|---|---|---|
| ライセンス | 独自の | 独自の | 独自の | LGPL v3 |
| 維持・開発 | 終了しました | 終了しました | 終了しました | はい |
| 32ビットPCI BIOS呼び出し | はい | はい | はい | はい |
| AHCI | はい | はい | はい | はい |
| APM | はい | はい | はい(1.2) | はい(1.2) |
| 掲示板 | はい | はい | はい | はい |
| ブートメニュー | はい | はい | はい | はい |
| 圧縮 | はい(LHA [ 69 ]) | はい(LHA) | はい(RLE) | はい(LZMA) |
| CMOS | はい | はい | はい | はい |
| ED | はい | はい | はい | はい |
| ESCD | はい | はい | ? | いいえ |
| ROMからのフラッシュ | ? | はい | ? | いいえ |
| 言語 | 組み立て | 組み立て | 組み立て | C |
| LBA | はい(48) | はい(48) | はい | はい(48) |
| マルチプロセッサ仕様 | はい | はい | はい | はい |
| オプションROM | はい | はい | はい | はい |
| パスワード | はい | はい | はい | いいえ |
| PMM | ? | はい | ? | はい |
| セットアップ画面 | はい | はい | はい | いいえ |
| SMBIOS | はい | はい | はい | はい |
| スプラッシュスクリーン | はい(EPA)[ 70 ] | はい(PCX) | はい | はい(BMP、JPG) |
| TPM | 未知 | はい | 未知 | いくつかの |
| USBブート | はい | はい | はい | はい |
| USBハブ | ? | ? | ? | はい |
| USBキーボード | はい | はい | はい | はい |
| USBマウス | はい | はい | はい | はい |
IBMは、初代PC、PC XT、PC AT、そしてその他の当時のPCモデルのBIOSの完全なリストを、各機種の『IBM PCテクニカル・リファレンス・マニュアル』の付録に掲載しました。BIOSリストを公開したことの利点は、ユーザーがBIOSの機能とその動作を正確に把握できたことです。しかし、これらのBIOSの著作権は依然としてIBMが保持していたため、他のメーカーが使用することはできませんでした。
1983年3月、コンパックはクリーンルームで開発されたBIOSを搭載した Compaq Portableをリリースしました。これにより、コンパックはIBM PCのクローンを初めて成功させた企業となりました。しかし、コンパックは自社のBIOSを他のコンピュータメーカーに提供しませんでした。

1984年5月、フェニックス・ソフトウェア・アソシエイツは初のROM-BIOSをリリースした。このBIOSにより、OEMメーカーは、コンパックがPortableで行ったようにIBM PC BIOSをリバースエンジニアリングすることなく、実質的に完全に互換性のあるクローン製品を開発することが可能になった。また、PC互換機業界の成長と非IBM版DOSの販売促進にも貢献した。[ 71 ]最初のAmerican Megatrends (AMI) BIOSは1986年にリリースされた。
BIOSに追加された新しい規格は、通常、完全な公開ドキュメントやBIOSリストが存在しません。そのため、BIOSに追加されたIBM以外の多くの機能について詳細を知ることは、コアとなるBIOSサービスについて知るほど容易ではありません。
多くのPCマザーボードサプライヤは、BIOSの「コア」とツールキットを「独立系BIOSベンダー」またはIBVと呼ばれる商用サードパーティからライセンス供与を受けていました。マザーボードメーカーは、自社のハードウェアに合わせてこのBIOSをカスタマイズしました。このため、更新されたBIOSは通常、マザーボードメーカーから直接入手されます。主要なIBVには、American Megatrends (AMI)、Insyde Software、Phoenix Technologies、Byosoftなどがありました。Microid ResearchとAward Softwareは1998年にPhoenix Technologiesに買収されました。Phoenixは後にAwardブランド名を段階的に廃止しました(ただし、Award Softwareは2001年から2002年までAwardBIOSバージョンにクレジットされており、AWRDACPIは2012年後半までPhoenix UEFIファームウェアにクレジットされています)。同じく2007年にPhoenixに買収されたGeneral Softwareは、Intelプロセッサをベースにした組み込みシステム用のBIOSを販売していました。
SeaBIOSはオープンソースの BIOS 実装です。
オープンソースコミュニティは、プロプライエタリなBIOSとその将来的な進化形に代わるものをオープンソースで開発する努力を強化した。Open Firmwareは、ブートファームウェアのオープン仕様を作成する初期の試みであった。当初はIEEE 1275-1994標準でIEEEに承認されたが、2005年に撤回された。[ 72 ] [ 73 ]後の例としては、OpenBIOS、coreboot、librebootプロジェクトがある。AMDはcorebootを使用する一部のチップセットの製品仕様を提供し、Googleはこのプロジェクトを後援している。マザーボードメーカーのTyanは、 Opteronシリーズのマザーボードで標準BIOSに加えてcorebootを提供している。


EEPROMとフラッシュメモリチップは、ユーザーが簡単にアップデートできるという利点があります。ハードウェアメーカーは、製品のアップグレード、互換性の向上、バグの除去のためにBIOSアップデートをリリースするのが一般的です。しかし、この利点には、BIOSアップデートが不適切に実行されたり中止されたりすると、コンピューターやデバイスが使用できなくなるというリスクがありました。こうした状況を回避するため、最近のBIOSでは「ブートブロック」と呼ばれる、最初に実行され、別途アップデートする必要があるBIOSの一部が使用されています。このコードは、制御を他のBIOSに移す前に、ハッシュチェックサムなどの方法を使用してBIOSの残りの部分が正常であることを確認します。ブートブロックがメインBIOSの破損を検出すると、通常はユーザーに警告し、リムーバブルメディア(フロッピーディスク、CD、またはUSBフラッシュドライブ)から起動してリカバリプロセスを開始し、ユーザーがBIOSのフラッシュを再度試せるようにします。一部のマザーボードには、BIOSの破損から回復するためのバックアップBIOS(DualBIOSと呼ばれることもあります)が搭載されており、特殊なPLCを使用してBIOSの破損から回復します。
BIOSを攻撃するウイルスは少なくとも5種類知られており、そのうち2種類はデモ用でした。最初に発見されたウイルスは、中国のユーザーを標的としたMebromiでした。
最初の BIOS ウイルスは BIOS Meningitis で、BIOS チップを消去するのではなく、チップに感染させました。BIOS Meningitis は、 CIHなどのウイルスに比べると比較的無害でした。
2つ目のBIOSウイルスはCIH(別名「チェルノブイリウイルス」)で、互換チップセット上のフラッシュROM BIOSコンテンツを消去することができました。CIHは1998年半ばに出現し、1999年4月に活動を開始しました。感染したコンピュータは起動できなくなり、マザーボードからフラッシュROM ICを取り外して再プログラムしなければならなくなりました。CIHは当時広く普及していたIntel i430TXマザーボードチップセットを標的とし、当時普及していた Windows 9xオペレーティングシステムがすべてのプログラムへのハードウェア直接アクセスを許可していたという点を悪用しました。
現代のシステムは、Intel i430TXチップセットや他のフラッシュROM ICタイプと互換性のない様々なチップセットが使用されているため、CIHに対して脆弱ではありません。また、偶発的な上書きから保護されたブートブロックの形で、偶発的なBIOS書き換えに対する追加の保護があり、クラッシュ時にはバックアップBIOSを使用できるデュアルBIOS搭載システムもあります。また、FreeBSD、Linux、macOS、Windows NTベースのWindows OS(Windows 2000、Windows XP以降など)などのすべての現代のオペレーティングシステムでは、ユーザーモードプログラムがハードウェア抽象化レイヤーを使用してハードウェアに直接アクセスすることはできません。[ 74 ]
その結果、2008年現在、CIHは実質的に無害となり、最悪の場合でも実行ファイルに感染してウイルス対策ソフトウェアを起動させることで迷惑をかける程度となっている。しかし、他のBIOSウイルスは依然として存在する。[ 75 ] Windows Vista/7のUACを持たないほとんどのWindowsホームユーザーは、すべてのアプリケーションを管理者権限で実行するため、最近のCIHのようなウイルスは、原理的には、最初にエクスプロイトを使用することなくハードウェアにアクセスできる可能性がある。オペレーティングシステムOpenBSDは、すべてのユーザーがこのアクセスを持つことを防止しており、Linuxカーネルのgrsecurityパッチも、この直接的なハードウェアアクセスをデフォルトで防止している。違いは、攻撃者がはるかに困難なカーネルレベルのエクスプロイトを行うか、マシンを再起動する必要があることである。
3つ目のBIOSウイルスは、英国に拠点を置くNext-Generation Security Softwareの主任セキュリティコンサルタント、ジョン・ヒースマン氏が発表した手法です。2006年のBlack Hat Security Conferenceにおいて、ヒースマン氏は、フラッシュメモリに保存されている通常のACPI機能を置き換える悪意のある手順を用いて、権限を昇格させ、物理メモリを読み取る方法を披露しました。[ 76 ]
4つ目のBIOSウイルスは「永続BIOS感染」と呼ばれる手法で、2009年にバンクーバーで開催されたCanSecWestセキュリティカンファレンスとシンガポールで開催されたSyScanセキュリティカンファレンスで発表されました。Core Security Technologiesの研究者、アニバル・サッコ氏[ 77 ]とアルフレド・オルテガ氏は、BIOSの解凍ルーチンに悪意のあるコードを挿入する方法を実証しました。これにより、オペレーティングシステムが起動する前であっても、PCの起動時にほぼ完全に制御することが可能になります。この概念実証では、BIOS実装の欠陥を悪用するのではなく、通常のBIOSフラッシュ手順のみを使用しています。そのため、マシンへの物理的なアクセス、またはユーザーがルート権限を持つ必要があります。これらの要件にもかかわらず、オルテガ氏は、自身とサッコ氏の発見が持つ重大な意味を強調しました。「ドライバにパッチを適用することで、完全に機能するルートキットをドロップできます。ウイルス対策ソフトを削除または無効化できる小さなコードさえあります。」[ 78 ]
Mebromiは、 AwardBIOS、Microsoft Windows、および2つの中国企業(Rising AntivirusとJiangmin KV Antivirus)のウイルス対策ソフトウェアを搭載したコンピュータを標的とするトロイの木馬です。 [ 79 ] [ 80 ] [ 81 ] Mebromiは、マスターブートレコードに感染するルートキットをインストールします。
2013年12月の60 Minutesのインタビューで、米国国家安全保障局の情報保証局長デボラ・プランケットは、NSAが米国の金融システムを標的とした外国国家によるBIOS攻撃の可能性を発見し、阻止したと主張した。[ 82 ]この番組では匿名の情報源を引用し、中国の陰謀だと主張した。[ 82 ]しかし、ガーディアン、[ 83 ]アトランティック、[ 84 ]ワイアード[ 85 ]レジスター[ 86 ]などのフォローアップ記事はNSAの主張を否定した。
新しいIntelプラットフォームでは、 Intel Boot Guard(IBG)テクノロジーが有効になっています。このテクノロジーは起動時にBIOSデジタル署名をチェックし、IBG公開鍵をPCHに組み込みます。エンドユーザーはこの機能を無効にすることはできません。
Unified Extensible Firmware Interface (UEFI) は、多くの新しいマシンで BIOS を補完するものです。当初はIntel Itanium アーキテクチャ向けに記述されましたが、UEFI はx86およびArmプラットフォームでも利用できるようになりました。仕様の開発は、業界の特別利益団体であるUnified EFI Forumによって推進されています。EFI ブートは、 GPTをサポートするMicrosoft Windowsバージョン、[ 87 ] 、 Linuxカーネル2.6.1 以降、およびIntel ベースの Mac上のmacOSでのみサポートされています。[ 88 ] 2014 年の時点では、新しい PC ハードウェアは主に UEFI ファームウェアを搭載して出荷されています。ルートキット保護のアーキテクチャは、システムがユーザー独自のソフトウェア変更を実行するのを防ぐこともできるため、オープン ハードウェアコミュニティでは、レガシー BIOS の代替として UEFI が物議を醸しています。UEFI は、Windows 8 [ 89 ] [ 90 ]以降で出荷されるデバイスに必須です。同様に、Windows 11では起動にUEFIが必要ですが[ 91 ] 、 Windows 11のIoT Enterpriseエディションは例外です。[ 10 ]
2010 年代に UEFI が普及した後、 BIOS 割り込み呼び出しをサポートしていた古い BIOS は「レガシー BIOS」に名前が変更されました。
x86 の世界における「レガシー BIOS」の機能に代わる他の方法としては、corebootとlibreboot があります。
一部のサーバーおよびワークステーションは、Forthプログラミング言語に基づく、プラットフォームに依存しないOpen Firmware (IEEE-1275) を使用します。これは、Sun のSPARCコンピューター、IBM のRS/6000シリーズ、およびCHRPマザーボードなどのその他のPowerPCシステム、さらに x86 ベースのOLPC XO-1に含まれています。
少なくとも2015年時点で、AppleはIntelベースのMacのUEFIモニターからレガシーBIOSのサポートを削除しました。そのため、BIOSユーティリティはレガシーオプションをサポートしなくなり、「このシステムではレガシーモードはサポートされていません」というメッセージが表示されます。
2017年、インテルは2020年までにレガシーBIOSのサポートを廃止すると発表しました。2019年以降、新しいインテルプラットフォームOEM PCはレガシーオプションをサポートしなくなりました。[ 92 ]
+0x1FE0x55 0xAA0x55+0x1FE0xAA+0x1FF0xAA550x55AAは物理位置FFFFF0Hにある命令からリアルモードで実行を開始します。
実行は、CSレジスタとIPレジスタの初期値によってアドレス指定された命令から開始されます。初期化ソフトウェアをアドレス空間の先頭にあるROMに配置できるようにするため、コードセグメントに発行されたアドレスの上位12ビットは、ファージャンプやコールなど、CSレジスタをロードする最初の命令まで設定されます。その結果、命令フェッチはアドレス0FFFFFFF0Hから開始されます。
ハードウェアリセット後にフェッチされ実行される最初の命令は、物理アドレス FFFFFFF0h に配置されます。このアドレスは、プロセッサの最上位物理アドレスから16バイト下にあります。ソフトウェア初期化コードを含む EPROM はこのアドレスに配置される必要があります。