Read, set, delete, then write back out kernel command line arguments.
package main
import (
"fmt"
kargs "github.com/synackd/go-kargs"
)
funcmain() {
// Parse kernel command line argumentskargsIn:=`nomodeset root=live:https://172.16.0.254/boot-images/compute/base/test console=tty0,115200 console=ttyS0,115200 printk.devkmsg=ratelimit printk.time=1`k:=kargs.NewKargs([]byte(kargsIn))
fmt.Println(k)
// Get all values for an argumentvalConsole, isSetConsole:=k.GetKarg("console")
ifisSetConsole {
fmt.Printf("console: %v\n", valConsole)
} else {
fmt.Println("console not set")
}
// Works even with a single valuevalRoot, isSetRoot:=k.GetKarg("root")
ifisSetRoot {
fmt.Printf("root: %v\n", valRoot)
} else {
fmt.Println("root not set")
}
// Get all arguments for a modulefmt.Println("args for printk "+k.FlagsForModule("printk"))
// Override multiple argsiferr:=k.SetKarg("console", "ttyS1,155200n8"); err!=nil {
fmt.Println("params with new console settings: "+k.String())
}
}Output:
nomodeset root=live:https://172.16.0.254/boot-images/compute/base/test console=tty0,115200 console=ttyS0,115200 printk.devkmsg=ratelimit printk.time=1
console: [tty0,115200 ttyS0,115200]
root: [live:https://172.16.0.254/boot-images/compute/base/test]
args for printk devkmsg=ratelimit time=1
go get github.com/synackd/go-kargs
Import as kargs "github.com/synackd/go-kargs"