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

32

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

Generoso
источник
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.

сл-NetBox
источник
+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" устарел и игнорируется.

mprot
источник
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

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

cengique
источник
0

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

Шимон Дудкин
источник