Cómo configurar, cambiar y eliminar valores de variables EFI de forma segura

Cómo configurar, cambiar y eliminar valores de variables EFI de forma segura

Después de pasar horas depurando un problema en el que systemd-bootcomenzaba a omitir su menú de inicio y, en general, ignoraba su archivo de configuración /loader/loader.conf(en la partición EFI), descubrí que puedo invocar el menú de inicio presionando alguna tecla al inicio, y que el El problema es causado por cierta variable EFI que aparentemente creé sin darme cuenta. (No sé cómo sucedió esto, pero el problema apareció poco después de reinstalar Ubuntu 18.04.1 en una partición).

En particular, descubrí que tenía la variable LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fconfigurada de 0alguna manera, lo que anulaba el tiempo de espera definido en /loader/loader.conf, y también tenía la variable LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fdefinida, que anulaba la entrada de menú predeterminada establecida en /loader/loader.conf.

Ver la parte inferior de"Administrador de arranque UEFI systemd-boot"página en freedesktop.org para obtener la lista de variables EFI utilizadas por systemd-boot. Sus valores se pueden inspeccionar con, por ejemplo

cat /sys/firmware/efi/efivars/LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

Después de que hice que apareciera el menú de inicio presionando alguna tecla, y luego presioné ddos veces para configurar y desarmar una nueva entrada predeterminada, esto eliminó mi LoaderEntryDefault-...variable. Sin embargo, todavía estoy atrapado LoaderConfigTimeout-.... Sé que puedo cambiar el tiempo de espera usando las teclas t T( Shift-t) en el menú, lo que lo modifica LoaderConfigTimeout-..., pero quiero eliminarlo por completo, para que la configuración se pueda /loader/loader.confusar nuevamente.

¿Cuál es la forma correcta y segura de modificar y desarmar variables EFI, como LoaderConfigTimeout-...?

Respuesta1

En systemd-boot, presione ShiftTo Num -suficientes veces para que la configuración llegue a cero, y una vez más para desarmarla por completo eliminando la variable.

En Linux, primero utilícelo chattr -ien el archivo /sys/… para eliminar la protección aplicada por el kernel y luego utilícelo rmpara eliminar la variable por completo.

En UEFI Shell, use dmpstore -d <name>(con opcional -guid <guid>) para eliminar una variable (consulte la documentación enEspecificación de carcasa UEFI 2.0, página 113).

información relacionada