web-dev-qa-db-ja.com

無効なEFIファイルパス

私はちょうど新しいラップトップ(Ubuntu 64ビットがプリインストールされている)にUbuntu 12をEFIモードでインストールしましたが、Win7はもうロードできません(Ubuntuはgrubから正常にロードします)。 GRUBメニューでWindows 7エントリを選択すると、次のエラーが表示されます。

Invalid EFI file path

Grub.cfgエントリ(boot-repairによって生成される)は次のとおりです。

menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
    insmod part_gpt
    insmod ntfs
    set root='(hd0,gpt3)'
    search --no-floppy --fs-uuid --set=root B8449665449625E2
    chainloader +1
}

これはparted出力です:

GNU Parted 2.3
Viene usato /dev/sda
Benvenuti in GNU Parted. Digitare "help" per l'elenco dei comandi.
(parted) print list
Modello: ATA ST9500325AS (scsi)
Disco /dev/sda: 500GB
Dimensione del settore (logica/fisica): 512B/512B
Tabella delle partizioni: gpt

Numero  Inizio  Fine   Dimensione  File system  Nome                  Flag
 5      1049kB  106MB  105MB       fat32                              avvio
 3      345MB   200GB  200GB       ntfs         Basic data partition
 1      200GB   200GB  1049kB                                         bios_grub
 2      200GB   496GB  296GB       ext4
 4      496GB   500GB  4172MB

ブートEFIパーティション、としてマウント

/dev/sda5 on /boot/efi type vfat (rw) ) 

次のファイルがあります(grubフォルダーとブートルート上の他のファイルを除く)。

./efi
./efi/efi
./efi/efi/boot
./efi/efi/boot/bootx64.efi
./efi/efi/ubuntu
./efi/efi/ubuntu/grubx64.efi
./efi/efi/Microsoft
./efi/efi/Microsoft/Boot
./efi/efi/Microsoft/Boot/bootmgfw.efi.grb
./efi/efi/Microsoft/Boot/bootmgfw.efi
./efi/efi/Microsoft/Boot/bootx64.efi.grb
./efi/efi/Microsoft/Boot/bootx64.efi

どうすれば修正できますか?

ありがとう

9

WindowsのGRUBエントリは、BIOSモードのブートには適していますが、EFIモードのブートには適していません。これはGRUBバグです。エントリを次のようなものに置き換えることができます。

menuentry "Windows 7" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt5)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

これが機能するという保証はありませんが、機能する可能性はあります。存在する場合は、そのエントリを/etc/grub.d/40_customに追加して、UbuntuがGRUB構成を更新するたびに再作成されるようにします。

別のオプションは、GRUBに加えて、またはGRUBの代わりに別のブートマネージャーを使用することです。 rEFInd、 たとえば、WindowsとGRUBの両方を自動検出します。また、3.3.0以降のカーネル(Ubuntu 12.10では出荷されていますが、Ubuntu 12.04では出荷されていません)を使用している場合、GRUBを完全にバイパスしてrEFIndでLinuxを直接起動できます。 gummiboot は、同様のブート機能を備えた別のオプションですが、gummibootでLinuxを直接ブートする場合は、より多くの手動メンテナンスが必要です。

5
Rod Smith

最後に、フォーマットとすべてをゼロから再インストールすることを解決しました...基本的に(理由はわかりません)grubがWindows 7ローダーを上書きしていたことが問題でした。

2