web-dev-qa-db-ja.com

UEFIドライバーを追加/インストールする方法

TianocoreのEDK2を使用して独自のUEFIドライバーを作成しました。 OSがロードされるたびに実行したい。 bootmgfw.efiを変更する必要がありますか? BootCheck.efiに制御を渡し、Windowsのロードを実行した後にのみ制御を渡す方法は?

もう1つの質問ですが、ドライバーで使用できるフラグを追加するにはどうすればよいですか?最初の起動時に0に設定し、その後の起動時に1に設定する必要があります。

ステップバイステップガイドまたは有用な情報をいただければ幸いです、ありがとうございます。

@編集:それが可能であれば、ペンドライブまたはディスクを使用してインストールすることをお勧めします。

3
Ironwing

UEFIドライバーライターガイドには、UEFIドライバーをインストールするには次の つの方法 と記載されています。

1.プラットフォームファームウェアのフラッシュイメージに統合されています。

そのためには、プラットフォームの製造元と協力する必要があります。プラットフォームメーカーは通常、ハードウェアOEM(HP、ギガバイトなど)です。製造時に、OEMはインストールするすべてのUEFIドライバーをファームウェアイメージにパッケージ化してフラッシュします(つまり、マザーボードのフラッシュチップに保存します)。最終的にはチップセットの製造モードを閉じ、サードパーティによるチップセットの変更を防ぎます。ファームウェアを更新するには、更新カプセルを作成し、OEMの秘密鍵で署名する必要があります。 一部のOEMは製造モードを閉じないという間違いを犯しました したがって、1つ(ブートキット/ルートキットを含む)はこれを利用して独自のUEFIドライバーをファームウェアにインストールできます。ただし、これは非常に複雑な作業であり、ほとんどのOEMがこの問題を修正しているため、この道を進む価値はありません。

ただし、VMwareイメージではそうする方がはるかに簡単なので、試してみたい場合は、これに従うことができます ガイド

2.PCIアドインカードのPCIオプションROM。

PCIハードウェアデバイスを開発していないと思われるため、このオプションも適用できません。正直なところ、これがどのように詳細に機能するかもわかりません。

3.EFIシステムパーティション内のファイル。

Driver Writer's Guideに記載されているように、ドライバービンをEFIシステムパーティションに保存してから、_Driver####_およびDriverOrderUEFI変数を更新する必要があります。

WindowsでEFIシステムパーティションにアクセスするには、管理者としてcmdを実行し、_mountvol X: /S_と入力し、Xをコンピューターで使用されていないドライブ文字に置き換えます。アクセスには引き続き管理者権限が必要であり、マウントされたドライブをエクスプローラーで表示することはできません。 diskpartを使用したより長いメソッドについては、編集履歴を参照してください。

ここで、_Driver####_およびDriverOrder UEFI変数を更新するために、UEFIアプリケーションまたはWin32アプリケーションのいずれかを作成できます。 EFI仕様バージョン2.8 のセクション「3.1.1ブートマネージャープログラミング」では、これらの変数の処理方法に関する背景情報を提供し、セクション「3.1.3ロードオプション」では、関連するデータ構造と定数について詳しく説明します。 UEFIアプリケーションの場合は、SetVariable()を使用します(仕様のセクション「8.2変数サービス」)。 Win32の場合は、 SetFirmwareEnvironmentVariableA または SetFirmwareEnvironmentVariableExA を使用します。

Win32サンプルの場合、 dumpEfiVars プロジェクトを見ることができます。変数を読み取るだけで、変数には書き込みませんが、コードは書き込みを実行するように簡単に適合させることができます。このツールを使用して、テストコンピューターの_Boot####_変数とBootOrder変数をダンプし、_Driver####_とDriverOrderがどのように見えるかを把握することもできます。ほとんどのコンピューターでは、EFIシステムパーティションにサードパーティのUEFIドライバーがインストールされていないため、_Driver####_変数とDriverOrder変数は空になります。

P.S.この質問は、スーパーユーザーよりもスタックオーバーフローの方が適切だと感じています。また、ドライバーの旗に関する質問は、別の投稿に値します。

2
wmjdgla