Bagaimana saya bisa menginstal ulang GRUB ke partisi EFI?

32

Saya ingin menginstal ulang GRUB 2 dan saya menemukan petunjuk ini: Cara Memperbaiki, Mengembalikan, atau Instal Ulang Grub 2 dengan Ubuntu Live CD atau USB . Dalam kasus saya, boot loader diinstal di partisi EFI. Jika saya menggunakan perintah yang disediakan dalam panduan ini, apakah GRUB akan diinstal ulang ke partisi EFI secara otomatis, atau akan diinstal ke partisi root di mana Ubuntu diinstal? Jelas, saya tidak ingin ini terjadi.

Generoso
sumber
3
Petunjuk dalam tautan yang disediakan valid untuk menginstal ulang GRUB dalam mode BIOS lama saja, ini tidak akan berfungsi pada kasus Anda. Untuk menginstal ulang GRUB ke instalasi Ubuntu dalam mode EFI BIOS, baca jawaban saya. :)
cl-netbox
Terima kasih banyak! :) Saya punya beberapa pertanyaan: ketika saya menginstal Ubuntu di sistem UEFI saya, saya menemukan dua entri di bios. Apakah ada cara untuk memiliki entri ubuntu unic? Dalam hal tabel partisi MBR (jadi tidak ada EFI atau partisi boot lainnya), dapatkah saya menggunakan perintah yang sama kecuali untuk: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso
Anda dapat mencoba menghapus entri Ubuntu kedua dengan: sudo efibootmgr (daftar semua entri) | sudo efi bootmgr -b <entry-number> -B .... dan untuk menginstal ulang GRUB dalam mode BIOS lama jalankan perintah ini: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = disk | ** = partisi sistem)! :)
cl-netbox
Sempurna :) Pokoknya, memiliki sistem UEFI dan jadi partisi EFI, apakah ada cara untuk menghindari penggantian grub ketika saya melakukan instalasi Windows baru?
Generoso
Yah, Microsoft tidak mengurus hal lain selain produk mereka sendiri, sehingga Anda dapat menginstal sistem Linux tanpa membahayakan Windows - sayangnya ini bukan sebaliknya - jadi ketika Anda menginstal Windows setelah menginstal Ubuntu, Anda harus mengembalikan boot loader GRUB sesudahnya. :)
cl-netbox

Jawaban:

54

Instal ulang boot loader GRUB ke instalasi Ubuntu Anda dalam mode EFI dengan cara ini ...

Boot dari media instalasi Ubuntu dan pilih 'Coba Ubuntu tanpa menginstal'.
(Boot media instalasi Anda dalam mode EFI, pilih entri Ubuntu dengan UEFI di depan.)

Setelah Anda berada di desktop Live, buka terminal dan jalankan perintah-perintah ini:

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  

Catatan: sdX= diska | sdXX= partisi efi | sdXXX= partisi sistem

Untuk mengidentifikasi partisi menggunakan GParted, alat ini termasuk dalam media instalasi.
Setelah menjalankan perintah GRUB akan dipasang di partisi EFI yang terpisah.

cl-netbox
sumber
+1 tetapi mengapa Anda tidak menginstal dari Ubuntu itu sendiri?
1
@MarkYisri: Terima kasih banyak! :) Karena ini adalah cara paling aman untuk menginstal ulang boot loader GRUB tanpa merusak barang-barang dan seandainya sistem tidak bisa boot dengan benar ... satu-satunya cara untuk melakukannya! :)
cl-netbox
1
Dalam solusi ini, bagaimana 'grub-install' tahu itu seharusnya dipasang dalam mode EFI?
user334639
3
Poin penting adalah untuk mem-boot media instalasi dalam mode boot yang benar, jika kita ingin menginstal ulang grub-efikita harus mem-boot dalam mode UEFI, jika kita ingin menginstal ulang grub-pckita harus boot dalam mode legacy.
mook765
1
Ini bekerja untuk saya kecuali dengan satu perubahan: saya lakukan grub-install /dev/sdXX, yaitu bukan disk tetapi partisi EFI digunakan untuk menginstal grub dan itu berhasil.
Duck Dodgers
3

ini adalah satu-satunya cara yang bekerja untuk saya: (Sistem: 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
Chilu Pereira
sumber
Apa yang --recheckharus dilakukan Manual mengatakan delete device map if it already exists?
MrCalvin
Jika saya memanggil entri boot apa pun yang berbeda dengan default, misal --bootloader-id=Ubuntu_02boot gagal. Itu hanya boot di konsol grub ... ada solusi?
MrCalvin
iya nih. sepertinya grub-install --recheckdibutuhkan. Ini memperbaiki EFI USB HDD saya yang tidak berfungsi.
solsTiCe
2

Terima kasih kepada @ cl-netbox untuk instruksinya!

Setelah saya memutakhirkan (Linux Mint 18.2 Sonya ke 18.3 Sylvia) sistem saya tidak bisa boot jadi saya mengikuti instruksi di atas tetapi masih tidak berhasil. Namun saya perhatikan bahwa mesin saya memiliki / boot di partisi yang terpisah (mungkin karena saya menggunakan LVM) sehingga proses saya sedikit dimodifikasi adalah:

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 

Catatan: sdX = disk | sdXX = partisi efi | sdXY = partisi boot | sdXXX = partisi sistem

Rob Pearman
sumber
Saya memiliki sistem Bionik Ubuntu yang sedang saya gunakan tanpa sengaja rm -Rf / boot / efi! Sistem saya masih berjalan, jadi saya mencoba menggunakan dua perintah terakhir (grub-install / dev / mapper / ubuntu - vg-root AND update-grub). Reboot, dan semuanya bekerja dengan sempurna. Phewy dan terima kasih :)
Roel Van de Paar
2

Juga, jika booting dari live cd untuk memulihkannya mungkin terjadi bahwa Anda kehilangan paket grub-efi-amd64-bin dan kemudian line

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

gagal dengan pesan kesalahan: "grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh tidak ada. Silakan tentukan --target atau --directory."

Dalam hal ini jalankan ini di luar chroot

sudo apt get grub-efi-amd64-bin

dan kemudian tambahkan / usr / lib / grub / x86_64-efi ke chroot mounts.

Btw "/ dev / sdb" param sudah usang dan sedang diabaikan.

mprot
sumber
0

selain jawaban ci-netbox.
Jika versi OS pendrive Anda tidak cocok dengan yang diinstal pada disk, grub-install mungkin mengalami kesulitan untuk mengidentifikasi instalasi grub yang tepat:

$ 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.

Cobalah untuk mengidentifikasi secara manual instalasi yang akan digunakan

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

Kemudian restart grub-install:

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

Jika Anda kehilangan partisi EFI, mudah untuk mendapatkannya kembali. Anda dapat menggunakan fdiskatau parteduntuk membuat partisi GPT baru dengan jenis "partisi EFI (1)" dan memformatnya dengan:

sudo mkfs.msdos /dev/sdX

kemudian pasang dan Anda dapat mengikuti run:

sudo grub-install /dev/sdX

seperti pada solusi lain.

cengique
sumber
0

jadi dugaan saya adalah alasan masalahnya adalah instalasi Ubuntu tidak me-mount partisi efi jika fstab. dan pembaruan grub. sedang diperbarui.

Shimon Doodkin
sumber