Grub安装失败


13

我的Debian Jessie的安装运行良好,但随后运行了apt-get update && apt-get upgrade && apt-get dist-upgrade

然后重新启动后,它直接进入BIOS。我意识到Grub不见了,所以我运行了一个cd并进入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.

华硕笔记本电脑的问题完全相同。
奥宾

Answers:


33

通过安装以下方面的Boot变量来修复efibootmgr错误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
Nick ODell

1

如果您的磁盘不是/ dev / sda,请尝试指定包含装载程序的磁盘:

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

这个选项适用于我,以前是执行人员sudo apt install efibootmgr,并且创建结束了引导选项,所以我必须删除其他引导选项。

0

我的华硕主板在Ubuntu上也有同样的问题。我没有找到要删除的任何转储文件。或任何可以安全删除的大文件。

我能够通过使用efi_no_storage_paranoia内核命令行选项重新引导系统来解决此问题。我已经丢失了Ubuntu UEFI引导项。幸运的是,我仍然可以通过进入BIOS设置中的引导选项来引导至我的Ubuntu分区。之后,我使用grub菜单中的“ e”键将该选项添加到内核命令行中。然后,我可以通过运行来完成以前失败的系统升级apt -f install

如果系统处于不可引导状态,则一种选择是从Ubuntu USB闪存盘引导并从那里修复问题。

如果问题稍后再次出现,我将考虑在中永久添加该内核选项/etc/default/grub

内核对填充UEFI变量空间非常偏执。它报告即使剩余空间也已满。这是为了防止永久填充某些主板上的空间。我怀疑主板可能太偏执了。除非空间变满,否则BIOS可能不会启动垃圾回收。

以前,我可以通过使用主板上的“ Clear CMOS”接头清除相同的情况。很高兴找到软件解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.