無効なEFIファイルパス


11

新しいラップトップ(Win7 64ビットがプリインストールされている)にUbuntu 12をEFIモードでインストールしたところ、Win7をロードできなくなりました(Ubuntuは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
}

これは分離された出力です:

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

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

ありがとう

回答:


6

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_customUbuntuがGRUB構成を更新するたびに再度作成されるように、そのエントリをに追加します。

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


そのメニューエントリを使用して、grubから黒い画面に私を送り、次に再びgrubに送ります:(
Simone Margaritelli

refindを選択すると、grubメニューが開いた場合にWindowsオプションが表示されますOo
Simone Margaritelli

1
UbuntuがWindowsブートローダーの名前を変更し、代わりに自分自身をインストールしたようです!私の直感は、EFI/Microsoft/Boot/bootmgfw.efi.grbESP上のファイルが実際のWindowsブートローダーであるため、bootmgfw.efi別の名前に変更しbootmgfw.efi.grbてから、bootmgfw.efiに名前を変更すると修正されます。これらのファイルのファイルサイズEFI/ubuntu/grubx64.efiを確認して確認したり、を使用diffしてファイルを比較したりできます。FWIW、Ubuntuの開発者は、一部のEFI実装のバグを回避するためにこれを行った可能性がありますが、そうだとすれば、それらはかなりいたずらです!
ロッドスミス

1
私のラップトップset root=(hd0,gpt1)では、それが私のDELLがEFIパーティションを保持する場所だからです。
ミュータントボブ

タブのオートコンプリートは、起動に使用するgptラベルなどを表示できるので、だまされてはいけません。insmod part_gpt必要とされています。Windows以外のGRUBチェーンロード修正のためにここにいて、パスが正しい場合は、それが答えです。
SleighBoy

2

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


1
Ubuntuには、ESPを消去するバグがありましたが、修正されたと思いました。おそらくそれはいくつかの状況下に残っています。:-(ヒント:ESP全体をバックアップします。これにより、奇妙なことが起こった場合に、将来それを復元できます(EFIはブートセクターコードに依存しないため、ファイルレベルのバックアップは正常に機能します。)
Rodスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.