Як змусити біографії UEFI запускати GRUB, а не Windows?


23

TL; DR, доданий у редагуванні:

Питання:

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

Проблема не в Grub; Grub робить правильно, коли BIOS запускає його. Проблема полягає не в тому, що "диск не завантажується", тому що завантажувальний пристрій Windows UEFI і завантажувальний UEFI Grub завантажуються. Проблема полягає в тому, з якої UEFI завантажує BIOS, з якого вибирається завантажуватися.

Я налаштовую новий комп'ютер і хочу, щоб він за замовчуванням завантажився в Ubuntu, але маю можливість вибрати Windows при завантаженні. Це особливо важливо, якщо потужність згасає і повертається назад; Я навіть не буду в будинку.

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

Потім я встановив Windows 10 Pro з нещодавно завантаженого ISO. Він встановив диспетчер завантаження Windows на той самий розділ UEFI, а Ubuntu залишився неушкодженим (чудово!), І він завантажився чудово в Windows 10.

Однак це зробило "щось", що змушує програмне забезпечення UEFI негайно вибирати диспетчер завантаження Windows, а не GRUB при включенні. Єдиний спосіб завантажувати Linux зараз - використовувати диспетчер завантаження BIOS (F11 у моїй BIOS) та вибрати завантажувач GRUB вручну. У BIOS UEFI відомо, що на розділі UEFI є декілька завантажувальних установок, оскільки я можу вибирати між ними у менеджері завантаження. Однак, коли я перебуваю в меню налаштування в BIOS UEFI, він просто дозволяє мені вибрати "UEFI завантажувати мій внутрішній диск" у виборі пріоритету завантаження - це не дозволяє мені вибрати, який саме завантажувач на цьому розділі використовувати . І за замовчуванням він вибирає Windows, а не GRUB.

Інтернети (і цей сайт) припускають, що старий спосіб виправити це - запустити update-grub(так GRUB розпізнає Windows), а потім grub-install(повернути GRUB на пристрій.) Я це зробив, але, на жаль, він все ще має поведінку як описано вище, де BIOS за замовчуванням вибирає диспетчер завантаження Windows. ( update-grubНе знайдете встановити диспетчер завантаження Windows, і додає , що в меню, і що пункт меню працює , коли я вручну вибрати розділ GRUB в менеджері завантаження UEFI.)

Що я можу зробити, щоб GRUB завантажував "за замовчуванням" на мій завантажувальний розділ UEFI?

Використання материнської плати MSI X399 Carbon.

Друга редакція: Оскільки правильна відповідь закінчується згадкою у коментарі до відповіді, я повторю її тут:

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

Вам просто потрібно встановити Windows, а потім Linux. Не навпаки. У мене якраз протилежна проблема. Коли потужність згодом відновлюється, мій комп'ютер перетворюється на груб і завантажується в Linux, смт. Одне з них - це те, що я маю кожну систему на своєму приводі. Під час завантаження я вибираю диск із Linux та Grub.
DMB

1
Дивовижно, як багато людей пропонують речі, які вже запропоновані іншими людьми, і я вже сказав, що це не працює, ні в моїй початковій публікації, ні в коментарях нижче. Правильним рішенням було "BCDEDIT" в оболонці адміністратора Windows. Жодна з інших пропозицій не вирішила це (і більшість із них я вже намагалася, як на моє запитання)
Джон Ватт,

Відповіді:


22

Існує досить багато різних способів зробити це, зокрема:

  • Утиліта налаштування EFI - Більшість EFI надають утиліти налаштування, до яких можна отримати доступ, натискаючи спеціальну клавішу під час завантаження (Esc, Del або функціональна клавіша, як правило, але яка клавіша варіюється від однієї до іншої системи). Вони часто, але не завжди, дають спосіб регулювати порядок завантаження. Якщо ваша прошивка надає таку опцію, ви зможете використовувати її для переміщення GRUB на верхню позицію. (Ймовірно, буде викликано GRUB ubuntu, враховуючи, що ви встановили його з цього дистрибутива.)
  • Оболонка EFI - Ви можете використовувати bcfgкоманду в оболонці EFI версії 2, як описано у вікі Arch Arch Linux. Якщо ваша система ще не створена з простою доступом до оболонки, такий підхід, ймовірно, буде складніше використовувати, ніж інші, але це ОС-агностик.
  • 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 і ubuntu0007, ви введете 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 (через відновлення завантажувача або grub-install) слід зробити трюк, наприклад. Однак ці підходи ризикують пошкодити відому конфігурацію GRUB.

Зауважте також, що деякі ІФР є помилковими, і є інші проблеми, які можуть ускладнити надійне завантаження GRUB. Ви можете перевірити ці питання та відповіді на AskUbuntu, якщо у вас виникли такі проблеми:


Як я описав у запитанні, утиліта установки EFI не дозволила мені вибрати ubuntu за замовчуванням, хоча дозволила мені це зробити в меню завантаження вручну. Це дозволить мені вибрати диск, а потім запускає Windows з цього. efibootmgr намагався змінити порядок завантаження, але BIOS не звертав уваги на перезавантаження. EasyBCD не працював - це не дозволило мені додати більше пунктів меню. Однак "BCDEDIT" в оболонці адміністратора насправді спрацював, тому дякую за цей варіант!
Джон Ватт

