联想 Thinkpad T450s:“错误:非易失性系统 UEFI 变量存储几乎已满。”

联想 Thinkpad T450s:“错误:非易失性系统 UEFI 变量存储几乎已满。”

我的一位客户使用联想 Thinkpad T450s 已有一年左右了。该机器目前运行的是 Debian jessie,内核来自 jessie-backports 4.5+73~bpo8+1。最新的 UEFI 版本已刷新/安装。操作系统以“UEFI 模式”安装,带有一个额外的EFI分区等。直到四周前,这个设置都坚如磐石、稳定:联想 Thinkpad 和 Debian,还有什么可能出错呢?

四周以来,每次启动时,机器都会显示我输入的错误。以下是此错误的图片:

错误:非易失性系统 UEFI 变量存储几乎已满。

Esc将继续启动过程,该过程“运行良好”……持续了两周。然后消息从

按 Esc 继续或按 F1 进入设置。

清理 是 或 否

(遗憾的是,我没有这方面的图像)。

我的客户端点击了“是”,这删除了存储,就我目前所见,这导致机器无法启动。之后,我恢复了“debian”启动项,机器又恢复正常,启动正常,等等。这种情况持续了几天;大约一周后,每次启动时都会再次弹出该消息。

我曾经在四天之内四次尝试联系联想支持,但每次在电话排队中花费了约 30 分钟后就放弃了。

这几天我用尽了我所有的$(your-favorite-search-engine-here)-技能,却几乎一无所获:这是从哪里来的,如何调试,最重要的是,如何修复它。就目前的情况来看,我猜,这台机器很快就会再次无法启动。

非常感谢任何指点!

答案1

Linux 内核 3.8 版开始将 UEFI 变量存储抽象为efivarfs

安装efivarfs

如果mount | grep '^efivarfs'没有返回任何内容,您可以efivarfs使用以下命令进行挂载:

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

现在,您可以浏览/sys/firmware/efi/efivars以查看是否有任何变量突出。

按大小对 UEFI 变量进行排序

efivarfs没有磁盘使用情况的概念,但它确实按大小报告每个变量。此命令按大小对变量进行升序排序:

ls -lh /sys/firmware/efi/efivars | sort -k5 -h

下一步

这是我根据您提供的信息所能为您提供的帮助。接下来,您需要弄清楚是什么占用了 UEFI 变量 NVRAM 中的这么多空间。

Arch Linux 维基建议删除/sys/firmware/efi/efivars/dump-*文件/变量(如果存在),尽管它没有提到是什么创建了这些变量。

作为在聊天中讨论,一种方法是拍摄 UEFI 变量的快照,按照联想固件的建议刷新它们,重新安装 Debian 的 EFI 启动,再次拍摄快照,等待 UEFI 变量再次填满,然后再拍摄一次快照。然后,您将能够比较快照以查看发生了什么变化,并希望确定是什么导致有问题的变量占用了这么多空间。

如果其他一切都失败了,您可以恢复传统启动。

答案2

我在装有 5.13 内核的 Thinkpad T430 上遇到了同样的错误。在我的情况下,原因是过时的、不兼容的acpi_call模块(由TLP通过tpacpi-bat脚本),导致内核错误,如上所述这里。虽然该漏洞acpi_call已经固定的,大多数发行版仍然有一个过时的版本。

以下是建议的修复方案,以防有人在谷歌搜索解决方案时偶然发现这个线程。

相关内容