Nieprawidłowa ścieżka do pliku EFI

11

Właśnie zainstalowałem Ubuntu 12 na moim nowym laptopie (z preinstalowanym Win7 64bit) w trybie EFI i teraz nie mogę już załadować Win7 (Ubuntu ładuje się dobrze z gruba). Kiedy wybieram pozycję Windows 7 w menu grub, pojawia się ten błąd:

Invalid EFI file path

Wpis grub.cfg (wygenerowany przez boot-repair) to:

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
}

To jest podzielone wyjście:

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

Partycja rozruchowa EFI, zamontowana jako

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

ma następujące pliki (oprócz folderu grub i innych plików w katalogu głównym rozruchu):

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

Jak mogę to naprawić?

Dzięki

Simone Margaritelli
źródło

Odpowiedzi:

6

Wpis GRUB dla systemu Windows jest odpowiedni dla rozruchu w trybie BIOS, ale nie dla rozruchu w trybie EFI. To jest błąd GRUBA. Możesz spróbować zamienić wpis na coś takiego:

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

Nie daje żadnych gwarancji, że to zadziała, ale może. Jeśli tak, dodaj ten wpis, aby /etc/grub.d/40_customzostał utworzony ponownie za każdym razem, gdy Ubuntu zaktualizuje swoją konfigurację GRUB.

Inną opcją jest użycie innego menedżera rozruchu oprócz lub zamiast GRUB. rEFInd, na przykład, automatycznie wykryje zarówno Windows, jak i GRUB; a jeśli używasz jądra w wersji 3.3.0 lub nowszej (dostarczanej z Ubuntu 12.10, ale nie z Ubuntu 12.04), możesz uruchomić Linux bezpośrednio z rEFInd, całkowicie omijając GRUB. gummiboot to kolejna opcja o podobnych możliwościach rozruchu, ale wymaga więcej ręcznej konserwacji, jeśli chcesz uruchomić Linuksa bezpośrednio z gummiboot.

Rod Smith
źródło
Korzystając z tej pozycji menu, wysyła mnie z gruba na czarny ekran, a następnie z powrotem do gruba :(
Simone Margaritelli,
refind daje mi opcję systemu Windows, jeśli wybiorę to menu grub zostanie otwarte Oo
Simone Margaritelli
1
To brzmi jak Ubuntu zmieniło nazwę modułu ładującego Windows i zainstalowało się na swoim miejscu! Moje przeczucie, że EFI/Microsoft/Boot/bootmgfw.efi.grbplik na ESP to prawdziwy program ładujący Windows, więc zmiana nazwy bootmgfw.efina coś innego, a następnie zmiana nazwy z bootmgfw.efi.grbpowrotem na bootmgfw.efi to naprawi. Możesz sprawdzić rozmiary tych plików i EFI/ubuntu/grubx64.efizweryfikować to lub użyć diffdo ich porównania. FWIW, programiści Ubuntu mogli to zrobić, aby obejść błędy w niektórych implementacjach EFI, ale jest to dość niegrzeczne, jeśli tak!
Rod Smith
1
Na moim laptopie musiałem, set root=(hd0,gpt1)bo tam mój DELL zachowuje partycję EFI.
Mutant Bob
Nie daj się zwieść myśleniu, ponieważ autouzupełnianie w zakładce może zobaczyć etykiety gpt itp., Że użyje ich do uruchomienia. Jest insmod part_gptto potrzebne. Jeśli jesteś tutaj po poprawkę ładowania łańcucha GRUB inną niż Windows, a Twoja ścieżka jest poprawna, to jest twoja odpowiedź.
SleighBoy,
2

Wreszcie rozwiązałem formatowanie i ponowną instalację wszystkiego od podstaw ... w zasadzie (nie wiem dlaczego) grub nadpisał moduł ładujący Windows 7, to był problem.

Simone Margaritelli
źródło
1
Ubuntu miał błąd, który powodował wyczyszczenie ESP, ale myślałem, że to zostało naprawione. Być może w niektórych okolicznościach utrzymuje się. :-( Wskazówka: Utwórz kopię zapasową całego ESP. W ten sposób, jeśli wydarzy się coś dziwnego, możesz go przywrócić w przyszłości. (EFI nie opiera się na kodzie sektora rozruchowego, więc kopia zapasowa na poziomie pliku działa dobrze.)
Rod Smith