Как изменить строчные шестнадцатеричные на верхний с помощью efibootmgr?

Строковый гекс, кажется, проблема для grub2:

:~$ sudo grub-install --recheck /dev/sdb`

Installing for x86_64-efi platform.
** Warning ** : Boot000a is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : Boot000b is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : please recreate these using efibootmgr to remove this warning.
** Warning ** : Boot000a is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : Boot000b is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : please recreate these using efibootmgr to remove this warning.
Installation finished. No error reported.

Таким образом, используется строчный гекс, и это предотвращает загрузку с Grub2.

:~$ modprobe efivars

:~$ sudo efibootmgr

** Warning ** : Boot000a is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : Boot000b is not EFI 1.10 compliant (lowercase hex in name)
** Warning ** : please recreate these using efibootmgr to remove this warning.
BootCurrent: 000B
Timeout: 1 seconds
BootOrder: 0001,000B,000A,0000,0004
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0004  CD/DVD Drive
Boot000a* Hard Drive
Boot000b* UEFI: TSSTcorp CDDVDW SH-222BB

Страницы руководства говорят :~$ sudo efibootmgr -b но не как это реализовать.

Дополнительная информация:

Проблема невозможности загрузки с grub2 началась после регулярного обновления пакетов (включая пакет Grub2).

Ubuntu 14.04 2 64bit была загружена с программой ReFind на CD: Boot000b* UEFI: TSSTcorp CDDVDW SH-222BB

Выше мы видим, что BootCurrent может быть заглавными автоматически: BootCurrent: 000B. Таким образом, процесс мог быть автоматизирован. Однако Boot000a и b остаются в нижнем регистре.


Ситуация изменилась: когда я запустил efibootmgr с подробной опцией -v, я заметил, что порядок загрузки был изменен (не показан). Выше вы видите, что менеджер загрузки Windows и Ubuntu не имеют шестнадцатеричный регистр. Я попробовал исходную конфигурацию UEFI сначала с Ubuntu, а затем с Windows и без CD REFIND. Теперь я могу загрузиться в Ubuntu, но только через режим восстановления.

:~$ sudo efibootmgr -v

** Warning ** : Boot000a is not EFI 1.10 compliant (lowercase hex in name) ** Warning ** : please recreate these using efibootmgr to remove this warning. BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0001,0000,0004,000A Boot0000* Windows Boot Manager HD(1,800,84000,7e32cd58-blabla)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS... blabla Boot0001* ubuntu HD(1,800,84000,7e32cd58-blabla)File(\EFI\ubuntu\shimx64.efi) Boot0004 CD/DVD Drive BIOS(3,0,00)P4: TSSTcorp CDDVDW SH-222BB . Boot000a Hard Drive BIOS(2,0,00)P1: Samsung SSD 840 EVO 250GB .

Удивительно, что Ubuntu теперь может загружаться в режиме восстановления (я ничего не сделал, чтобы повлиять на grub). Любые комментарии? Это не решает вопрос о нижнем регистре.

1 ответ

Решение

Я подозреваю, что предупреждение, которое вы видите, это красная сельдь. Boot000a is not EFI 1.10 compliant (lowercase hex in name) и связанные сообщения четко помечены как предупреждения, а не ошибки. (В компьютерах "предупреждение" почти всегда является уведомлением пользователей о том, что что-то неоптимально или что оно может вызвать проблемы в некоторых ситуациях, в то время как "ошибка" обозначает проблему остановки показа.) Обратите внимание, что ваш пример вывода включает в себя следующее утверждение:

Installation finished. No error reported.

Другими словами, все должно работать; Предупреждения не помешали установке GRUB.

Я также пытался отследить, что вызывает предупреждения, и это efibootmgr полезность:

http://efibootmgr.sourcearchive.com/documentation/0.5.4-2ubuntu1/efibootmgr_8c-source.html

Код, который генерирует предупреждение, только отображает предупреждение; он не устанавливает флаги, которые будут иметь другие последующие негативные эффекты.

Тем не менее, вполне возможно, что некоторые последующие программы, такие как двоичные файлы GRUB, могут также иметь проблемы с шестнадцатеричными числами в нижнем регистре, не генерировать предупреждения, но давать сбой, когда они их видят. Это кажется маловероятным, хотя; AFAIK, GRUB не консультируется с EFI Boot#### переменные, поэтому, если GRUB запускается, вы, вероятно, прошли точку, где они должны иметь значение.

Еще один момент, связанный с этим, заключается в том, что названия параметров загрузки с шестнадцатеричными цифрами в нижнем регистре указывают на то, что они были созданы вашей прошивкой. Таким образом, даже если вы удалите эти параметры загрузки, они или другие параметры с шестнадцатеричными числами в нижнем регистре могут быть (повторно) созданы прошивкой в ​​будущем. В предупреждении говорится, что значения не соответствуют EFI 1.10, но большинство современных компьютеров поставляются с EFI 2.x (он же UEFI). Таким образом, предупреждение должно иметь значение только для этих старых EFI.

Это подводит меня к истинному смыслу вопроса: вы описали страшное, но, вероятно, предупреждение с красной сельдью, но вы не описали, в чем заключается настоящая проблема, по крайней мере, недостаточно подробно, чтобы быть полезным. Вы заметили, что вы потеряли способность загружаться после обновления некоторых пакетов, но это очень расплывчатое описание проблемы. GRUB подходит вообще? Если появляется GRUB, отображается ли меню? Если GRUB пытается запустить ядро, оно зависает, и если да, то какой тип вывода появляется первым? Вы упомянули об использовании rEFInd, но позволили ли вам лучше загружать Linux? Если нет, какие симптомы появились при загрузке с помощью rEFInd? Ответы на эти вопросы имеют решающее значение для решения вашей актуальной проблемы. Я предлагаю вам опубликовать новый вопрос с этой информацией и уделять меньше внимания (очевидно, безвредно) efibootmgr предупреждение.

Другие вопросы по тегам