UEFIファームウェアコード(コンパイルされたバイナリとソースコード)はどこに保存されますか?

UEFIファームウェアコード(コンパイルされたバイナリとソースコード)はどこに保存されますか?

レガシーBIOSプログラムはPCのROMにあります。 UEFIはBIOSよりも広く使用されています。
UEFIコード(コンパイルされたバイナリ形式)はどこに保存されますか?
これで、オペレーティングシステムでUEFIドライバを提供していますか?
誰でもUEFIブートローダの使用について簡単に説明していただければ幸いです。
ありがとうございます!

ADD(2021.7.13)
この質問を投稿した後に学んだ内容のいくつかを含む1年後の更新。 UEFIファームウェアはEEPROM(現在はアップグレードが可能なためEEPROMに保持)またはフラッシュ(NANDフラッシュブロックデバイスを使用し、RAMに最初にロードする必要があるか、NORフラッシュにロードする必要があります - 任意アクセス可能)に保存されていることがわかります。 ok直接実行)
ESP(EFIシステムパーティション)/boot/efiディレクトリを確認すると、/boot/efi/EFIの下にディレクトリがあることがわかりますbootubuntu両方のディレクトリにいくつかの.efiファイルがあり、fileコマンドを使用すると、これらのファイルがPE32仮想マシン用のバイナリ実行可能ファイルであることを確認できます(EFIファームウェアはCPUアーキテクチャまたはISAとは無関係のPE32マシンコードを使用します)。現在、多くのファームウェアもESPに含まれています。ファームウェアサービスをOSランタイムまたは起動時間に関連付けるためのいくつかのテーブル(ESPにあるようです)があることを知っています。

ベストアンサー1

UEFIファームウェアはBIOSと同様にROMにあります。だから「しっかり」します。 BIOSとUEFIの概念的な違いは、UEFIファームウェアがさらに進化し(一部では「肥大した」という)、BIOSなどのディスクブロックだけでなく、ファイルシステムからファイルを読み取ることができることです。 UEFIには実行環境も含まれています。つまり、EFIシステムパーティションからEFIプログラムをロードして実行できます。

UEFIファームウェアは、起動時にロードするファイルを表す特別な不揮発性変数を読み書きすることもできます。 UEFIアプリケーションに必要な構造を含むようにカーネルイメージをコンパイルすることができるので、このファイルはブートローダでも直接Linuxカーネルでもかまいません。

おすすめ記事