Wie können Werte von EFI-Variablen sicher eingestellt, geändert und entfernt werden?

834
Alexey

Nach stundenlangem Debuggen eines Problems, bei dem systemd-bootdas Startmenü übersprungen wurde, und im Allgemeinen die Konfigurationsdatei /loader/loader.conf(auf der EFI-Partition) ignoriert wurde, habe ich festgestellt, dass ich das Startmenü aufrufen kann, indem ich beim Start eine Taste drücke und dass Das Problem wird durch bestimmte EFI-Variablen verursacht, die ich anscheinend unbeabsichtigt erstellt habe. (Ich weiß nicht, wie das passiert ist, aber das Problem erschien kurz nachdem ich Ubuntu 18.04.1 auf einer Partition neu installiert hatte.)

Insbesondere habe ich entdeckt, dass die Variable hatte LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fSatz 0irgendwie, die das Timeout in definierten overrode /loader/loader.conf, und ich hatte auch die Variable LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fdefiniert, die den Standardmenü - Eintrag überschrieben wurden eingestellt in /loader/loader.conf.

Auf der Seite "systemd-boot UEFI Boot Manager" auf freedesktop.org finden Sie eine Liste der EFI-Variablen, die von verwendet werden systemd-boot. Ihre Werte können zum Beispiel mit überprüft werden

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

Nachdem ich das Startmenü durch Drücken einer Taste und dzweimaliges Drücken zum Einstellen und Deaktivieren eines neuen Standardeintrags angezeigt habe, wurde meine LoaderEntryDefault-...Variable entfernt. Ich bin jedoch immer noch dabei LoaderConfigTimeout-.... Ich weiß, dass ich das Timeout mithilfe der Tasten t T( Shift-t) im Menü ändern kann, was jedoch geändert wird. LoaderConfigTimeout-...Ich möchte es jedoch ganz entfernen, sodass die Konfiguration /loader/loader.conferneut verwendet wird.

Was ist der richtige und sichere Weg, EFI-Variablen wie zu ändern und zu löschen LoaderConfigTimeout-...?

1
Mögliches Duplikat von [Tools zum Ändern von UEFI-Variablen in Windows / Linux?] (Https://superuser.com/questions/421415/tools-to-modify-uefi-variables-in-windows-linux) harrymc vor 5 Jahren 0
Ähnlich, aber etwas verwirrend und nicht wirklich doppelt, denke ich. Ich frage speziell nach Variablen, die in `/ sys / firmware / efi / efivars` unter Linux sichtbar sind, nicht nach Problemen mit Legacy- / Nicht-Legacy-Modi. Alexey vor 5 Jahren 0

1 Antwort auf die Frage

2
grawity

Drücken Sie im systemd-boot ShiftToder Num -so oft, bis die Einstellung den Wert Null erreicht hat, und ein weiteres Mal, um die Einstellung vollständig aufzuheben.

chattr -iEntfernen Sie unter Linux zunächst die Datei / sys /…, um den vom Kernel angewendeten Schutz zu entfernen, und rmlöschen Sie dann die Variable vollständig.

Löschen Sie in der UEFI-Shell dmpstore -d <name>(mit optionalem -guid <guid>) eine Variable (siehe Dokumentation in UEFI Shell Spec 2.0, Seite 113).

Tatsächlich habe ich gerade selbst entdeckt, dass "Shift-t" die Aufgabe für "LoaderConfigTimeout -..." übernimmt. Über das Entfernen beliebiger EFI-Variablen mit `chattr -i` und` rm`, wie sicher ist das? Woher weiß ich, welche Variablen sicher entfernt werden können? Siehe zum Beispiel die Diskussion zu [Problem # 2402] (https://github.com/systemd/systemd/issues/2402) für `systemd` auf GitHub. Alexey vor 5 Jahren 0
Suchen Sie nach seinem Namen und / oder der Lieferanten-ID. Wenn Sie eine Dokumentation dazu finden, entscheiden Sie, ob dies eine wichtige Funktion ist. Andernfalls wird davon ausgegangen, dass die Firmware sie für möglicherweise kritische Zwecke verwendet. grawity vor 5 Jahren 0