Ich versuche, ein EFI - Shell - Skript zu schreiben, das alle Starteinträge löscht (wie in bcfg dump boot
), ohne vorher zu wissen, wie viele es gibt.
Die Sprache bietet ein Schleifenkonstrukt, das sich an den Shells von Microsoft orientiert:
for var in <set>
...
endfor
... aber ich bin mir nicht sicher, ob es eine vernünftige Möglichkeit gibt, die numerischen Bezeichner der Starteinträge zu ermitteln bcfg dump
in die <set>
.
Antworten:
3 für die Antwort № 1In diesem Moment (UEFI Shell v2.1 und UEFI v2.50) gibt es keine Möglichkeit zum Parsen bcfg
Ausgabe über UEFI-Shell.
Die einzige unterstützte Methode zum Parsen in UEFI-Shell-Skripten ist die Verwendung von parse
Befehl, die erfordern Standard-Format Output
(Es scheint CSV zu sein). Leider können nur 7 Befehle generiert werden SFO
, durch die Nutzung -sfo
als Parameter kennzeichnen. Unterstützte Befehle sind: ls
, map
, memmap
, date
, dh
, devices
, drivers
.
Das Entfernen aller Startoptionen kann durch das Schreiben einer einfachen C-Anwendung erreicht werden, die dies imitiert bcfg Verhalten. Ich habe das geschafft und Beispielcode kann gefunden werden Hier.
Beachten Sie, dass das Entfernen aller Startoptionen in einigen Fällen gefährlich sein und zu einem nicht behebbaren Zustand Ihrer Hardware führen kann. Stellen Sie sicher, dass Sie wissen, was Sie tun.