Как мне переустановить загрузчик grub-efi в Fedora Linux?

12

Я недавно установил Fedora 18 с помощью загрузки EFI. Как и другие текущие дистрибутивы Linux, он настраивает GRUB2 для меня.

У меня есть опыт переустановки BIOS версии GRUB, когда что-то идет не так. Я знаю, например, как загрузить аварийный диск, выполнить загрузку в установленную систему, запустить grub-installи, возможно, update-grub/ grubby/ grub-mkconfig.

Как мне переустановить EFI версию GRUB, если что-то пойдет не так? (Я знаю, что что-то пойдет не так: я их сломаю).

sourcejedi
источник
Почему вы задали неопределенный вопрос, а затем сразу же ответили на него? Хотя ответ дает полезную информацию, вопрос действительно нуждается в разъяснении: знания о том, что вы что-то изменили, недостаточно. Понимание того, что именно изменилось, действительно необходимо для того, чтобы дать хороший ответ на вопрос.
Род Смит
@RodSmith спасибо за ответ на мое письмо об EFI ранее :). И для добавления вашего комментария в downvotes. Вопрос, с которого я начал, был буквально таким. У меня есть опыт переустановки grub-pc. Я хочу иметь такой же уровень уверенности, что я знаю, как восстановить систему EFI. Я однажды отредактировал вопрос, чтобы подчеркнуть, что речь шла о переустановке grub ... Думаю, мне следует повторить попытку и более четко изложить свои мотивы.
Sourcejedi
Почему вы используете Grub, если у вас есть UEFI? Какое преимущество дает сцепление двух загрузчиков?
Марко
@Marco UEFI не является загрузчиком, поддерживаемым любым дистрибутивом Linux, который я знаю! Fedora автоматически обновляет GRUB при установке нового ядра и устанавливает необходимые параметры загрузки, такие как root =. Это не делает это для EFI. Я мог бы отказаться от поддержки дистрибуции и использовать автоматическое сканирование REFIND с параметрами ядра в refind.conf , но это все равно будет цепочкой загрузчика / менеджеров! И Microsoft не подписывает драйверы GPL, поэтому Secure Boot все равно должен перейти в SHIM-> boot loader-> Linux, и вам действительно нужно меню загрузки после части UEFI-> SHIM.
Sourcejedi
После установки нового ядра достаточно одного вызова efibootmgrдля обновления записи в меню UEFI. Я не знаю о REFInd или SHIM. Я лично не объединяю несколько загрузчиков. Все операционные системы добавлены в загрузочное меню UEFI, и оно работает отлично.
Марко

Ответы:

9

Во-первых, вам понадобится EFI-загруженная система Linux. Если у вас все еще есть исходный установочный носитель (CD / DVD / USB-флешка), на нем обычно должна быть соответствующая спасательная система Это может даже иметь возможность ремонта одним щелчком :).

В качестве альтернативы, сообщество Ubuntu предоставляет образ для автоматического восстановления загрузки . Он утверждает, что поддерживает Fedora. Если вы хотите узнать, что на самом деле делает, я предлагаю вам прочитать это стороннее объяснение заранее.

Однако я использовал спасательную систему общего назначения с консольными инструментами. Помимо поддержки загрузки EFI, я убедился, что efibootmgrнаходится в списке пакетов . Он называется GRML и основан на Debian. Вот информация об инструментах консоли и grub-efi, которые я обнаружил, когда спасал свою систему Fedora:

  1. При запуске системы Fedora 18, загруженной EFI, не запускайтеgrub2-install . Он будет претендовать на успех, но сломает загрузочную систему Fedora grub-efi.

    • Файл /boot/EFI/fedora/grub.efiустанавливается пакетом grub-efi. Если вы действительно хотите переустановить его, использовать yum reinstall grub-efi. (Чтобы сделать это из общей системы аварийного восстановления, вы можете сделать это после mountзагрузки и установки chrootв установленную вами систему Fedora). Fedora grub-efi использует файл конфигурации /boot/EFI/fedora/grub.cfg(предположительно, сгенерированный grubby). Fedora на EFI не будет создавать файл в /boot/grub2/grub.cfg. Выполнение grub2-installзаменит grub.efi изображением, которое пытается прочитать /boot/grub2/grub.cfg, и поэтому потерпит неудачу.

    • grub2-installустанавливает загрузочную запись EFI для grub.efi. Однако, если вы не отключили Secure Boot в вашей прошивке, сертифицированной для Windows 8, эта запись не сможет загрузиться. Вам нужно загрузить shim.efiвместо этого (игнорировать shim-fedora.efi, я не уверен, что именно это). См. ниже.

  2. Вы можете потерять загрузочную запись EFI для Fedora, если ваши настройки прошивки сброшены. (Вручную, либо путем обновления прошивки, либо из-за того, что прошивка глючит - последнее было сообщено в дикой природе). Вот как вручную создать загрузочную запись EFI для Fedora с безопасной загрузкой:

    $ sudo efibootmgr -c -L Fedora -d /dev/sda -p 100 -l \\EFI\\fedora\\shim.efi
    

    В этом примере используется номер раздела 100 на первом стандартном диске, распознаваемом Linux. Вы должны настроить параметры -d /dev/sdaи -p 100определить файловую систему, в которой монтируется Fedora /boot/efi. Это системный раздел EFI. Установщик Fedora создаст специальный ESP для вашей установки Fedora отдельно от ESP, используемых любой другой операционной системой. ( Это отличается от Ubuntu и OpenSUSE ).

    Обратите внимание, что efibootmgrкоманда требует, чтобы вы запускали ее из системы с EFI-загрузкой.

