m/p/efivarfs: add Delete and DeleteBootEntry
This allows us to delete EFI variables in addition to reading and
creating them.
Change-Id: I5fa4e64e5662a11bffdc0830c7af79301173f2aa
Reviewed-on: https://review.monogon.dev/c/monogon/+/2412
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/metropolis/pkg/efivarfs/variables.go b/metropolis/pkg/efivarfs/variables.go
index 3f435bf..fe59324 100644
--- a/metropolis/pkg/efivarfs/variables.go
+++ b/metropolis/pkg/efivarfs/variables.go
@@ -108,6 +108,16 @@
return Write(ScopeGlobal, fmt.Sprintf("Boot%04X", idx), AttrNonVolatile|AttrRuntimeAccess, bem)
}
+// DeleteBootEntry deletes the boot entry at the given index.
+func DeleteBootEntry(idx int) error {
+ err := Delete(ScopeGlobal, fmt.Sprintf("Boot%04X", idx))
+ if errors.Is(err, fs.ErrNotExist) {
+ // Try non-spec-conforming lowercase entry
+ err = Delete(ScopeGlobal, fmt.Sprintf("Boot%04x", idx))
+ }
+ return err
+}
+
// SetBootOrder replaces contents of the boot order variable with the order
// specified in ord.
func SetBootOrder(ord BootOrder) error {