Grub-Installation fehlgeschlagen


13

Ich hatte eine gut laufende Installation von Debian Jessie, aber dann lief ich apt-get update && apt-get upgrade && apt-get dist-upgrade.

Nach dem Neustart wurde das BIOS direkt aufgerufen. Ich habe festgestellt, dass Grub fehlt, also habe ich eine Live-CD ausgeführt und eingegeben Rescue mode, meine Root-Partition + die Boot-Partition gemountet und die folgenden Befehle ausgeführt:

Grub findet das Linux-Image:

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

Und dann 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

Habe ich etwas falsch gemacht? Ist auf meiner /boot/efiPartition zu wenig Platz ?

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

efibootmgr zeigt keine Debian-Installation an:

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

Bearbeiten:

Ich erhalte diesen Fehler jedes Mal, wenn ich versuche, einen Bootloader zu erstellen, indem ich 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.

Genau das gleiche Problem hier mit ASUS Laptop.
Aubin

Antworten:


31

Die efibootmgr-Fehler wurden behoben, indem die Boot-Variablen für Folgendes bereitgestellt wurden efibootmgr:

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

Und dann efibootmgrgab mir Fehler über den Raum:

Could not prepare Boot variable: No space left on device

Behoben, dass durch Löschen von Dump-Dateien:

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

Und dann lief das übliche

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

und es lief erfolgreich!


1
Dies funktionierte für mich, außer dass ich zwischen dem Schritt rm /sys/firmware/efi/efivars/dump-*und dem Ausführen auch einen Neustart durchführen musste grub-install.
Nick ODell

0

Ich hatte das gleiche Problem unter Ubuntu mit meinem Asus-Motherboard. Ich habe keine Dump-Dateien zum Löschen gefunden. Oder irgendetwas Großes, das sich sicher zu löschen anfühlte.

Ich konnte das Problem beheben, indem ich das System mit der efi_no_storage_paranoiaKernel-Befehlszeilenoption neu startete. Ich hatte bereits den Ubuntu UEFI-Starteintrag verloren. Glücklicherweise konnte ich immer noch von meiner Ubuntu-Partition booten, indem ich in den BIOS-Einstellungen zur Boot-Auswahl ging. Danach habe ich die "e" -Taste im Grub-Menü verwendet, um diese Option zur Kernel-Befehlszeile hinzuzufügen. Dann konnte ich mein zuvor fehlgeschlagenes System-Upgrade durch Ausführen beenden apt -f install.

Wenn sich das System im nicht bootfähigen Zustand befindet, besteht eine Möglichkeit darin, vom Ubuntu-USB-Stick zu booten und das Problem von dort aus zu beheben.

Wenn das Problem später erneut auftritt, werde ich erwägen, diese Kerneloption dauerhaft hinzuzufügen /etc/default/grub.

Der Kernel ist sehr paranoid, wenn es darum geht, den variablen UEFI-Raum auszufüllen. Es wird gemeldet, dass es voll ist, auch wenn noch Platz vorhanden ist. Dies soll verhindern, dass der Platz auf einigen Motherboards dauerhaft ausgefüllt wird. Ich vermute, dass dies mit meinem Motherboard zu paranoid sein könnte. Möglicherweise startet das BIOS die Speicherbereinigung erst, wenn der Speicherplatz voller wird.

Zuvor konnte ich mich mithilfe des Headers "CMOS löschen" auf meinem Motherboard von derselben Situation erholen. Gut, eine Softwarelösung zu finden.


0

Versuchen Sie, die Festplatte anzugeben, die den Loader enthält, wenn Ihre Festplatte nicht / dev / sda ist:

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label Ubuntu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.