sourcejedi
источник
«Обратите внимание, что команда efibootmgr требует, чтобы вы запускали ее из системы с загрузкой EFI». - в этом случае, как вы «запускаете» систему, загруженную EFI? (мой текущий USB не загружается при выборе опции UEFI)
jozxyqk
1
Установочный носитель - это поддерживаемый способ загрузки вашей системы. Я думаю, что вы также должны иметь возможность загружать систему EFI без установки переменных встроенного программного обеспечения EFI, это предполагает создание /EFI/boot/bootx64.efi(при условии 64-битного UEFI). Именно так работают установочные носители USB (все, кроме CD / DVD). Этого может быть достаточно, чтобы скопировать shim.efi, но я не уверен, настроен ли он на работу или нет.
sourcejedi
5

Если у вас двойная загрузка с UEFI Windows, есть еще одна возможность. который не требует восстановления диска.

Вы можете загрузиться в Windows, открыть командную строку с правами администратора и выполнить следующую команду:

bcdedit /set {bootmgr} path \EFI\fedora\shim.efi

Это заменит загрузочную запись Windows в UEFI на загрузочную в GRUB. Предполагая, что ваше меню GRUB включает в себя рабочую запись для Windows, у вас теперь работает двойная загрузка :-). Надеюсь, все это будет работать без отключения Secure Boot.

Я только что должен был сделать это сам после обновления Windows, и, похоже, все получилось.

Источник и дополнительная информация: http://nwrickert2.wordpress.com/2013/05/13/notes-on-uefi-windows-and-linux/ .

ternaryOperator
источник
В качестве альтернативы см. Два решения, описанных по адресу askubuntu.com/a/799734/462004 (используя EasyUEFI или как изменить порядок загрузки, используя bcdedit.exeвместо записи Windows, как это делает ваша команда).
phk
1

https://fedoraproject.org/wiki/GRUB_2?rd=Grub2#Updating_GRUB_2_configuration_on_UEFI_systems :

dnf reinstall grub2-efi grub2-efi-modules shim

(при условии, что эти пакеты уже установлены и предыдущая конфигурация существует)


источник
Благодарность! «Создать пункт меню загрузки: TL; DR: это должно произойти автоматически» - yay.
Sourcejedi
О да, это так: grub2-mkconfig -o /boot/grub2/grub.cfg(или в системе (U) EFI это было бы что-то вроде grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg. Не сработало?
Извините, я имел в виду, что вики подразумевает, что при переустановке пакета grub восстанавливаются переменные EFI, необходимые для загрузки GRUB (которые, возможно, потребуется воссоздать, например, если вы сбросили настройки «BIOS» по какой-то причине). Я не думаю, что пытался dnf reinstall, и если это правда, это звучит довольно здорово.
sourcejedi
0

Просто для простоты вот все, что вы делаете:

yum reinstall grub2-efi

НЕ запускайте grub2-install, это сломает вашу систему, предоставив вам пустое меню загрузки grub (это потому, что grub2-install выдаст вам плохой / общий файл .efi, который пытается загрузить grub.cfg из неправильного места.

Кроме того, вы можете обновить ваш grub-config, если вы перешли на новые диски или ваш раздел / макет изменился с помощью:

grub2-mkconfig -o /boot/EFI/fedora/grub.cfg
Ариб Су Ясир
источник
Приятно читать некоторые подтверждения :). Я предложил редактирование, показывающее, как использовать grub2-mkconfig -o. Мне непонятно, насколько полезен простой ответ - не то, что мой строго более полезен, но это предполагает, что вы все еще можете каким-то образом загрузить систему Fedora, или вы заметили, что допустили ошибку, прежде чем завершить работу. (Мой ответ волнует насчет универсальных аварийных дисков, но, AFAIK, вам нужно выполнить chroot в установке, убедившись, что вы смонтировали все необходимые файловые системы ... это хорошо в специализированной спасательной системе, такой как установщик Debian, она выполняет mount + chroot для вас).
sourcejedi