GRUB исчезает после изменения описания Windows Boot Manager

481
superchampionoftheworld

Я установил Elementary OS, и все работало хорошо. Я получил GRUB при загрузке компьютера, я мог загрузить Windows и Elementary OS. Единственная проблема заключалась в том, что диспетчер загрузки Windows дважды появлялся в меню загрузки EFI. Один из них был GRUB, а другой был просто Windows. Я, наверное, должен был просто оставить его в покое, но я вошел в Windows и набралbcdedit /set description GRUB Это все разрушило. Это фактически избавило от записи Windows Boot Manager в EFI (которая была тайно GRUB) и оставила только Windows. Теперь я не могу снова войти в Linux. Большинство онлайн-уроков о возвращении GRUB после установки Windows или не для EFI. По этой причине я не хочу следовать этим урокам. Говорят, чтобы переустановить grub в MBR, хотя я изначально установил его в раздел EFI. Это не кажется мне правильным.

РЕДАКТИРОВАТЬ: я получил больше информации о проблеме. Я переустановил GRUB, используя общий метод, который я нашел в Интернете. Затем я использовал efibootmgr, и оказалось, что когда я переименовал Windows Boot Manager в GRUB, новая запись была фактически создана. Существует также запись с именем Ubuntu. Однако ни одна из этих записей не находится в порядке загрузки. Я не могу изменить порядок загрузки, чтобы добавить их, хотя. Команда работает, но изменения не сохраняются.

0
Вам, вероятно, нужно переустановить grub; Вы можете использовать LiveCD в качестве среды восстановления. Смонтируйте ваш корневой раздел и соответствующие другие файловые системы (отдельный `/ boot`, раздел efi,` / dev`, `/ sys` и т. Д.) В вашей среде восстановления, затем` chroot` в корневой каталог Linux и переустановите grub с помощью ` личинка-install`. sebasth 6 лет назад 0
Это не сработало. superchampionoftheworld 6 лет назад 0

2 ответа на вопрос

4
Rod Smith

Я вижу, вы нашли решение; Тем не менее, я хотел бы указать, по крайней мере, часть причины проблемы, так как это может помочь вам (или другим) избежать подобных проблем в будущем ....

В первоначальной конфигурации двойной загрузки, которую вы описываете (Windows / ElementaryOS), у вас есть два менеджера загрузки:

  • Встроенный менеджер загрузки материнской платы (EFI). Этот менеджер загрузки использует записи, хранящиеся в NVRAM, которые указывают на загрузочные программы EFI. Записи NVRAM можно добавлять, удалять и иным образом изменять с помощью таких программ, как efibootmgrв Linux, bcdeditв Windows и EasyUEFI в Windows. Как правило, компьютер загружается с загрузочной программой EFI по умолчанию автоматически и без остановки, чтобы показать вам меню во время загрузки; чтобы получить меню, вы должны нажать системную клавишу вскоре после включения компьютера или перезагрузки. Общие параметры для этой клавиши включают Esc, Enter и функциональную клавишу (обычно F8 или выше).
  • GRUB - после установки ElementaryOS GRUB должен стать загрузочной программой по умолчанию, указанной встроенным менеджером загрузки EFI. GRUB сам по себе является менеджером загрузки, и в конфигурации с двойной загрузкой он должен отображать меню загрузки при запуске. Это загрузочное меню создается с помощью файла конфигурации на диске, который хранится /boot/grub/grub.cfgв ElementaryOS. (Другой файл, /boot/efi/EFI/ubuntu/grub.cfgтакже может быть вовлечен.)

(Примечание. Диспетчер загрузки представляет меню или другой способ выбора пользователем операционной системы для загрузки. Диспетчер загрузки обычно передает загрузчик, который загружает ядро ​​ОС в память и передает управление ядру. Некоторые программы, в том числе GRUB, являются как менеджерами загрузки, так и загрузчиками, но другие, такие как менеджер загрузки EFI или загрузчик-заглушки Linux EFI, являются одним или другим, но не обоими. Пользователи Linux часто неаккуратны в различении этих двух типов программ. потому что GRUB делает обе работы.)

В любом случае, когда вы работали bcdeditв Windows, вы настраивали менеджер загрузки EFI, но это не влияло на конфигурацию GRUB. Таким образом, вы обошли GRUB, что, конечно, не то, что вы хотели. Чтобы изменить меню GRUB, вам нужно отредактировать его файл конфигурации, но это более неловкий процесс, чем вы могли бы ожидать, поскольку grub.cfgна самом деле он создается с помощью сценариев, поэтому его можно настроить для вашей конкретной системы. Инструмент настройки GRUB представляет собой относительно дружественный графический интерфейс пользователя для настройки GRUB, но я не эксперт по его использованию. Также можно использовать другие загрузочные менеджеры и загрузчики в Linux, полностью минуя GRUB.

Другая проблема, которая, вероятно, актуальна, - Безопасная загрузка. ElementaryOS основан на Ubuntu, который использует программу под названием Shim для поддержки безопасной загрузки. Двоичный файл Shim ( shimx64.efi) подписан Microsoft и поэтому пользуется доверием большинства EFI. Основная цель Shim - увеличить количество ключей Secure Boot, которые будет принимать прошивка, и запустить GRUB ( grubx64.efi), который, в свою очередь, подписан другим ключом (Canonical, в случае Ubuntu, и, вероятно, также поэтому ElementaryOS, хотя я ' я не проверял это).

Учитывая природу вашего решения, я подозреваю, что вы включили как минимум две записи для ElementaryOS в список загрузки NVRAM вашего EFI, одна из которых указывала на Shim, а другая - на GRUB. Я предполагаю, что тот, который указывал непосредственно на GRUB, пришел раньше в вашем порядке загрузки, но был проигнорирован прошивкой, потому что он не прошел неизмененный тест Secure Boot прошивки. Когда вы сказали, что прошивка доверяет GRUB, она начала проходить тестирование, и GRUB запустится. Возможно, изначально он был настроен как-то иначе, но ваша ошибка bcdeditв Windows стерла или изменила порядок записи, загружаемой через Shim. Ваша переустановка GRUB также, вероятно, немного испортилась.

Если вы хотите понять это еще лучше, я рекомендую вам прочитать одно или несколько из следующего:

Даже общая сумма этих страниц не скажет вам точно, что произошло в вашей системе, но вы можете лучше диагностировать ее, изучив sudo efibootmgr -vрезультаты и устранить аналогичные проблемы, если они возникнут в будущем.

Вау, это много информации. Благодарю. Я сделал efibootmgr -v, и вы правы, есть 3 записи для Elementary OS, две с shim и одна с grub. Я также нашел запись Windows, которую я назвал GRUB. superchampionoftheworld 6 лет назад 0
1
superchampionoftheworld

Я нашел решение самостоятельно. Видимо, мне пришлось пометить grubx64.efi как доверенного в настройках UEFI. Это действительно странно, так как у меня была безопасная загрузка все время. В любом случае, это добавило новую запись для загрузчика EFI, и эта запись действительно загружает GRUB, как и должно быть.