Как я могу переустановить GRUB в раздел EFI?


32

Я хочу переустановить GRUB 2, и я нашел следующие инструкции: Как восстановить, восстановить или переустановить Grub 2 с Ubuntu Live CD или USB . В моем случае, загрузчик установлен в разделе EFI. Если я использую команды, приведенные в этом руководстве, GRUB будет переустановлен в раздел EFI автоматически или он будет установлен в корневой раздел, где установлена ​​Ubuntu? Очевидно, я не хочу, чтобы это произошло.


3
Инструкции в приведенной ссылке действительны для переустановки GRUB только в устаревшем режиме BIOS, в вашем случае это не будет работать. Чтобы переустановить GRUB для установки Ubuntu в режиме EFI BIOS, прочитайте мой ответ. :)
cl-netbox

Большое спасибо! :) У меня есть несколько вопросов: когда я установил Ubuntu в своей системе UEFI, я нашел две записи в BIOS. Есть ли способ создать уникальную запись в Ubuntu? В случае таблицы разделов MBR (поэтому нет EFI или любого другого загрузочного раздела), могу ли я использовать те же команды, кроме: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso

Вы можете попытаться удалить вторую запись Ubuntu с помощью: sudo efibootmgr (перечисляет все записи) | sudo efi bootmgr -b <entry-number> -B .... и для переустановки GRUB в устаревшем режиме BIOS выполните следующие команды: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = диск | ** = системный раздел)! :)
cl-netbox

Отлично :) В любом случае, имея систему UEFI и, следовательно, раздел EFI, есть ли способ избежать переопределения grub при выполнении новой установки Windows?
Generoso

Что ж, Microsoft не заботится ни о чем другом, кроме своих собственных продуктов, поэтому вы можете устанавливать системы Linux, не нанося никакого вреда Windows - к сожалению, это не так, наоборот - когда вы устанавливаете Windows после установки Ubuntu, вы должны восстановить загрузчик GRUB впоследствии. :)
cl-netbox

Ответы:


54

Переустановите загрузчик GRUB в вашу установку Ubuntu в режиме EFI следующим образом ...

Загрузитесь с установочного носителя Ubuntu и выберите «Попробуйте Ubuntu без установки».
(Загрузите установочный носитель в режиме EFI, выберите запись Ubuntu с UEFI впереди.)

На рабочем столе Live откройте терминал и выполните следующие команды:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

Примечание: sdX= диск | sdXX= EFI раздел | sdXXX= системный раздел

Для идентификации разделов используйте GParted, инструмент входит в установочный носитель.
После выполнения команд GRUB будет установлен в отдельный раздел EFI.


+1 но почему не установить из самой Ubuntu?

1
@MarkYisri: Большое спасибо! :) Потому что это самый безопасный способ переустановить загрузчик GRUB, не повреждая вещи, и в случае, если система не загружается должным образом ... единственный способ сделать это! :)
cl-netbox

1
В этом решении откуда grub-install узнает, что он должен быть установлен в режиме EFI?
user334639

3
Важным моментом является загрузка установочного носителя в правильном режиме загрузки. Если мы хотим переустановить, grub-efiнам нужно загружаться в UEFI-режиме, если мы хотим переустановить, grub-pcмы должны загружаться в устаревшем режиме.
mook765

1
Это работало для меня, за исключением одного изменения: я сделал grub-install /dev/sdXX, то есть не диск, а раздел EFI использовался для установки grub, и он работал.
Утка Доджерс

3

это единственный способ, который работал для меня: (Система: sdb8, boot: sdb6, efi: sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Что делает --recheck? В инструкции написано delete device map if it already exists?
MrCalvin

Если я называю загрузочную запись чем-то другим по умолчанию, например, --bootloader-id=Ubuntu_02загрузка завершается неудачно. Он просто загружается в консоль grub ... какое-либо решение?
MrCalvin

да. кажется grub-install --recheckнужно. Это исправило мой нерабочий USB HDD EFI.
SolsTiCe

2

Спасибо @ cl-netbox за инструкции!

После того, как я обновил (Linux Mint 18.2 Sonya до 18.3 Sylvia), моя система не загружалась, поэтому я следовал приведенным выше инструкциям, но все равно безуспешно. Однако я заметил, что на моей машине / boot находится в отдельном разделе (возможно, потому что я использую LVM), поэтому мой слегка измененный процесс был:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

Примечание: sdX = диск | sdXX = раздел EFI | sdXY = загрузочный раздел | sdXXX = системный раздел


У меня была запущенная система Ubuntu Bionic, на которой я случайно сделал rm -Rf / boot / efi! Моя система все еще работала, поэтому я попытался использовать последние две команды (grub-install / dev / mapper / ubuntu - vg-root AND update-grub). Перезагрузился, и все работает отлично. Phewy и спасибо :)
Роэл Ван де Паар

2

Кроме того, при загрузке с live cd для восстановления может случиться так, что вам не хватает пакета grub-efi-amd64-bin, а затем строка

"grub-install --target=x86_64-efi /dev/sdb" 

завершается с сообщением об ошибке: «grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh не существует. Пожалуйста, укажите --target или --directory.»

В этом случае запустите это вне chroot

sudo apt get grub-efi-amd64-bin

а затем добавьте / usr / lib / grub / x86_64-efi в монтирование chroot.

Кстати, параметр "/ dev / sdb" устарел и игнорируется.


0

в дополнение к ответу ci-netbox.
Если ваша версия pendrive OS не совпадает с версией, установленной на диске, у grub-install могут возникнуть трудности с определением правильной установки grub:

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

Попробуйте вручную определить установку для использования

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

Затем перезапустите grub-install:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

Если вы потеряли раздел EFI, его легко вернуть. Вы можете использовать fdiskили partedдля создания нового раздела GPT с типом «EFI partition (1)» и отформатировать его с помощью:

sudo mkfs.msdos /dev/sdX

затем смонтировать его, и вы можете следовать запустить:

sudo grub-install /dev/sdX

как и в других решениях.


0

поэтому я думаю, что причина проблемы в том, что установка Ubuntu не монтирует раздел efi, если fstab. и обновления grub. на обновлении.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.