出现以下错误。但我认为可用空间足够了(使用率为 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 中的已用/可用空间,所以我只能持怀疑态度。
对此,有多种潜在的解决方案:
清除转储文件
grub 存储 efi 登录
/sys/fs/efi/efivars/dump-*
尝试删除这些文件,看看是否足以减少使用空间。然后运行
apt -f install
以查看错误是否已更改。BIOS 升级
如果您的硬件提供商有 BIOS/EFI 升级,那么我建议您也这样做,然后重试
apt -f install
。最后手段——禁用 EFI 检查
这有点危险,因为从技术上讲,您可能会将 NVRAM 填满到无法启动的程度。不过,我在 Dell R420 上成功使用了此过程。
要覆盖检查,请将“efi_no_storage_paranoia”添加到内核选项。具体操作如下:
- 将“efi_no_storage_paranoia”附加到 GRUB_CMDLINE_LINUX_DEFAULT 和 GRUB_CMDLINE_LINUX 变量中
/etc/default/grub
- 通过运行来更新 grub
sudo update-grub
- 重启
- 跑步
apt -f install
- 将“efi_no_storage_paranoia”附加到 GRUB_CMDLINE_LINUX_DEFAULT 和 GRUB_CMDLINE_LINUX 变量中
为了安全起见,我随后也逆转了这个过程。 您一定不会想把内核安全覆盖参数随意丢弃!
答案2
我能够通过禁用 UEFI 设置中的兼容性支持模块 (CSM) 来修复错误。重新启动后,“grub-efi-amd64-signed”的软件包更新顺利完成。
答案3
好的,我刚刚遇到了同样的错误,并已成功解决,感谢有帮助的回答@tu-Reinstate Monica-dor duh。他的回答解释了错误的确切原因。
但是,我解决这个问题的方法是编辑内置的启动管理器,它也存储在 NVRAM 中。就我而言,我遵循了以下步骤https://superuser.com/a/931016/672706:
sudo efibootmgr -v
列出所有启动选项。sudo efibootmgr -b # -B
删除不需要的选项。
完成这两个步骤后,我已经成功安装grub-efi-amd64-signed
。
答案4
在 BIOS 中,选择Load Defaults
就可以帮我完成。