Неверный путь к файлу EFI

11

Я только что установил Ubuntu 12 на свой новый ноутбук (с предварительно установленной 64-битной Win7) в режиме EFI, и теперь я больше не могу загружать Win7 (Ubuntu просто отлично загружается из grub). Когда я выбираю запись Windows 7 в меню grub, я получаю эту ошибку:

Invalid EFI file path

Запись grub.cfg (сгенерированная загрузочным ремонтом):

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

Ваша запись GRUB для Windows подходит для загрузки в режиме 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 или вместо него. Например, rEFInd автоматически обнаружит как Windows, так и GRUB; и если вы используете ядра версии 3.3.0 или новее (поставляются с Ubuntu 12.10, но не с Ubuntu 12.04), вы можете загружать Linux напрямую с помощью rEFInd, полностью минуя GRUB. gummiboot - это еще один вариант с похожими возможностями загрузки, но он требует больше ручного обслуживания, если вы хотите загружать Linux напрямую с помощью gummiboot.

Род Смит
источник
Используя этот пункт меню, отправляет меня из grub на черный экран, а затем снова в grub :(
Simone Margaritelli
Refind дает мне возможность Windows, если я выберу его, откроется меню Grub. Oo
Simone Margaritelli
1
Звучит так, будто Ubuntu переименовала загрузчик Windows и установилась на его место! Я догадываюсь, что EFI/Microsoft/Boot/bootmgfw.efi.grbфайл на ESP - настоящий загрузчик 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 Смит