LINUX.ORG.RU

grub отсутствует в списке boot option

 , , ,


0

1

Когда я устанавливал Linux, в списке boot option биоса MSI вместо Windows Boot Manager я поставил grub на первое место, после чего он всегда загружался при включении ПК.

Сегодня заменил материнскую плату (тоже MSI), зашел в boot option, но grub я там не увидел (https://i.imgur.com/rDH9Mab.png). Долго ковырялся в биосе, ничего не помогло.

Решил воспользоваться UEFI Shell. Через него увидел, что grub лежит в FS0:\EFI\grub\grubx64.efi, его можно запустить и все работает. Попробовал вернуть его в список загрузчиков командой bcfg boot add 0 FS0:\EFI\grub\grubx64.efi "grub". Он начинает отображаться в списке, выдаваемом командой bcfg boot dump, но после перезагрузки в списке boot option он не появляется, а если повторно зайти в UEFI Shell и посмотреть список bcfg boot dump, то выяснится, что он отсюда пропал.

Возможно, я что-то делаю не так? Как можно решить данную проблему?


Ответ на: комментарий от firkax

После чего уже установленная на GPT с EFI разделом ОС не будет загружаться вовсе.

Нет, можно попробовать сконвертировать в GPT под BIOS с удалением EFI раздела, созданием BIOS-boot раздела и переустановкой GRUB2 в режим BIOS через chroot, но это та ещё головная боль.

И переустановка — не ответ на все проблемы. Установленную с нуля ОС не так-то просто бывает настроить заново под свои нужды.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Нет, можно попробовать сконвертировать в GPT под BIOS с удалением EFI раздела, созданием BIOS-boot раздела и переустановкой GRUB2 в режим BIOS через chroot, но это та ещё головная боль.

Не думаю что это сложно. Хотя не пробовал, на платах с UEFI первым делом всегда включал нормальный режим загрузки.

firkax ★★★★★
()
Ответ на: комментарий от Anoxemian

Угу, они известны своими кривыми UEFI. У них на куче моделей был баг, что при удалении переменных вместо сброса в дефолт, как пологается по стандарту, кирпичилась матплата.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от null25

Ничем не могу помочь, кривые UEFI, что рассчитаны только на Windows — сейчас норма. Так ты всё правильно делал.

Обычно я не согласен с @firkax , но сейчас он прав — проще включить в UEFI эмуляцию BIOS и работать через legacy.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

проще включить в UEFI эмуляцию BIOS и работать через legacy.

Если бы это было возможно на всех современных материнках… За MSI я и вообще не отвечаю.

Ну у Gigabyte там CSM режим есть ещё пока, но это не Legacy.

Не всё так просто. А в остальном то да, он делал правильно.

Mamluk
()
Ответ на: комментарий от Mamluk

Хотя… вроде через хитрые хаки можно подписать загрузчик Linux подписью от MS и положить туда, откуда UEFI обычно Windows грузит… так тоже можно обойти кривую прошивку.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Можно. Но боюсь для ТС это будет не просто…

Как собственно и для меня, я пробовал. В итоге встала только Fedora. Хотя говорят Ubuntu тоже должна, я не пробовал.

Иначе облом :( Всё затачивается под форточки сейчас, и тех кто заплатил за ключи ихние…

Mamluk
()
Ответ на: комментарий от Mamluk

встала только Fedora. Хотя говорят Ubuntu тоже должна

Для пробования, достаточно скопировать загрузчик на ESP-раздел, даже не надо систему устанавливать. И если работает, то грузи им что хочешь, хоть любую установленную, хоть «живую», и хоть в самой системе нет подписанного или вообще никакого загрузчика.

andytux ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Проблему решил (надеюсь, полностью). Теперь при включении ПК открывается grub, где я могу выбрать Windows либо Linux. Что именно мне пришлось сделать:

  1. Переустановил Windows таким образом, чтобы ее загрузчик установился в EFI раздел, который я создавал при установке Linux;
  2. Загрузившись в Linux, выполнил в терминале sudo grub-mkconfig -o /boot/grub/grub.cfg, чтобы grub нашел новый загрузчик Windows;
  3. На EFI разделе переименовал появившуюся папку Microsoft в MicrosoftWin;
  4. В /boot/grub/grub.cfg также заменил Microsoft на MicrosoftWin;
  5. На EFI разделе создал новую папку Microsoft, в ней - папку Boot. В неё из папки grub скопировал файл grubx64.efi и переименовал его в bootmgfw.efi.

Теперь UEFI думает, что \EFI\Microsoft\Boot\bootmgfw.efi - это Windows Boot Manager и грузит его, а это на самом деле переименованный grubx64.efi, который открывает grub. А уже из него я могу запустить реальный Windows Boot Manager, который теперь лежит в \EFI\MicrosoftWin\Boot\bootmgfw.efi. Чтобы об этом знала и сама Windows и не ничего не ломала при обновлениях, я выполнил в командной строке bcdedit /store X:\EFI\MicrosoftWin\Boot\BCD /set {bootmgr} path \EFI\MicrosoftWin\Boot\bootmgfw.efi, предварительно назначив разделу EFI букву X.

null25
() автор топика