web-dev-qa-db-ja.com

efibootmgrを介して設定されたEFI設定は、再起動後に無視されます

UEFIラップトップに2つのディスク(/ dev/sdaと/ dev/sdb)があります。両方のGPT。

sda1 - NTFS  - Windows,
sda2 - FAT32 - EFI partition where is Windows Boot Manager and GRUB

sdb1 - NTFS  - another windows 
sdb2 - NTFS  - My data
sdb3 - FAT32 - EFI partition
sdb4 - EXT4  - Debian

eFIの順序で、Windows BootManagerとGRUBが表示されます。私はその時とそれが機能している間を変えることができます。 syslinuxを使用してdebianを起動することを検討しています。 sdb3にsyslinuxが欲しいのですが、それをマウントして、次の場所にあるこのパーティションにこれらのファイルをコピーします。

/EFI/SYSLINUX/initrd.img
/EFI/SYSLINUX/ldlinux.e64
/EFI/SYSLINUX/syslinux.cfg
/EFI/SYSLINUX/syslinux.efi
/EFI/SYSLINUX/vmlinuz

vmlinuzおよびinitrdsdb4\bootからコピーして名前を変更しました。 syslinux.efiおよびldlinux.e64syslinux-6.03からコピーしました。 http://kernel.org からダウンロードしたtar.gz。 syslinux.cfg私が書いた内容は

Prompt 0
TIMEOUT 300
DEFAULT deb

LABEL deb
    LINUX vmlinuz
    APPEND ROOT=/dev/sdb4
    INITRD initrd.img

次に、コマンドを使用してEFIにレコードを追加しました

efibootmgr -c -d /dev/sdb3 -p 1 -l \\EFI\\SYSLINUX\\syslinux.efi -L "SYSLINUX2"

efiboot managerは成功に応答し、ブートオプションとしてSYSLINUX2を表示しますが、コンピューターを再起動して(rebootコマンドで)UEFI設定に移動すると、SYSLINUX2オプションは追加されません。 GRUBとWindowsブートマネージャーのみがあります。次にdebianを起動した後、efibootmgrもWindowsブートマネージャーとGRUBのみに応答します。

セキュアブートに問題がある人がいることを読みました。私はそれを無効にしました、そしてGRUBこれに問題はありません。

なにが問題ですか? efibootmgr設定を永続化するにはどうすればよいですか?どこで間違いをしましたか(もしあれば)?

2
Misaz

バグが発生していますが、これはほぼ確実にセキュアブートとは関係ありません。いくつかの提案がありますが、問題を解決できる保証はありません。

  • ファームウェアを更新します-バグがファームウェアにある場合は、更新すると問題が解決する場合があります。更新を見つけるには、コンピューター(またはマザーボード)の製造元に確認してください。 (技術的にはファームウェアはBIOSではありませんが、おそらく「BIOSアップデート」と呼ばれます。)アップデート後、Linuxを再起動して再試行します。
  • ファームウェアをデフォルト設定にリセットします-EFIブートマネージャーリストが破損し、説明したような症状が発生する場合があります。セットアップユーティリティですべてのファームウェア設定をデフォルトにリセットすると、この問題が解決する場合があります。残念ながら、この手順では動作中のブートマネージャーエントリが削除されるため、再起動するまで、緊急ツール(USBドライブまたはCD-R上のmy rEFIndブートマネージャー など)を使用して起動する必要がある場合があります。作業エントリを作成します。
  • 未使用のブートマネージャーエントリの削除-未使用のブートマネージャーエントリの削除(efibootmgrへの-Bオプションを使用)も機能します破損したエントリの周り。 efibootmgrだけを試すか、efibootmgr -vを試して、より詳細な出力を行い、重複または不要なエントリを見つけます。 (再起動すると、ファームウェアによって一部が自動的に再作成される場合があることに注意してください。これは、ネットワークブートオプションや外部メディアをブートするオプションなどで発生する可能性があります。)
  • 別のツールを使用してブートエントリを作成します-efibootmgrが機能しない場合がありますが、別のOSのツール(bcdeditまたは WindowsではEasyUEFI )またはEFIシェルのbcfgツールが作業を完了します。したがって、efibootmgrの代わりにこれらのツールを試すことができます。
  • フォールバックファイル名を使用する-フォールバックファイル名(x86-64システムではEFI/BOOT/bootx64.efi)は、他に何も機能していない場合に使用できます。ただし、このファイル名は通常、コンピューターが最後に起動を試みるファイル名になります。したがって、他の名前(WindowsブートローダーEFI/Microsoft/Boot/bootmgfw.efiなど)で既に起動している場合は、それをバックアップし、目的のブートマネージャー/ローダーの名前を現在起動しているデフォルトに変更して、新しい名前を再構成する必要があります。新しい名前を使用しているように見せかけているものを起動することを提案するブートローダー。これはせいぜいちょっとしたジャグリング行為であり、Linux用のすべてのEFIブートローダーが別のEFIプログラムにチェーンロードできるわけではないため、正しく機能しない可能性があります。 (SYSLINUXが別のEFIプログラムをチェーンロードできるかどうかは覚えていません。)
  • BIOS/CSM /レガシーブートに切り替えます-ほとんどのEFIは、BIOSモードのブートローダーを起動できる互換性サポートモジュール(CSM)を提供します。したがって、Linux用のBIOSモードのブートローダーをインストールし、CSMをアクティブ化して、この方法で起動できます。ただし、別のOSをデュアルブートする場合は、itsBIOSモードのブートローダーもインストールする必要があります。これには、GPTからMBRパーティションへの変更が必要になる場合があります。全体として、このアプローチは少し苦痛になる可能性があります。ただし、一部のEFI(主に2011年頃の古いもの)では、これが最善のアプローチである可能性があります。
  • 払い戻しのためにコンピューターを返品する-他のすべてが失敗した場合、およびコンピューターが店舗の返品期間内であれば、正常に機能するコンピューターに返品できます。実際、可能であれば、前述の2つのオプションのいずれかの前にこのアプローチをお勧めします。これを行う場合は、必ず製造元に連絡して、コンピューターを返品した理由を伝えてください。 EFIには初日から深刻なバグがあり、一部のメーカーは、顧客からの苦情がないこともあり、バグの深刻さを認識していないため、修正に時間がかかっています。
2
Rod Smith

更新:

こんにちは、また私です

再び作業を開始し、.efiファイルの名前を同等のWindows(bootmgfw.efi)に変更して修正し、上記の説明のようにefivarファイルシステムefivarfsを再マウントし、次のように入力してVRAMにuefiブートエントリを設定します

efibootmgr -c -d/dev/sda -p 4 -L "linuxmint_grub" -l "\ EFI\linuxmint_grub\bootmgfw.efi"

ESP/dev/sda、パーティション4にあります。

起動は問題なく機能せず、efibootmgrエントリは永続的に残りますが、欠点は次のとおりです。GRUB起動時に、オフになっているにもかかわらず自動的に起動します。GRUB問題のようです、後で修正します。

乾杯と私が助けることができることを願っています;)

1
Thomas E.