Як я можу перевстановити 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.