web-dev-qa-db-ja.com

Windows / LinuxでUEFI変数を変更するツール?

UEFI/BIOSとしてPhoenix SecureCore Tianoを使用するDellマシンを使用していますが、UEFIシェルとメニューがBIOSセットアップで非表示になっているため、完全に構成できません。

ユーザーモードでUEFI設定(ブートアイテムなど)を変更できるツールがあるかどうか疑問に思いますか? Linuxの「efibootmgr」など。

ところで、設定できないので、ブートプロセスはレガシーモードになっていると思います。つまり、OSはUEFIの存在を検出できないということですよね。

つまり、それはパラドックスです:UEFIツールがユーザーモードでブート項目を変更できるようにするには、非レガシーモードでブートする必要がありますか?しかし、非レガシブートを有効にするには、最初にブートアイテムを変更するためにUEFIツールを有効にする必要がありますか?

12
marstone

EFI実装は、BIOSサポートのないEFIのみの実装を除いて、ブートモードを制御する何らかの方法を提供する必要があります(EFI対BIOS)。ただし、ファームウェアが原因でユーザーが明示的に制御することはほとんどまたはまったくありません。代わりに、ファームウェアはハードディスクの状態に基づいて正しいブートモードを推測しようとします。たとえば、GPTが検出された場合はEFIモードを使用し、MBRが見つかった場合はBIOSモードを使用します。または、EFIシステムパーティション(ESP)が見つかった場合はEFIモードを使用し、見つからなかった場合はBIOSモードを使用する可能性があります。マニュアルを読むと、ファームウェアの動作に関する手掛かりを見つけることができる場合があります。そうでない場合は、実験する必要があります。

リムーバブルメディアを起動する場合、ルールは異なる場合がありますが、1つの起動モードのみを提供することで、正しい方向にキックできることがよくあります。これには、CDを再マスタリングするか、CDを(より簡単に)慎重に選択する必要があります。 EFIモードブートを強制しようとしている場合、私の rEFInd 、特にそのブート可能なCDバージョンが役立つ場合があります。 EFIモードでのみ起動し、構成されたとおり、他のEFIベースの起動の起動マネージャーとして機能しますが、BIOSモードの起動では機能しません。

3
Rod Smith

誰か興味があれば、私はユーティリティをリリースします。 WindowsでUEFI変数を編集します。

https://Gist.github.com/Zibri/19f9838ffd12349bb2c6c3afddc9388f/

2020年2月25日にバージョン1.2に更新されました。
インターネット接続は必要ありません。
コードが難読化されているため、ウイルスの合計は96を超える6(誤検知)を報告します。

2
Zibri

Dell XPS 17(l702x)を購入したばかりで、さまざまなOSのマルチブートに興味があります。私の理解が正しければ、Dellは何らかの形でロックダウンされたPhoenix SecureCore Tiano UEFI 'BIOS'を持っています。私が読んだことから、UEFIは直接使用できません(BIOSのmodを必要とする可能性のある非表示のメニューなどを介して)。

オープンソース(BSD) TianoCore edk2/ShellPkg(ソース)およびedk2/ShellBinPkg(バイナリ) パッケージ( GITリポジトリ )。

私は、UEFIシェル2.0の「完全なシェル」プロファイルを使用して、新しい ShellBinPkg をお勧めします(ほとんどのコマンドをサポートしています)。 ShellPkgを使用してカスタムシェルを再構築することもできます(スタンドアロンで構築するか、OVMFパッケージに含めてx64バージョンを生成します)- LinuxディストリビューションisoにUEFIシェルを含める

[U] EFI Shellバイナリは、ファームウェアとは独立して実行するようにコンパイルされています。これは、シェルをFAT32ファイルシステム(USBスティック、ハードドライブパーティション)に置き、名前を/efi/boot/bootx64.efiに変更して、[UEFI] BIOSから起動することでテストできます。

シェルのヘルプテキストにアクセスするには、help utilnameと入力します。 helpを使用するだけで、使用可能なすべてのシェルコマンドのリストが生成されます。

注:ファームウェアからUEFIシェルを直接起動できない場合は、(USB)/efi/boot/bootx64.efiとしてコピーされたShell.efiを使用してFAT32 USBペンドライブを作成します。このUSBは、ファームウェアブートメニューに表示されます。このオプションを起動すると、UEFIシェルが起動します。 - Arch LinuxによるUEFIの取り組み

1
Big Rich

私の実験では、次のように結論しました。

U/EFIマルチブートUSBキーを使用する場合は、次のことを行う必要があります。

  1. すべてのパーティション/ドライブを完全に消去します。
  2. gPTに変換します。
  3. プライマリパーティションを作成し、Fat32としてフォーマットします。
  4. ドライブのルートにEFI(大文字と小文字を区別しない)というディレクトリを作成します。
  5. bootと呼ばれる以前のディレクトリにサブディレクトリを作成します(大文字と小文字は区別されません)
  6. そこに希望の.efiファイルを置き、システムのアーキテクチャに合わせて名前を変更します。x64の場合はbootx64.efi、x86の場合はbootia32.efi、ARM64の場合はbootaa64.efi。

Dell Inspiron 5437タッチスクリーンで試してみたところ、問題なく動作しました。

最後に1つ: .efiファイルがMicrosoftのデジタル署名で署名されていない場合は、fw設定でセキュアブートモードのみを無効にする必要があります。 UEFIブートおよび高速ブートモードを有効のままにします。

テストの場合は、OEMマシンのマルチブートキーを検索してから永続的にインストールし、表示されたリストからuefi: <your usb key>を選択します。

0
Thiago Postio