Lenovo Thinkpad T450s:“错误:非易失性系统 UEFI 变量存储快满了。”

gf_*_*gf_ 5 boot debian thinkpad uefi

我的一位客户使用联想 Thinkpad T450s 大约一年了。这台机器正在运行 Debian jessie,内核是 jessie-backports,现在4.5+73~bpo8+1。已刷写/安装了最新的 UEFI 版本。操作系统以“UEFI 模式”安装,有一个额外的EFI分区等。直到大约四个星期前,这个设置坚如磐石和稳定:Lenovo Thinkpad 和 Debian,可能出什么问题?

四个星期以来,在每次启动时,机器都会显示我在主题中输入的错误。这是一张图片:

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

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

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

清理是或否

(可悲的是,我没有这个图像)。

我的客户点击了“是”,删除了存储,就我目前看到的所有这些,这使得机器无法启动。之后,我恢复了“debian”启动项,机器再次运行良好,启动正常,等等。这种情况又持续了几天;自 ~ 一周以来,每次启动时都会再次弹出该消息。

我尝试在四天不同的日子里四次联系联想支持,每次在电话队列中花费大约 30 分钟后就放弃了。

最近几天,我使用了我所有的 $(your-favorite-search-engine-here)-skills,但几乎一无所获:这是从哪里来的,如何调试,最重要的是,如何解决这个问题。按照目前的情况,我猜机器很快就会再次无法启动。

任何指针高度赞赏!

Del*_*tik 5

自 3.8 版以来efivarfsLinux 内核将 UEFI 变量存储抽象为.

安装 efivarfs

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

mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Run Code Online (Sandbox Code Playgroud)

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

按大小对 UEFI 变量进行排序

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

ls -lh /sys/firmware/efi/efivars | sort -k5 -h
Run Code Online (Sandbox Code Playgroud)

下一步

这是我使用您提供的信息所能带给您的最大程度。接下来,您需要弄清楚是什么在 UEFI 变量 NVRAM 中占用了如此多的空间。

Arch Linux的维基建议删除/sys/firmware/efi/efivars/dump-*文件/变量,如果存在的话,虽然它并没有提到什么创造这些变量。

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

如果所有其他方法都失败了,您可以返回到传统引导。

  • 如果我没记错的话,`dump-*` 文件包含内核崩溃信息。我对它们了解不多,但我希望只有配置用于调试的内核才能创建它们,因此我建议检查内核编译选项(如果内核是本地编译的)和启动选项,以查看是否可能配置错误不必要地创建这些文件。 (2认同)
  • 谢谢,删除 `dump`* 文件对我有用。 (2认同)