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

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

2 ответа2

4

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

В первоначальной конфигурации двойной загрузки, которую вы описываете (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 или загрузчик заглушки EFI Linux, являются одним или другим, но не обоими. Пользователи 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 , и исправить подобные проблемы, если они возникнут в будущем.

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .