web-dev-qa-db-ja.com

UEFIがEFIパーティションを認識しない:起動オプションなし

EFIパーティションをめちゃくちゃにして、コンピューターを起動すると、ディスクが消去されたかのように、起動オプションなしでBIOSインターフェイスが開きます。ただし、ライブUSB(正しく認識されて起動される)を使用してgrubコマンドラインを使用すると、主要なOS(Ubuntu)を起動できました。しかし、私はこの問題を修正する方法を知りません。 grub-install/dev/sdaを実行してみましたが、何も変わりませんでした。

EFIパーティションは完全に正常に見えます。正しいフラグ(esp、boot)があり、すべての正しいファイルが内部にあります。

tree /boot/efi/
└── EFI
    ├── Boot
    │   └── bootx64.efi
    ├── Microsoft
    │   ├── Boot
    │   .....
    └── ubuntu
        ├── fbx64.efi
        ├── fw
        ├── fwupx64.efi
        ├── grub.cfg
        ├── grubx64.efi
        ├── mmx64.efi
        └── shimx64.efi

何をチェックすればいいですか?何が欠けていますか?

これは私のパーティションテーブルです:

parted /dev/sda print
Model: ATA Crucial_CT525MX3 (scsi)
Disk /dev/sda: 525GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  1612MB  1611MB  fat32        EFI System Partition          boot, esp
 2      1612MB  87.9GB  86.3GB  ext4         Ubuntu
 3      87.9GB  281GB   193GB   ext4         Home
 5      290GB   290GB   16.8MB               Microsoft reserved partition  msftres
 6      290GB   405GB   115GB   ntfs         Basic data partition          msftdata
 8      405GB   500GB   94.4GB  ntfs         Data                          msftdata
 9      500GB   525GB   25.3GB  ext4         Backup OS
1
Andrea Maiani

パーティション(ブートフラグを設定したFAT32)をフォーマットし、マウントしてgrub-installを実行するだけで問題を解決しました。その後、/etc/fstabのUUIDを更新するだけで済みました。 Windowsの場合、インストーラーでUSBを使用し、ユーティリティbcdbootを使用してEFIを書き換える必要がありました。

0
Andrea Maiani

Asus UEFI BIOSが認識できるようにするには、/EFI/my-custom-label/grubx64.efi/EFI/boot/bootx64.efiに名前変更する必要がありました。

この問題は、Asus Maximus VII Impact(Z97チップセット)で発生しました。私の友人は、Z87ベースのAsusマザーボードで同様の問題を抱えています。

2
Nowaker

私の推測では、EFIシステム変数が正しいブートローダーを指すように設定されていません。これをチェックしたいプログラムはefibootmgrです。これにより、NVRAMに保存されているすべてのブートエントリが表示されます。

理論的には、grub-installでこれを処理できますが、正しいオプションを渡していない可能性があります。このサンプルコマンドは動作する必要があります。

grub-install --target=x86_64-efi --efi-directory=ESP_MOUNT_PATH --bootloader-id=grub

ESP_MOUNT_PATHをEFIディレクトリのパスに変更します。

これが機能しない場合は、efibootmgrを直接使用してみてください。

efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/ubuntu/grubx64.efi --label "GRUB"

一部のシステムでは/EFI/ubuntu/shimx64.efiを使用する必要があると思います。したがって、このようなものを試して、何が機能するかを確認してください。

0
ceezy

これを引き起こす可能性のある別の問題があり、これは最近発生しました。

この問題を検出するには、Linuxライブから起動してgdisk/dev/sd [whatever-your-disk-is]を実行します。通常は/ dev/sdaまたは/ dev/sdbまたは/ dev/sdcです。

Pコマンドを実行して、パーティションの正しいリストが表示されるようにします(そうでない場合、これはディスクではない可能性があります)。

次にvコマンドを入力します。そしてそれはこれで応答するかもしれません:

Warning: The 0xEE protective partition in the MBR is marked as active. This is
technically a violation of the GPT specification, and can cause some EFIs to
ignore the disk, but it is required to boot from a GPT disk on some BIOS-based
computers. You can clear this flag by creating a fresh protective MBR using
the 'n' option on the experts' menu.

これが応答である場合、コマンドe、n、wを使用します。次に再起動すると、EFIが元に戻る可能性があります。

0

また、EFIで起動したときにgrubがすべてのパーティションを表示せず、パラメーター--modules="part_gpt part_msdos"grub-installに追加すると、lsls -lのすべてのパーティションを表示できるようになりました。

0
gregn3