11

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 загрузку моего внутреннего диска" в выборе приоритета загрузки - он не позволяет мне выбирать, какой конкретный загрузчик в этом разделе использовать , И по умолчанию выбирает Windows, а не GRUB.

В интернете (и на этом сайте) предполагается, что старый способ исправить это - запустить update-grub (чтобы GRUB распознал Windows), а затем grub-install (чтобы вернуть GRUB обратно на устройство). Я сделал это, но, к сожалению, он по-прежнему ведет себя так, как описано выше, где BIOS по умолчанию выбирает диспетчер загрузки Windows. (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.

5 ответов5

10

Есть довольно много разных способов сделать это, в том числе:

  • Утилита настройки EFI. Большинство EFI предоставляют утилиты настройки, к которым вы можете обратиться, нажав специальную клавишу во время загрузки (как правило, Esc, Del или функциональную клавишу; но какая это клавиша, зависит от одной системы к другой). Они часто, но не всегда, дают возможность изменить порядок загрузки. Если ваша прошивка предоставляет такую опцию, вы сможете использовать ее для перемещения GRUB в верхнее положение. (Вероятно, GRUB будет называться ubuntu , учитывая, что вы установили его из этого дистрибутива.)
  • Оболочка EFI - вы можете использовать команду bcfg в оболочке EFI версии 2, как описано в вики Arch Arch. Если ваша система еще не настроена с простой в доступе оболочкой, этот подход, вероятно, будет сложнее в использовании, чем другие, но он не зависит от ОС.
  • EasyUEFI - сторонняя программа Windows EasyUEFI, вероятно, будет самым простым способом сделать то, что вы хотите. Вы можете щелкнуть запись ubuntu в списке EasyUEFI и переместить ее наверх.
  • bcdedit - команда Windows bcdedit может изменить порядок загрузки на основе NVRAM. В частности, откройте окно командной строки администратора и bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi (за которым может следовать bcdedit /set "{bootmgr}" description "ubuntu" чтобы описание оставалось понятным ); сделать трюк.
  • efibootmgr - этот инструмент Linux может регулировать порядок загрузки. Начните с ввода sudo efibootmgr одиночку, чтобы увидеть варианты. Обратите внимание на номер (Boot#### ), связанный с записью ubuntu , и текущий порядок загрузки (в строке BootOrder ). Затем вы можете ввести новый порядок загрузки с помощью записи ubuntu вверху, используя опцию -o . Например, если текущий порядок загрузки равен 0000,0003,0007,0004, а ubuntu - 0007, вы должны ввести sudo efibootmgr -o 0007,0000,0003,0004 чтобы изменить порядок загрузки.
  • refind-mkdefault - этот скрипт поставляется с rEFInd, и это способ автоматизации предыдущей процедуры. Если вы не используете rEFInd, вам нужно скачать скрипт здесь и сделать его исполняемым (chmod a+x refind-mkdefault ). Затем вы должны запустить его как sudo ./refind-mkdefault -L ubuntu или sudo ./refind-mkdefault -L shimx64 чтобы сделать GRUB загрузочной записью по умолчанию.

Есть потенциальные проблемы и осложнения с любым из этих вариантов. Наиболее вероятным усложняющим фактором является наличие старых или альтернативных загрузочных записей ubuntu . Важно, чтобы вы переместили правильный в верхнюю позицию в порядке загрузки; если вы переместитесь не в ту сторону, у вас не останется никаких изменений в поведении или что-то из-за нефункциональной загрузки, что затруднит загрузку. Если вы используете efibootmgr , строка BootCurrent может помочь вам определить, какую опцию вы должны установить по умолчанию.

Есть другие способы сделать это, которые излишни. Переустановка GRUB (через Boot Repair или grub-install), например, должна помочь. Однако эти подходы могут привести к повреждению известной рабочей конфигурации GRUB.

Также обратите внимание, что некоторые EFI содержат ошибки и есть другие проблемы, которые могут затруднить надежную загрузку GRUB. Вы можете проверить эти вопросы и ответы в AskUbuntu, если столкнетесь с такими проблемами:

1

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

Итак, как я вижу, у вас есть два варианта.

Опция 1

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

Вариант 2

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

1

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

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

Мне только что заменили материнскую плату в ноутбуке, и грязь полностью исчезла.

Я знаю, что это помечено как исправленное, но я подумал, что это может быть полезно для вас.

Чтобы grub отображался как вариант загрузки. Мне нужно было добавить EFI в BIOS.

Я пошел к "варианту списка загрузки" в моем биосе. Нажмите на "Добавить загрузочную опцию" (я знаю, что это специфический BIOS). Это дало мне возможность указать имя файла, которое в моем случае было \EFI\ubuntu\grubx64.efi и дало ему имя grub

Затем я переместил запись grub в начало последовательности загрузки, и теперь она отображается как запись по умолчанию.

То есть, я говорю, что вам может понадобиться найти правильный файл EFI и переместить его в начало последовательности / порядка загрузки.

-1

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

sudo vim /etc/default/grub

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

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

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

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