mirror of
https://github.com/kairos-io/kairos-sdk.git
synced 2025-09-13 13:50:09 +00:00
sparkles: state api sdk (#262)
* ✨ Add state api This is related to https://github.com/kairos-io/kairos/issues/34. Starts to unify the API to retrieve the state in the sdk to have a common place to query system status information. * 🤖 Add test * Update go.mod * ⚙️ Fine-tune detection of partitions * 🤖 Add more fine-grained tests * 🎨 Add /dev/ to partition name * 🤖 Fixup tests * ⚙️ Remount accessors * ✨ Add state partition to cloud-init paths * 📝 Upper case Kairos in motd * 🎨 Add mounts sdk * 🎨 Set grub options via SDK * 🎨 Make it more idiomatic
This commit is contained in:
committed by
Itxaka
parent
5aeed0ddd2
commit
696e87bbee
47
sdk/system/grub.go
Normal file
47
sdk/system/grub.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/kairos-io/kairos/pkg/machine"
|
||||
"github.com/kairos-io/kairos/pkg/utils"
|
||||
"github.com/kairos-io/kairos/sdk/mounts"
|
||||
"github.com/kairos-io/kairos/sdk/state"
|
||||
)
|
||||
|
||||
func SetGRUBOptions(opts map[string]string) Option {
|
||||
return func(c *Changeset) error {
|
||||
if len(opts) > 0 {
|
||||
c.Add(func() error { return setGRUBOptions(opts) })
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func setGRUBOptions(opts map[string]string) error {
|
||||
runtime, err := state.NewRuntime()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
oem := runtime.OEM
|
||||
if runtime.OEM.Name == "" {
|
||||
oem = runtime.Persistent
|
||||
}
|
||||
|
||||
if err := mounts.PrepareWrite(oem, "/tmp/oem"); err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
machine.Umount("/tmp/oem") //nolint:errcheck
|
||||
}()
|
||||
|
||||
for k, v := range opts {
|
||||
out, err := utils.SH(fmt.Sprintf(`grub2-editenv /tmp/oem/grubenv set "%s=%s"`, k, v))
|
||||
if err != nil {
|
||||
fmt.Printf("could not set boot option: %s\n", out+err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user