Lenovo Thinkpad T450s: "Error: The non-volatile system UEFI variable storage is nearly full."
Solution 1:
The Linux kernel since version 3.8 abstracts UEFI variable storage as efivarfs
.
Mounting efivarfs
If mount | grep '^efivarfs'
doesn't return anything, you can mount efivarfs
using this command:
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Now, you can browse /sys/firmware/efi/efivars
to see if any variables stand out.
Sorting UEFI variables by size
efivarfs
doesn't have a concept of disk usage, but it does report each variable by size. This command sorts the variables by size, ascending:
ls -lh /sys/firmware/efi/efivars | sort -k5 -h
Next steps
This is as far as I can take you using the information that you've provided. Next up, you need to figure out what is taking up so much space in the UEFI variable NVRAM.
The Arch Linux wiki suggests deleting /sys/firmware/efi/efivars/dump-*
files/variables if they exist, though it doesn't mention what creates those variables.
As discussed in chat, one approach would be to take a snapshot of the UEFI variables, flush them as proposed by the Lenovo firmware, reinstall Debian's EFI boot, take a snapshot again, wait for the UEFI variables to fill up again, and take one more snapshot. Then, you'll be able to compare the snapshots to see what changed and hopefully identify what is causing the problematic variable or variables to take so much space.
If all else fails, you could go back to legacy booting.
Solution 2:
I've hit the same error on a Thinkpad T430 with kernel 5.13. In my case the reason was an outdated, incompatible version of acpi_call
module (which is called by TLP
through tpacpi-bat
script), causing kernel oops, as explained here. Although the bug in acpi_call
has already been fixed, most distributions still have an outdated version.
Here is a proposed fix, in case someone stumbles upon this thread while googling for a solution.