Lenovo Thinkpad T450s: "Error: el almacenamiento variable UEFI del sistema no volátil está casi lleno".

5

Un cliente mío está usando un Lenovo Thinkpad T450s desde hace un año. La máquina está ejecutando Debian jessie, con un núcleo fuera de jessie-backports, en este momento 4.5+73~bpo8+1. La última versión de UEFI se actualiza / instala. El sistema operativo está instalado en "modo UEFI", con una EFIpartición adicional, etc. Hasta hace ~ cuatro semanas, esta configuración era sólida y estable: Lenovo Thinkpad y Debian, ¿qué podría salir mal?

Desde hace cuatro semanas, en cada arranque, la máquina muestra el error que he puesto en el tema. Aquí hay una imagen de esto:

Error: el almacenamiento variable UEFI del sistema no volátil está casi lleno.

Al presionar Esccontinuará el proceso de arranque, que funcionó "bien" ... durante dos semanas más. El mensaje luego cambió de

Presione Esc para continuar o F1 para ingresar a la configuración.

a

Limpiar SÍ o NO

(lamentablemente, no tengo imagen de esto).

Mi cliente presionó "SÍ", que borró el almacenamiento, hasta donde veo todo esto actualmente, lo que hizo que la máquina no se pueda arrancar. Después, restauré la entrada de arranque "debian", y la máquina volvió a estar feliz, arrancando bien, etc. Esto duró algunos días más; desde ~ una semana, el mensaje vuelve a aparecer en cada arranque.

Traté de contactarme con el soporte de Lenovo cuatro veces en cuatro días diferentes, y me di por vencido después de pasar ~ 30 minutos en la cola del teléfono cada vez.

He usado todas mis habilidades $ (your-favorite-search-engine-here-here) estos últimos días, y no encontré casi nada: de dónde viene esto, cómo depurar y, lo más importante, cómo solucionarlo. Tal como están las cosas actualmente, supongo, la máquina no podrá reiniciarse pronto.

Cualquier puntero muy apreciado!

gf_
fuente
¿Qué tan grande es la partición EFI? ¿Qué porcentaje del sistema de archivos EFI está en uso? Averigüe con:df -hT /boot/efi
Deltik
@Deltik Es ~ 500mb, el uso actualmente es de alrededor del 1%. (También he verificado esto de antemano, perdón por no haberlo incluido en la pregunta. Hasta donde entiendo el mensaje de error, no se trata /boot/EFIde "algo diferente", ¿verdad?) de ninguna manera algo así como un "experto UEFI", por lo que es muy posible que esté completamente equivocado en esto.]
gf_
Ah, eso sería demasiado fácil, ¿no? El siguiente lugar para buscar es aquí: /sys/firmware/efi/efivars/. Estas son probablemente las variables de las que se queja el sistema UEFI.
Deltik
@Deltik Sí ... hubiera sido fácil. :( Acerca de /sys/firmware/efi/vars/: Hay "muchas cosas" adentro. ¿Alguna idea de lo que debo verificar?
gf_
Estoy adivinando aquí, pero esto debería ordenar las variables por tamaño en orden ascendente:ls -lh /sys/firmware/efi/efivars | sort -k5 -h
Deltik

Respuestas:

5

El kernel de Linux desde la versión 3.8 abstrae el almacenamiento variable UEFI comoefivarfs .

Montaje efivarfs

Si mount | grep '^efivarfs'no devuelve nada, puede montar efivarfsusando este comando:

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

Ahora, puede navegar /sys/firmware/efi/efivarspara ver si alguna variable se destaca.

Ordenar las variables UEFI por tamaño

efivarfsno tiene un concepto de uso del disco, pero informa cada variable por tamaño. Este comando ordena las variables por tamaño, ascendiendo:

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

Próximos pasos

Esto es lo más lejos que puedo llevarte usando la información que has proporcionado. A continuación, debe descubrir qué ocupa tanto espacio en la variable NVRAM UEFI.

La wiki de Arch Linux sugiere eliminar /sys/firmware/efi/efivars/dump-*archivos / variables si existen, aunque no menciona qué crea esas variables.

Como se discutió en el chat , un enfoque sería tomar una instantánea de las variables UEFI, eliminarlas según lo propuesto por el firmware de Lenovo, reinstalar el arranque EFI de Debian, tomar una instantánea nuevamente, esperar a que las variables UEFI se llenen nuevamente y tomar una Más instantánea. Luego, podrá comparar las instantáneas para ver qué cambió e, con suerte, identificar qué está causando que la variable o las variables problemáticas ocupen tanto espacio.

Si todo lo demás falla, puede volver al arranque heredado.

Deltik
fuente
Como sugiere la wiki de Arch, dentro /sys/firmware/efi/efivarshabía muchos dump-*archivos. Por ahora, he eliminado estos, lo que hizo feliz al firmware UEFI nuevamente. Publicaré un seguimiento mañana. (Gracias por este puntero Deltik, muy apreciada, no se encontró esto por mi cuenta.)
gf_
2
Si no me equivoco, los dump-*archivos contienen información de bloqueo del kernel. No sé mucho sobre ellos, pero esperaría que solo los núcleos configurados para la depuración los creen, por lo que recomiendo verificar las opciones de compilación del núcleo (si los núcleos están compilados localmente) y las opciones de arranque para ver si algo podría estar mal configurado para crear estos archivos innecesariamente.
Rod Smith
@ RodSmith Gracias. La configuración es bastante básica, nada lujoso: GRUB2, UEFI, Debiannúcleos de vainilla de jessie-backports, no autocompilados. ¿Alguna idea de lo que debería específicamente?
gf_
1
En ese caso, es posible que desee publicar un informe de error con Debian, ya que parece que puede ser la configuración predeterminada de Debian que llena el almacenamiento limitado disponible en NVRAM.
Rod Smith
2
Gracias, eliminar los dumparchivos * funcionó para mí.
Boiethios francés