Bug 39432 - grub-install создает запись с нерабочим загрузчиком на некоторых материнках с UEFI (отсутствует BOOT/BOOTX64.EFI)
Summary: grub-install создает запись с нерабочим загрузчиком на некоторых материнках с...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: grub (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Николай Костригин
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-12-13 01:53 MSK by Vyacheslav Dikonov
Modified: 2021-01-15 11:43 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vyacheslav Dikonov 2020-12-13 01:53:08 MSK
У меня появилась игровая мат. плата MSI MEG z490i Unify,на которой не работает стандартный и рекомендуемый установщиком на livecd starterkit-ов способ установки загрузчика. 

В конце установки появляется меню вариантов установки загрузчика, где по-умолчанию рекомендуется запись grub в папку altlinux на разделе EFI. После этого должна вноситься запись в nvram, но это, видимо, не срабатывает. 

Вот вывод efibootmgr, после установки. Он соответствует таблице в биосе, которая не меняется после устаноки. Secure boot при этом DISABLED.

BootOrder: 0001,0002,0003,0004,0005,0006
Boot0001* UEFI OS
Boot0002* UEFI: Generic STORAGE DEVICE 9407
Boot0003* UEFI: Generic STORAGE DEVICE 9407, Partition 2
Boot0004* UEFI:CD/DVD Drive
Boot0005* UEFI:Removable Device
Boot0006* UEFI:Network Device

Работает только один вариант из этого меню - UEFI Removable drive, создающий файл EFI/boot/bootx64.efi ! 

ПРОБЛЕМА состоит в том, что пользователь скорее всего не знает, что рекомендованный вариант негоден и не может вернуться в это меню после ошибки и переделать. Догадаться, что надо выбирать removable drive для встроенного SSD крайне тяжело, так что ошибка будет повторяться. Для этого придется раз 5 чертыхаясь заново разбивать диск, ждать копирования и создавать пользователей. 

ВОЗМОЖНЫЕ РЕШЕНИЯ
- Написать подробное разъяснение возможных проблем в самом установщике и переформулировать названия вариантов установки загрузчика.
- Добавить проверку, появилась ли новая запись в NVRAM, например запуском efibootmgr до и после. В случае неудачи удалять EFI/altlinux и предлагать другие варианты
- Добавить возможность переустановки только загрузчика без полного повторения установки системы.

Конечно, желательно сделать все три поправки.
Comment 1 Anton Farygin 2020-12-13 10:48:54 MSK
Спасибо, мы тоже столкнулись с такой же проблемой на MSI и уже готовим исправление.
Comment 2 Антон Мидюков 2020-12-13 10:52:22 MSK
(Ответ для Anton Farygin на комментарий #1)
> Спасибо, мы тоже столкнулись с такой же проблемой на MSI и уже готовим
> исправление.

alterator-grub надо бы тоже усовершенствовать.
Comment 3 Anton Farygin 2020-12-13 10:52:49 MSK
Предполагается, что нужно:
1) сделать так, что бы grub-efi при установке всегда создавал BOOT/BOOTX64.EFI
2) убрать отдельную строчку про мобильные носители из инсталятора.
3) grub-autoupdate должен обновлять BOOT/BOOTX64.EFI
Comment 4 Антон Мидюков 2020-12-13 11:04:32 MSK
(Ответ для Anton Farygin на комментарий #3)
> Предполагается, что нужно:
> 1) сделать так, что бы grub-efi при установке всегда создавал
> BOOT/BOOTX64.EFI

Т.е. в nvram никогда не лезть? Или делать это в случае неудачи с записью в nvram?

> 2) убрать отдельную строчку про мобильные носители из инсталятора.

тогда другие пункты тоже излишни

> 3) grub-autoupdate должен обновлять BOOT/BOOTX64.EFI

Замечательно.

И ещё до кучи. Нужно:

1) При ручной разбивке не пускать далее, пока точка монтирования /boot/efi не будет создана при загрузке в режиме UEFI

2) Не показывать в alterator-grub пункты установить на Жёсткий диск и разделы в режиме efi. Пользователи путаются.
Comment 5 Николай Костригин 2020-12-13 12:44:14 MSK
(Ответ для Антон Мидюков на комментарий #4)
> (Ответ для Anton Farygin на комментарий #3)
> > Предполагается, что нужно:
> > 1) сделать так, что бы grub-efi при установке всегда создавал
> > BOOT/BOOTX64.EFI
> 
> Т.е. в nvram никогда не лезть? Или делать это в случае неудачи с записью в
> nvram?

По моим наблюдениям наличие EFI\BOOT\BOOTX64.EFI является, своего рода костылем, с которым эти новые EFI-firmware не удаляют созданную в nvram загрузочную запись.
Как только появляется эта запись, которая сама по себе недостаточна, перестает исчезать при перезагрузке основная запись о загрузчике в EFI\altlinux\SHIMX64.EFI (их становится 2: "altlinux" и UEFI OS )

Таким образом описанный Антоном сценарий является необходимым и достаточным на данном этапе понимания проблемы: 
(Ответ для Anton Farygin на комментарий #3)
> Предполагается, что нужно:
> 1) сделать так, что бы grub-efi при установке всегда создавал
> BOOT/BOOTX64.EFI
> 2) убрать отдельную строчку про мобильные носители из инсталятора.
> 3) grub-autoupdate должен обновлять BOOT/BOOTX64.EFI

До опубликования изменений в grub-efi и alterator-grub можно пользоваться следующим сценарием в установщике:
1. EFI (для съемных носителей)
2. возврат на предыдущий шаг установки
3. EFI (рекомендуемый)

После этого, в результате перезагрузки, созданная загрузочная запись altlinux не должна исчезать.
Comment 6 Repository Robot 2021-01-15 11:43:32 MSK
grub-2.04-alt2 -> sisyphus:

 Fri Dec 25 2020 Nikolai Kostrigin <nickel@altlinux> 2.04-alt2
 - grub-install: add workaround for malformed EFI-firmware implementations
   (closes: #39432)
   + add debian-grub-install-removable-shim patch
   + add debian-grub-install-extra-removable patch
   + add alt-grub-install-no-fallback-for-removable patch
 - grub-efi-autoupdate: use grub-install --force-extra-removable by default