Как заставить биос UEFI запускать GRUB, а не Windows?

TL;DR, добавлено при редактировании:

Вопрос в следующем:

Как я могу заставить BIOS предпочесть GRUB вместо Windows Boot Manager на одном и том же загрузочном разделе UEFI?

Проблема не в Grub; Grub делает все правильно, когда BIOS запускает его. Проблема не в том, что "диск не загрузочный", потому что и загрузочный UEFI-раздел Windows, и загрузочный UEFI-раздел Grub являются загрузочными. Проблема в том, с какого UEFI-бутстрапа BIOS выбирает загрузку.

Я настраиваю новый компьютер и хочу, чтобы он по умолчанию загружался в Ubuntu, но при загрузке имел возможность выбрать Windows. Это особенно важно, если электричество отключится и вернется; меня даже не будет в доме.

Я начал с установки Ubuntu 17.04 на внутренний NVMe-диск, разбитый на разделы GPT, чтобы использовать половину диска, и отдельный загрузочный раздел UEFI. GRUB загружает его просто отлично, и я вижу меню загрузки GRUB при запуске, где я могу выбрать любые элементы, о которых знает GRUB.

Затем я установил Windows 10 Pro из недавно загруженного ISO. Он установил Windows Boot Manager на тот же раздел UEFI, а Ubuntu оставил нетронутой (отлично!), и она прекрасно загрузилась в Windows 10.

Однако, он сделал "что-то", что заставило прошивку UEFI немедленно выбрать диспетчер загрузки Windows, а не GRUB при включении. Единственный способ загрузить Linux теперь - использовать менеджер загрузки BIOS (F11 на моем BIOS) и выбрать загрузчик GRUB вручную. BIOS UEFI знает, что на разделе UEFI есть несколько загрузочных установок, потому что я могу выбирать между ними в менеджере загрузки. Однако, когда я нахожусь в меню настроек UEFI BIOS, он просто позволяет мне выбрать "UEFI boot my internal drive" в выборе приоритета загрузки - он не позволяет мне выбрать, какой конкретный загрузчик на этом разделе использовать. И по умолчанию он выбирает Windows, а не GRUB.

В интернете (и на этом сайте) говорится, что старый способ исправить это - запустить update-grub (чтобы GRUB распознал Windows), а затем grub-install (чтобы вернуть GRUB на устройство). Я сделал это, но, к сожалению, все еще наблюдается описанное выше поведение, когда BIOS по умолчанию выбирает Windows Boot Manager. (update-grub действительно находит установку Windows Boot Manager и добавляет ее в меню, и этот пункт меню работает, когда я вручную выбираю раздел GRUB в менеджере загрузки UEFI).

Что я могу сделать, чтобы сделать GRUB загрузкой "по умолчанию" на моем загрузочном разделе UEFI?

Используется материнская плата MSI X399 Carbon.

Вторая правка: Поскольку правильный ответ в итоге был упомянут в комментарии к ответу, я'повторю его здесь:

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.

У меня была точно такая же проблема последние несколько недель. Я решил ее, используя эти варианты. Перед выполнением этих действий я рекомендую вам зайти в BIOS/UEFI и проверить порядок загрузки и убедиться, что место, где установлен grub, является первым по порядку.

Итак, как я понимаю, у вас есть два варианта.

Вариант 1

Я бы рекомендовал вам установить Windows 10 первой. Затем установить ubuntu. Но я знаю, что это своего рода табу - просто сказать "переустановите ваше программное обеспечение", поэтому я'предложу альтернативу тоже.

Вариант 2

С вашей текущей установкой я бы рекомендовал вам загрузиться с Live Ubuntu CD/флешки, установить и запустить boot-repair. Нажмите на опцию "Рекомендуемое восстановление" и следуйте приведенным инструкциям. Внимательно прочтите все команды перед выполнением. Это заменит текущую установку grub новой, что, надеюсь, исправит ситуацию.

Комментарии (3)

Я вижу несколько решений:

  1. Отредактируйте UEFI, чтобы настроить значение по умолчанию. В linux вы можете использовать efibootmgr. В Windows я не уверен, но думаю, что вы можете загрузиться в опцию восстановления, которая позволит вам настроить UEFI. Или вы можете установить что-то вроде rEFInd.
  2. Измените имя папки в разделе EFI. Я думаю, что он предпочитает папку с названием boot или возвращается к ней.
  3. Просто используйте загрузчик Windows, я думаю, его можно настроить для загрузки других ОС.
Комментарии (3)

Возможным решением может быть ручное редактирование файла /etc/default/grub.

sudo vim /etc/default/grub

Запись по умолчанию определяется параметром GRUB_DEFAULT= в /etc/default/grub. Первый "пункт меню" имеет значение "0". Если Ubuntu является вторым пунктом на экране загрузки, установите GRUB_DEFAULT=1.

После этого вам нужно будет выполнить команду для обновления конфигурации grub: update-grub.

Другим вариантом может быть установка grub-customizer и использование его графического интерфейса для настройки приоритета загрузки.

Комментарии (3)