Instalasi Grub gagal

13

Saya memiliki instalasi Debian Jessie yang berjalan dengan baik, tetapi kemudian saya berlari apt-get update && apt-get upgrade && apt-get dist-upgrade.

Dan kemudian setelah reboot, langsung ke BIOS. Saya menyadari bahwa Grub tidak ada, jadi saya menjalankan live cd dan masuk Rescue mode, me-mount partisi root saya, + partisi boot dan menjalankan perintah-perintah ini:

Grub menemukan gambar linux:

root@debian:~# update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
Found linux image: /boot/vmlinuz-4.9.0-0.bpo.3-amd64
Found initrd image: /boot/initrd.img-4.9.0-0.bpo.3-amd64
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found Ubuntu 16.10 (16.10) on /dev/sdb2
Adding boot menu entry for EFI firmware configuration
done

Dan kemudian grub-install:

root@debian:~# grub-install /dev/sda
Installing for x86_64-efi platform.
Could not prepare Boot variable: No such file or directory
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

lsblk :

root@debian:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 223.6G  0 disk 
├─sda1   8:1    0  92.6G  0 part /
├─sda2   8:2    0 130.4G  0 part 
└─sda3   8:3    0   573M  0 part /boot/efi

Apakah saya melakukan sesuatu yang salah? Apakah ada terlalu sedikit ruang pada /boot/efipartisi saya ?

root@debian:~# ls -l /boot/efi/EFI/debian/
total 120
-rwx------ 1 root root 121856 Jul 20 20:29 grubx64.efi

efibootmgr tidak menampilkan instalasi Debian:

root@debian:~# efibootmgr --verbose | grep debian

Edit:

Saya terus mendapatkan kesalahan ini setiap kali saya mencoba dan membuat boot loader menggunakan efibootmgr:

grub-install: info: executing efibootmgr -c -d /dev/sda -p 3 -w -L grub -l \EFI\grub\grubx64.efi.
Could not prepare Boot variable: No such file or directory
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.
Pemburu. Thompson
sumber
Masalah yang sama persis di sini dengan laptop ASUS.
Aubin

Jawaban:

33

Memperbaiki kesalahan efibootmgr dengan memasang variabel Boot untuk efibootmgr:

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Dan kemudian efibootmgrmemberi saya kesalahan tentang ruang:

Could not prepare Boot variable: No space left on device

Memperbaiki itu dengan menghapus file dump:

# rm /sys/firmware/efi/efivars/dump-*

Dan kemudian berlari seperti biasa

update-grub 
grub-install -v --target=x86_64-efi --recheck /dev/sda

dan itu berhasil!

Pemburu. Thompson
sumber
1
Ini bekerja untuk saya, kecuali bahwa saya juga harus me-reboot antara langkah rm /sys/firmware/efi/efivars/dump-*dan menjalankan grub-install.
Nick ODell
1

Coba tentukan disk yang berisi loader jika disk Anda bukan / dev / sda:

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label Ubuntu
panticz.de
sumber
opsi ini berfungsi untuk saya, excute before sudo apt install efibootmgr, dan buat untuk mengakhiri opsi boot, saya harus menghapus opsi boot lainnya.
Diego Mesa
0

Saya memiliki masalah yang sama di Ubuntu dengan motherboard Asus saya. Saya tidak menemukan file dump untuk dihapus. Atau sesuatu yang besar yang terasa aman untuk dihapus.

Saya dapat memperbaiki masalah dengan me-reboot sistem dengan efi_no_storage_paranoiaopsi baris perintah kernel. Saya sudah kehilangan entri booting UEFI Ubuntu. Untungnya saya masih bisa boot ke partisi Ubuntu saya dengan masuk ke pilihan boot dalam pengaturan BIOS. Setelah itu saya menggunakan kunci "e" di menu grub untuk menambahkan opsi itu ke baris perintah kernel. Kemudian saya bisa menyelesaikan upgrade sistem saya yang sebelumnya gagal dengan menjalankan apt -f install.

Jika sistem dalam kondisi tidak dapat di-boot, satu opsi adalah mem-boot dari Ubuntu USB stick dan memperbaiki masalah dari sana.

Jika masalah muncul kembali nanti saya akan mempertimbangkan untuk menambahkan opsi kernel secara permanen di /etc/default/grub.

Kernel sangat paranoid tentang mengisi ruang variabel UEFI. Ini melaporkan bahwa itu penuh bahkan jika ada ruang yang tersisa. Ini disengaja untuk mencegah secara permanen mengisi ruang pada beberapa motherboard. Saya menduga bahwa dengan motherboard saya ini mungkin terlalu paranoid. Mungkin BIOS tidak memulai pengumpulan sampah kecuali ruang menjadi lebih penuh.

Sebelumnya saya bisa pulih dari situasi yang sama dengan menggunakan header "Clear CMOS" pada motherboard saya. Bagus untuk menemukan solusi perangkat lunak.

jepret
sumber