Instalacja Grub nie powiodła się

13

Miałem dobrą instalację Debiana Jessie, ale potem uruchomiłem apt-get update && apt-get upgrade && apt-get dist-upgrade.

A potem po ponownym uruchomieniu przyszedł bezpośrednio do BIOS-u. Zdałem sobie sprawę, że Grub brakuje, więc uruchomiłem CD na żywo i wszedłem Rescue mode, zamontowałem partycję root, + partycję rozruchową i uruchomiłem następujące polecenia:

Grub znajduje obraz linuksa:

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

A następnie 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

Czy zrobiłem coś złego? Czy na mojej /boot/efipartycji jest za mało miejsca ?

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

efibootmgr nie pokazuje instalacji Debiana:

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

Edytować :

Ten błąd pojawia się za każdym razem, gdy próbuję utworzyć moduł ładujący za pomocą 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.
Hunter.S. Thompson
źródło
Dokładnie taki sam problem z laptopem ASUS.
Aubin

Odpowiedzi:

33

Naprawiono błędy efibootmgr poprzez zamontowanie zmiennych Boot dla efibootmgr:

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

A potem efibootmgrdał mi błędy dotyczące przestrzeni:

Could not prepare Boot variable: No space left on device

Naprawiono to poprzez usunięcie plików zrzutu:

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

A potem pobiegł jak zwykle

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

i działało pomyślnie!

Hunter.S. Thompson
źródło
1
To działało dla mnie, tyle że musiałem zrestartować się między krokiem rm /sys/firmware/efi/efivars/dump-*a bieganiem grub-install.
Nick ODell,
1

Spróbuj określić dysk zawierający moduł ładujący, jeśli nie jest nim / dev / sda:

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label Ubuntu
panticz.de
źródło
ta opcja działała dla mojego, ekscytuj wcześniej sudo apt install efibootmgri utwórz, aby zakończyć opcję rozruchu, muszę usunąć inne opcje rozruchu.
Diego Mesa
0

Miałem ten sam problem na Ubuntu z moją płytą główną Asus. Nie znalazłem żadnych plików zrzutu do usunięcia. Lub coś dużego, co można bezpiecznie usunąć.

Byłem w stanie rozwiązać ten problem poprzez ponowne uruchomienie systemu z efi_no_storage_paranoiaopcją wiersza poleceń jądra. Zgubiłem już pozycję rozruchową Ubuntu UEFI. Na szczęście nadal mogłem uruchomić system na mojej partycji Ubuntu, wybierając opcję rozruchu w ustawieniach BIOS. Następnie użyłem klawisza „e” w menu Grub, aby dodać tę opcję do wiersza poleceń jądra. Następnie byłem w stanie zakończyć moją poprzednio nieudaną aktualizację systemu, uruchamiając apt -f install.

Jeśli system jest w stanie nie do rozruchu, jedną z opcji jest uruchomienie z pamięci USB Ubuntu i stamtąd naprawić problem.

Jeśli problem pojawi się później, rozważę dodanie tej opcji jądra na stałe /etc/default/grub.

Jądro jest bardzo paranoiczne w kwestii wypełniania przestrzeni zmiennej UEFI. Informuje, że jest pełna, nawet jeśli pozostało wolne miejsce. Jest to celowe, aby zapobiec trwałemu zapełnianiu miejsca na niektórych płytach głównych. Podejrzewam, że z moją płytą główną może to być zbyt paranoiczne. Być może BIOS nie rozpoczyna odśmiecania pamięci, chyba że przestrzeń się zapełni.

Wcześniej byłem w stanie wyjść z tej samej sytuacji, używając nagłówka „Clear CMOS” na mojej płycie głównej. Dobrze jest znaleźć rozwiązanie programowe.

kłapnięcie
źródło