Как изменить строчные шестнадцатеричные в верхний регистр с 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 на компакт-диске: 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
задан 6 June 2015 в 20:01

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). Таким образом предупреждение должно вопрос только на этих более старых EFIs.

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

0
ответ дан 6 June 2015 в 20:01

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

Похожие вопросы: