Помилка встановлення Grub


13

У мене була добре запущена установка Debian Jessie, але потім я побіг apt-get update && apt-get upgrade && apt-get dist-upgrade.

А потім після перезавантаження перейшов безпосередньо до BIOS. Я зрозумів, що Grub відсутній, тому я запустив живий компакт-диск і ввійшов Rescue mode, встановив свій кореневий розділ, + завантажувальний розділ і запустив ці команди:

Grub знаходить зображення 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

А потім 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

Я щось не так зробив? Чи занадто мало місця на моїй /boot/efiперегородці?

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

efibootmgr не показує установку Debian:

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

Редагувати:

Я постійно отримую цю помилку щоразу, коли я намагаюся створити завантажувач за допомогою 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.

Точно така ж проблема тут і з ноутбуком ASUS.
Aubin

Відповіді:


33

Виправлено помилки efibootmgr, встановивши змінні Boot для efibootmgr:

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

А потім efibootmgrдав мені помилки щодо простору:

Could not prepare Boot variable: No space left on device

Виправлено це шляхом видалення дамп-файлів:

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

А потім бігав звичайним

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

і це успішно пробігло!


1
Це працювало для мене, за винятком того, що мені також довелося перезавантажуватися між кроком rm /sys/firmware/efi/efivars/dump-*і бігом grub-install.
Нік Оделл

1

Спробуйте вказати диск, що містить завантажувач, якщо ваш диск не / dev / sda:

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label Ubuntu

ця опція працювала для мого, виправдатися раніше sudo apt install efibootmgr, і створити, щоб закінчити варіант завантаження, я повинен видалити інші параметри завантаження.
Дієго Меса

0

У мене був той самий випуск на Ubuntu з моєю материнською платою Asus. Я не знайшов жодних дамп-файлів для видалення. Або щось велике, що було б безпечно видалити.

Мені вдалося виправити проблему, перезавантаживши систему за efi_no_storage_paranoiaдопомогою параметра командного рядка ядра. Я вже програв завантажувальний запис Ubuntu UEFI. На щастя, я все ж міг завантажувати свій розділ Ubuntu, перейшовши на завантаження вибору в налаштуваннях BIOS. Після цього я використав клавішу "e" в меню grub, щоб додати цю опцію до командного рядка ядра. Тоді я зміг закінчити попередньо невдале оновлення системи запуском apt -f install.

Якщо система перебуває у не завантажуваному стані, одним із варіантів є завантаження з USB-накопичувача Ubuntu та виправлення проблеми звідти.

Якщо проблема знову з’явиться пізніше, я розглядаю можливість додавання цього параметра ядра назавжди в /etc/default/grub.

Ядро дуже параноїчне щодо заповнення простору змінної UEFI. Він повідомляє, що він повний, навіть якщо залишилося місця. Це навмисно, щоб не допустити постійного заповнення місця на деяких материнських платах. Я підозрюю, що з моєю материнською платою це може бути занадто параноїчним. Можливо, BIOS не починає збирання сміття, якщо простір не заповниться більше.

Раніше мені вдалося відновитись із тієї ж ситуації за допомогою заголовка «Очистити CMOS» на моїй материнській платі. Добре знайти програмне рішення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.