Оболочка GRUB появляется после перезагрузки Ubuntu, никаких проблем после перезагрузки Windows
У меня Asus E402SA со следующим расположением дисков:
- 30 ГБ Внутренняя MMC
- 250 ГБ SSD
Я установил Windows 10 на MMC и Ubuntu 16.04 на SSD (оба разделены по схеме GPT). Раздел EFI с загрузочными файлами Windows и GRUB находится на MMC.
Когда я загружаю Windows, выключаюсь, снова включаю, все хорошо: появляется меню GRUB, и я могу выбрать Ubuntu или Windows.
Когда я загружаю Ubuntu, выключаю и включаю, оболочка GRUB появляется без каких-либо сообщений об ошибках. Это происходит каждый раз, когда я выключаю и снова включаю ПК, пока я снова не загрузлю Windows.
exit
Команда возвращает меню обратно, так что это не проблема, поскольку GRUB не находит файлы конфигурации. Также, если я выберу запись GRUB в менеджере загрузки BIOS, оболочка не появится и она сразу перейдет в меню.
Я искал в интернете, ничего подобного не нашел. Что может быть причиной проблемы? Может ли это быть какой-то системной службой (или самой системой), работающей с EFI?
Отладочная информация
вывод bootinfoscript: http://www.pasteall.org/125146
2 ответа
Я знаю, что этому 5 лет, но я вижу ту же ситуацию:
- UEFI
- два диска: NVME + SSD (загрузочный раздел на NVME) с разделами GPT
- Windows 10 установлена на NVME
- Ubuntu 20.04 установлен на SSD
Ключевая информация предоставлена Робом:
это, вероятно, проблема времени - прошивке требуется некоторое время, чтобы идентифицировать SSD, и GRUB пытается получить доступ к его файлу конфигурации, прежде чем это сработает.
Установка задержки в биосе решила проблему. Для моего рабочего стола HP это было
Post HotKey Delay
установить на 5 сек.
Ваша конфигурация ставит бинарный GRUB (/boot/efi/EFI/ubuntu/grubx64.efi
) на ГМК (/dev/mmcblk0
) и файл конфигурации GRUB (/boot/grub/grub.cfg
) на SSD (/dev/sda
). Мое GUESS (позвольте мне еще раз подчеркнуть: GUESS) заключается в том, что Ubuntu каким-то образом делает что-то, чтобы сделать SSD невидимым для прошивки при перезагрузке системы, но Windows этого не делает.
Вы можете проверить эту гипотезу, установив двоичный файл оболочки EFI (см. Здесь указатели на некоторые двоичные файлы), сконфигурировав GRUB для предоставления возможности его запуска (см. Здесь для получения информации о запуске универсальных двоичных файлов EFI из GRUB), и запустив оболочку EFI одновременно. в условиях, когда проблема возникает, а когда нет. Если моя гипотеза верна, SSD должен отображаться в списке устройств при холодной загрузке, но не при перезагрузке из Ubuntu. К сожалению, список устройств часто прокручивается в верхней части экрана, прежде чем вы сможете его прочитать. Поместит небольшую файловую систему FAT на SSD, так как вы сможете проверить, присутствует она или нет. (Это будет отображаться как fs0:
, fs1:
или какое-либо другое устройство файловой системы, если оно видно.)
Если я прав, мне приходит в голову несколько решений или обходных путей:
- При использовании Ubuntu выключите и перезапустите, а не перезагрузите компьютер. Предположительно это то, что вы делаете сейчас.
- Перераспределите ваши устройства так, чтобы у вас был маленький (~500-1000 МиБ)
/boot
раздел на ММС. Вам нужно будет переустановить GRUB, как только это будет сделано. В результате вашgrub.cfg
файл будет на ГМК, и все должно работать правильно. Это потребует некоторого манипулирования разделами, что может быть страшно, если вы не знакомы с такими вещами. (В качестве альтернативы вы можете переустановить Ubuntu, чтобы настроить его таким образом с самого начала.) - Обновление до Ubuntu 16.10. Поскольку 16.10 использует ядро, отличное от 16.04, это может изменить поведение при перезагрузке, чтобы лучше работать с вашей прошивкой. Это не гарантировано работать, хотя; Это и выстрел в темноте, и длинный выстрел. (После выхода Ubuntu 16.04.2 вы можете попробовать его, поскольку он будет использовать то же ядро, что и 16.10.)
- Более подробно изучите работу с дисками при завершении работы (или, возможно, при запуске), в надежде найти параметр ядра, который будет модифицировать любые системные вызовы, вызывающие проблемы. Например, есть ядро
reboot=
вариант (см. здесь для документации). Этот подход потребует копаться в файлах документации и экспериментировать с конфигурацией вашего загрузчика, и НЕ гарантированно даст результаты.
Удачи!