So legen Sie Werte von EFI-Variablen sicher fest, ändern und entfernen sie

So legen Sie Werte von EFI-Variablen sicher fest, ändern und entfernen sie

Nachdem ich Stunden damit verbracht hatte, ein Problem zu debuggen, bei dem systemd-bootdas Bootmenü übersprungen und die Konfigurationsdatei /loader/loader.conf(auf der EFI-Partition) im Allgemeinen ignoriert wurde, habe ich festgestellt, dass ich das Bootmenü aufrufen kann, indem ich beim Start eine Taste drücke, und dass das Problem durch bestimmte EFI-Variablen verursacht wird, die ich anscheinend versehentlich erstellt habe. (Ich weiß nicht, wie das passiert ist, aber das Problem trat kurz nach der Neuinstallation von Ubuntu 18.04.1 auf einer Partition auf.)

Insbesondere habe ich festgestellt, dass die Variable irgendwie LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fauf gesetzt war 0, wodurch das in definierte Timeout außer Kraft gesetzt wurde /loader/loader.conf. Außerdem hatte ich die Variable LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fdefiniert, wodurch der in festgelegte Standardmenüeintrag außer Kraft gesetzt wurde /loader/loader.conf.

Siehe unten„systemd-boot UEFI Boot Manager“Seite auf freedesktop.org für die Liste der von verwendeten EFI-Variablen systemd-boot. Ihre Werte können beispielsweise mit

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

Nachdem ich das Bootmenü durch Drücken einer Taste erscheinen ließ und dann drückted zweimal drückte, um einen neuen Standardeintrag festzulegen und aufzuheben, wurde meine LoaderEntryDefault-...Variable entfernt. Ich hänge jedoch immer noch bei fest . Ich weiß, dass ich das Timeout ändern kann, indem ich im Menü die Tasten ( ) LoaderConfigTimeout-...verwende , wodurch geändert wird , aber ich möchte es ganz entfernen, damit die Konfiguration wieder verwendet werden kann.t TShift-tLoaderConfigTimeout-.../loader/loader.conf

Was ist die richtige und sichere Möglichkeit, EFI-Variablen wie zu ändern und aufzuheben LoaderConfigTimeout-...?

Antwort1

Drücken Sie in systemd-boot ShiftToder Num -so oft, bis die Einstellung Null erreicht, und noch einmal, um sie vollständig aufzuheben und die Variable zu entfernen.

Verwenden Sie unter Linux zuerst chattr -idie Datei /sys/…, um den vom Kernel angewendeten Schutz zu entfernen, und rmlöschen Sie die Variable anschließend vollständig.

In der UEFI-Shell verwenden Sie dmpstore -d <name>(mit optionalem -guid <guid>), um eine Variable zu löschen (siehe Dokumentation inUEFI Shell Spezifikation 2.0, Seite 113).

verwandte Informationen