Як я можу перевстановити 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, я знайшов два записи в біографії. Чи є спосіб мати єдиний запис 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 * (* = disk | ** = системний розділ)! :)
cl-netbox

Ідеально :) У будь-якому випадку, маючи систему UEFI і такий розділ EFI, чи є спосіб уникнути перекриття grub під час нової інсталяції Windows?
Generoso

Ну, Microsoft не піклується ні про що інше, ніж про власні продукти, тому ви можете встановлювати системи Linux, не завдаючи шкоди Windows - на жаль, це не навпаки - тому коли ви встановлюєте Windows після встановлення Ubuntu, після цього доведеться відновити завантажувач GRUB. :)
cl-netbox

Відповіді:


54

Перевстановіть завантажувач GRUB до своєї установки Ubuntu в режимі EFI таким чином ...

Завантажтесь із інсталяційного середовища Ubuntu та оберіть "Спробуйте Ubuntu без встановлення".
(Завантажте інсталяційний носій у режимі EFI, виберіть запис Ubuntu з UEFI попереду.)

Після роботи на робочому столі відкрийте термінал і виконайте ці команди:

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), моя система не завантажувалася, тому я дотримувався вищезазначених інструкцій, але все ще не мав успіху. Однак я помітив, що моя машина має / завантажується в окремий розділ (можливо, тому, що я використовую 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 і спасибі :)
Roel Van de Paar

2

Крім того, якщо завантажуватися з живого 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.

Параметр BTW "/ dev / sdb" застарілий і ігнорується.


0

на додаток до відповіді ci-netbox.
Якщо версія OS Pendrive не відповідає тій, що встановлена ​​на диску, встановлення grub може мати проблеми з ідентифікацією правильної установки 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-розділ (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.