无法准备启动变量:设备上没有剩余空间 grub-install:错误:efibootmgr 无法注册启动项:输入/输出错误

无法准备启动变量:设备上没有剩余空间 grub-install:错误:efibootmgr 无法注册启动项:输入/输出错误

出现以下错误。但我认为可用空间足够了(使用率为 9%)您能帮我们解决这个问题吗?

lab@lab:~$ sudo -E apt-get install subversion apache2-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
subversion is already the newest version (1.9.7-4ubuntu1).
apache2-utils is already the newest version (2.4.29-1ubuntu4.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Setting up grub-efi-amd64-signed (1.93.4+2.02-2ubuntu8.3) ...
Installing for x86_64-efi platform.
Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.
dpkg: error processing package grub-efi-amd64-signed (--configure):
installed grub-efi-amd64-signed package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent processing triggers for shim-signed:
shim-signed depends on grub-efi-amd64-signed; however:
  Package grub-efi-amd64-signed is not configured yet.

dpkg: error processing package shim-signed (--configure):
dependency problems - leaving triggers unprocessed
Errors were encountered while processing:
grub-efi-amd64-signed
shim-signed
E: Sub-process /usr/bin/dpkg returned an error code (1)

lab@lab:~$ df -k .
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda2      479152840 37427836 417315612   9% /

答案1

有许多报告称,如果 NVRAM 的使用率超过 50%,efibootmgr 将会失败,因为有人担心能否正确垃圾收集 EFI 变量,或诸如此类的问题。不幸的是,我找不到明确的方法来确定 NVRAM 中的已用/可用空间,所以我只能持怀疑态度。

对此,有多种潜在的解决方案:

  1. 清除转储文件

    grub 存储 efi 登录/sys/fs/efi/efivars/dump-*

    尝试删除这些文件,看看是否足以减少使用空间。然后运行apt -f install以查看错误是否已更改。

  2. BIOS 升级

    如果您的硬件提供商有 BIOS/EFI 升级,那么我建议您也这样做,然后重试apt -f install

  3. 最后手段——禁用 EFI 检查

    这有点危险,因为从技术上讲,您可能会将 NVRAM 填满到无法启动的程度。不过,我在 Dell R420 上成功使用了此过程。

    要覆盖检查,请将“efi_no_storage_paranoia”添加到内核选项。具体操作如下:

    1. 将“efi_no_storage_paranoia”附加到 GRUB_CMDLINE_LINUX_DEFAULT 和 GRUB_CMDLINE_LINUX 变量中/etc/default/grub
    2. 通过运行来更新 grubsudo update-grub
    3. 重启
    4. 跑步apt -f install

为了安全起见,我随后也逆转了这个过程。 您一定不会想把内核安全覆盖参数随意丢弃!

答案2

我能够通过禁用 UEFI 设置中的兼容性支持模块 (CSM) 来修复错误。重新启动后,“grub-efi-amd64-signed”的软件包更新顺利完成。

答案3

好的,我刚刚遇到了同样的错误,并已成功解决,感谢有帮助的回答@tu-Reinstate Monica-dor duh。他的回答解释了错误的确切原因。

但是,我解决这个问题的方法是编辑内置的启动管理器,它也存储在 NVRAM 中。就我而言,我遵循了以下步骤https://superuser.com/a/931016/672706

  1. sudo efibootmgr -v列出所有启动选项。
  2. sudo efibootmgr -b # -B删除不需要的选项。

完成这两个步骤后,我已经成功安装grub-efi-amd64-signed

答案4

在 BIOS 中,选择Load Defaults就可以帮我完成。

相关内容