Jalur file EFI tidak valid

11

Saya baru saja menginstal Ubuntu 12 pada laptop baru saya (dengan Win7 64bit pra diinstal) dalam mode EFI dan sekarang saya tidak dapat memuat Win7 lagi (Ubuntu hanya memuat baik dari grub). Ketika saya memilih entri Windows 7 di menu grub, saya mendapatkan kesalahan ini:

Invalid EFI file path

Entri grub.cfg (dihasilkan oleh perbaikan-boot) adalah:

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
}

Ini adalah output 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

Partisi EFI boot, dipasang sebagai

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

memiliki file-file berikut (tidak termasuk folder grub dan file lainnya di root boot):

./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

Bagaimana saya bisa memperbaikinya?

Terima kasih

Simone Margaritelli
sumber

Jawaban:

6

Entri GRUB Anda untuk Windows sesuai untuk boot mode BIOS, tetapi tidak untuk boot mode EFI. Ini adalah bug GRUB. Anda dapat mencoba mengganti entri dengan sesuatu seperti berikut ini:

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

Saya tidak membuat jaminan bahwa ini akan berhasil, tetapi mungkin. Jika ya, tambahkan entri itu ke /etc/grub.d/40_customsehingga akan dibuat lagi setiap kali Ubuntu memperbarui konfigurasi GRUB-nya.

Pilihan lain adalah menggunakan boot manager yang berbeda sebagai tambahan atau bukannya GRUB. rEFInd, misalnya, akan secara otomatis mendeteksi Windows dan GRUB; dan jika Anda menggunakan kernel 3.3.0 atau yang lebih baru (seperti yang dikirimkan dengan Ubuntu 12.10, tetapi tidak dengan Ubuntu 12.04), Anda dapat mem-boot Linux secara langsung dengan rEFInd, mem-bypass GRUB seluruhnya. gummiboot adalah pilihan lain dengan kemampuan boot serupa, tetapi ini membutuhkan lebih banyak perawatan manual jika Anda ingin mem-boot Linux secara langsung dengan gummiboot.

Rod Smith
sumber
Menggunakan entri menu itu, mengirim saya dari grub ke layar hitam dan kemudian kembali ke grub lagi :(
Simone Margaritelli
refind memberi saya opsi windows dengan jika saya memilihnya menu grub dibuka Oo
Simone Margaritelli
1
Kedengarannya seperti Ubuntu telah mengganti nama boot loader Windows dan menginstal sendiri di tempatnya! Firasat saya adalah EFI/Microsoft/Boot/bootmgfw.efi.grbfile pada ESP adalah boot loader Windows asli, jadi mengubah nama bootmgfw.efimenjadi sesuatu yang lain dan kemudian mengubah nama bootmgfw.efi.grbkembali ke bootmgfw.efi akan memperbaikinya. Anda dapat memeriksa ukuran file dari file-file ini dan EFI/ubuntu/grubx64.efiuntuk memverifikasi ini, atau gunakan diffuntuk membandingkannya. FWIW, pengembang Ubuntu mungkin telah melakukan ini untuk mengatasi bug dalam beberapa implementasi EFI, tetapi agak nakal dari mereka, jika demikian!
Rod Smith
1
Di laptop saya, saya harus melakukannya set root=(hd0,gpt1)karena di situlah DELL saya menyimpan partisi EFI-nya.
Mutant Bob
Jangan tertipu untuk berpikir karena tab autocomplete dapat melihat label gpt, dll. Bahwa itu akan menggunakannya untuk boot. The insmod part_gptdiperlukan. Jika Anda berada di sini untuk memperbaiki pemuatan rantai GRUB selain Windows dan jalur Anda benar, itulah jawaban Anda.
SleighBoy
2

Akhirnya saya telah menyelesaikan pemformatan dan menginstal ulang semuanya dari awal ... pada dasarnya (tidak tahu mengapa) grub telah menimpa windows 7 loader, itulah masalahnya.

Simone Margaritelli
sumber
1
Ubuntu dulu memiliki bug di mana ia akan menghapus ESP, tapi saya pikir itu sudah diperbaiki. Mungkin masih ada dalam beberapa keadaan. :-( Kiat: Cadangkan seluruh ESP Anda. Dengan begitu, jika terjadi sesuatu yang aneh, Anda dapat memulihkannya di masa mendatang. (EFI tidak bergantung pada kode sektor boot, sehingga cadangan tingkat file berfungsi dengan baik.)
Rod Smith