14

私は PC ファームウェアのプログラミングに興味があり、UEFI 仕様を勉強しています。驚いたことに、ファームウェアに組み込まれている OS 全体の仕様のようです。他の OS が存在しなくても、UEFI ブート サービスを使用して直接実行される UEFI "アプリケーション" を作成することもできます。

「Hello, world!」を作成する方法を示すブログ記事を見つけました。UEFI プリブート環境で実行できるアプリケーション。これは...興味深いと同時に奇妙です。通常の OS で「Hello, world」プログラムを実行します。ありがとうございます。

UEFI アプリケーションは実際にどのようなユースケースに適していますか? ファンシーなブート構成画面? 「実際の」市販の PC ファームウェアは、UEFI アプリケーションを使用して、ブートローダーとブート構成ユーティリティ以外のものを実装していますか?

4

6 に答える 6

14

BIOSセットアップは実際にはUEFIアプリケーションであるため、PEI/DXE/SMMコアまたはドライバーではないものはすべてアプリケーションであるため、「実際の」PCにはそれらがあります。一部のベンダーには、ファームウェア アップデーター、診断およびトラブルシューティング ユーティリティなどのさまざまなアプリが含まれています。UEFI 2.4 では、適切に入力された BootXXXX/KeyXXXX 変数ペアを使用して独自のアプリケーションを追加し、POST 中にキーの組み合わせを押して実行することができます。

C で記述されたほとんどのコンソール アプリケーションは、現在のEFI 開発キットのStdLib パッケージを使用して UEFI アプリケーションとしてコンパイルし、UEFI シェルで実行できます。

便利な UEFI アプリの主な例 (もちろんブートローダー、シェル、Linux カーネル以外) は、Intel ME System ToolsRead UniversalPython 2.7などです。

最終的に、レガシー ブートが利用できなくなると、現在有用なすべての DOS ユーティリティを UEFI アプリケーションにするか、廃止する必要があります。

于 2014-11-09T14:09:55.757 に答える
11

ここには多くの貴重な回答がありますが、私はいくつかの UEFI アプリケーションを自分で作成したため、2 セントを追加しようとします。まず、私たちが話していることを根拠づけるための UEFI アプリケーションとは何ですか。

UEFI 仕様 v2.5:

セクション 2.1.1

イメージ タイプ間の主な違いは、ファームウェアがイメージをロードするメモリ タイプと、イメージのエントリ ポイントが終了または復帰するときに実行されるアクションです。アプリケーション イメージは、イメージのエントリ ポイントから制御が返されると、常にアンロードされます。

セクション 2.1.2

アプリケーションがエントリ ポイントから戻るとき、またはブート サービス EFI_BOOT_SERVICES.Exit() を呼び出すときに、アプリケーションはメモリからアンロードされ、アプリケーションをロードした UEFI コンポーネントに制御が返されます。

UEFI で意味のあるアプリケーションのグループ:

  • 構成ツール- オプション ROM (つまり、ストレージ コントローラー用) の構成インターフェイス、帯域外管理 (つまり、AMT 構成ツール)、メーカーのパフォーマンス調整ツール
  • Provisioning tools - used by administrators to preload specific BIOS setting, manually setting all options in BIOS setup would be inefficient
  • Diagnostics tools - mostly for tests that cannot be performed in OS (DRAM tests, full storage scan, storage R/W tests, etc.). In some districts specific diagnostics tools are required in UEFI BIOS, so those can be sold to government.
  • Security applications - HDD encryption/decryption, antivirus scanner and anti thief applications
  • BIOS capability enhancement - Power Over Ethernet extensions, DRAM discovery, patching and modification of system tables (SMBIOS, ACPI)
  • Display tools - for displaying complex animations while running, splash screen displaying
  • Bootloaders - this is special type of application, which can call EFI_BOOT_SERVICES.ExitBootServices() causing termination of all memory management and passing control to Operating System.

Note that very important feature of UEFI application is that it can be added to boot order and be executed each boot time. Also UEFI application do not have to be delivered with BIOS image it can be stored in connected device memory, which is common for Option ROM configuration tools.

于 2016-01-07T12:38:42.440 に答える
7

これは、本格的な UEFI プリブート アプリケーションの例です。

SED SSD/HDD ドライブがあります。SSD/HDD が電源を失うとすぐにロック状態 (ハードウェアベースの暗号化) になり、ドライブのデータにアクセスできなくなり、ドライブ上のすべてのパーティションが表示されなくなります。小さな読み取り専用パーティション (ShadowMBR) のみが利用可能です。UEFI ファームウェアは、その唯一の利用可能なパーティションから UEFI アプリケーションを起動します (UEFI アプリケーションは、初期化プロセス中および SED の所有権が取得されたときにそのパーティションに書き込まれます)。ユーザーを安全に認証し、資格情報が有効な場合はドライブのロックを解除します。ドライブのロックが解除されると、Shadow MBR が消え、ドライブ上のすべてのパーティションが利用可能になります。次に、アプリ チェーンがインストール済みの OS を起動します。

したがって、資格情報がないと、OS を起動することさえできず、ドライブ上のデータにアクセスすることはできません。

于 2015-05-07T19:19:40.467 に答える
5

以下にいくつかの例を示します。

  1. https://github.com/NikolajSchlej/CrScreenshotDxe GOP 互換のグラフィック コンソールからスクリーンショットを取得するための UEFI DXE ドライバー (はい、BIOS の PNG スクリーンショットを作成して保存できます)

  2. http://ruexe.blogspot.com/ RU.EFI は、BIOS をデバッグするための高度なツールです。

于 2016-01-04T07:50:38.833 に答える
2

Windows 7 ~ 8 には UEFI インストーラーがあります。詳細については完全には把握していませんが、この新しい環境は、従来の DVD のブート環境よりも開発者により多くの柔軟性を提供すると確信しています。

一部のマザーボードには、数秒でデスクトップ画面を表示できる「インスタント オン」機能があります。これは通常、Web ブラウザーにアクセスして音楽/ビデオを再生できるようにする、一部の Linux の機能を取り除いたものです。ASUSにはそのようなボードがあります。

于 2014-11-09T07:44:41.173 に答える