Зауважте, що EasyBCD та EasyUEFI - це дві різні програми одного і того ж постачальника. На жаль, здається, що безкоштовна версія EasyUEFI більше не доступна - пропонуються лише пробні версії. Однак BOOTICE - це ще одна безкоштовна програма, яка може редагувати налаштування завантаження UEFI: оригінальний китайський сайт , англомовний сайт з описом та скріншотами .
telcoM

Використання sudo efibootmgr -n 0002набагато краще, ніж зміна поточного порядку SO. Він змінюється BootNext: 0001і залишається BootCurrent: 0002наступного разу, залишаючи ваші поточні записи GRUB недоторканими. Просто додайте bash з chmod +xта заверніть цю команду разом із перезавантаженням.
м3нда

3

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

Отже, як я бачу, у вас є два варіанти.

Варіант 1

Що б я порадив вам, це спочатку встановити Windows 10 . Потім встановіть ubuntu. Але я знаю, що це щось табу просто сказати "перевстановити програмне забезпечення", тому я також запропоную альтернативу.

Варіант 2

З вашим поточним налаштуванням я рекомендую вам завантажитися на компакт-диск / флешку Live Ubuntu та встановити та запустити boot-repair. Клацніть на опції "Рекомендований ремонт" та дотримуйтесь наведених інструкцій. Пройдіть уважно його і прочитайте всі команди перед виконанням. Це скасує поточну установку grub з новою, яка, сподіваємось, виправить це.


Танськ для пропозицій, але я вже спробував їх. Перший раз, коли я встановив речі, спершу зайшов Windows 10, потім Ubuntu 17.04, потім Ремонт завантаження. Це все ще було дефолтом для Windows, а потім я стер першу і перевстановив спочатку Ubuntu, що приводить мене туди, де я зараз.
Джон Ватт

Я припускаю, що ви намагалися налагодити порядок завантаження у своєму УЄФІ, правда?
taterbotz

Так, як я кажу: "коли я перебуваю в меню налаштувань у BIOS UEFI, він просто дозволяє мені вибрати" UEFI boot my Internal drive "у виборі пріоритету завантаження - це не дозволяє мені вибрати, який саме завантажувач на цьому розділі, щоб використовувати "
Джон Ватт

2

Я бачу кілька рішень:

  1. Відредагуйте свій UEFI, щоб змінити типовий режим. На Linux можна використовувати efibootmgr. У Windows я не впевнений, але, думаю, ви можете скористатися параметром відновлення, який дозволяє налаштувати UEFI. Або ви хочете встановити щось на зразок rEFInd.
  2. Змініть ім'я папки на розділі EFI. Я думаю, що вона надає перевагу папці з назвою або повертається до неї boot.
  3. Просто використовуйте завантажувач Windows, я думаю, він може бути налаштований на завантаження інших ОС.

Я міг би редагувати порядок завантаження за допомогою efibootmgr, але BIOS ігнорує його і все одно запускає Windows. Зміна імені завантажувальної папки (або навіть копіювання grub в "boot") не працює, поки я не видалю Microsoft. Завантажувач Windows не завантажує ОС Windows, що не належать до Windows (принаймні, не підписані.)
Jon Watte,

@JonWatte Можливо, завантажувач uefi інший, я пам'ятаю завантаження ubuntu з завантажувача Windows 7 на 32-бітній машині біосу. Можливо, це ще може завантажувати grub2? Оскільки efibootmgrце не працює, я знаю, що не буду купувати MSI.
jiggunjer

Так, ця материнська плата MSI також має деякі інші проблеми і повертається до Amazon в обмін на гігабайт.
Джон Ватт

1

У мене просто було замінено дошку моєї матері на ноутбуці, і гріб повністю зник.

Я знаю, що це позначено як фіксований, але я думав, що це може бути корисним для вас.

Щоб застава з'явилася як варіант завантаження. Мені потрібно було додати ІФІ до біографії.

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

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

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


1

Жоден із перерахованих вище варіантів не працював для мене зі старим ноутбуком HP 655. Я знайшов рішення - встановити менеджер завантаження Windows неактивним:

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

Замініть 4 своєю кількістю менеджера завантаження Windows. Запустіть efibootmgr ще раз, і вам слід побачити зникнення зірки, щоб відзначити неактивність.

Після мого комп'ютера завантажуються завантажувальне меню і вікна можна все ще вибрати з цього.


-2

Можливим рішенням буде редагування файлу / etc / default / grub вручну.

sudo vim /etc/default/grub

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

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

Іншим варіантом буде встановлення grub-customizer та використання його GUI для налаштування пріоритету завантаження.


Проблема не в Grub. Як я вже говорив у дописі, якщо я можу змусити BIOS вибрати варіант завантаження Grub UEFI, то я отримую меню завантаження Grub, яке дозволяє мені вибрати Windows або Ubuntu. Це меню, яке я хочу за замовчуванням. На жаль, BIOS вибирає диспетчер завантаження Windows за замовчуванням.
Джон Ватт

Як я вже говорив, ви можете виправити це в порядку завантаження grub, налаштувавши Ubuntu як першу запуск системи. Використовуйте налаштування grub для цього, використовуючи графічний інтерфейс. linuxandubuntu.com/home/…
Містер Малина

Знову ж таки, Grub навіть не розпочав роботу з BIOS. Порядок завантаження Grub не має значення. GRUB_DEFAULT не має значення. Тут не проблема.
Джон Ватт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.