fix(init): log to kmsg after /dev is mounted (#218)
This commit is contained in:
parent
f00e05af08
commit
fde2639c97
@ -6,6 +6,7 @@ import "C"
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
@ -17,11 +18,8 @@ import (
|
||||
"github.com/autonomy/talos/src/initramfs/cmd/init/pkg/system"
|
||||
"github.com/autonomy/talos/src/initramfs/cmd/init/pkg/system/services"
|
||||
"github.com/autonomy/talos/src/initramfs/pkg/userdata"
|
||||
)
|
||||
|
||||
const (
|
||||
prefix = "[talos] "
|
||||
flags = 0
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -38,24 +36,32 @@ func recovery() {
|
||||
}
|
||||
|
||||
func init() {
|
||||
out, err := os.OpenFile("/dev/kmsg", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
log.SetOutput(out)
|
||||
log.SetPrefix(prefix)
|
||||
log.SetFlags(flags)
|
||||
|
||||
switchRoot = flag.Bool("switch-root", false, "perform a switch_root")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func kmsg(prefix string) error {
|
||||
out, err := os.OpenFile("/dev/kmsg", os.O_RDWR|unix.O_CLOEXEC|unix.O_NONBLOCK|unix.O_NOCTTY, 0666)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open /dev/kmsg: %v", err)
|
||||
}
|
||||
log.SetOutput(out)
|
||||
log.SetPrefix(prefix + " ")
|
||||
log.SetFlags(0)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func initram() (err error) {
|
||||
// Read the block devices and populate the mount point definitions.
|
||||
log.Println("initializing mount points")
|
||||
if err = mount.Init(constants.NewRoot); err != nil {
|
||||
return
|
||||
}
|
||||
// Setup logging to /dev/kmsg.
|
||||
// NB: We should not attempt to open /dev/kmsg until after /dev is mounted.
|
||||
if err = kmsg("[talos] [initramfs]"); err != nil {
|
||||
return
|
||||
}
|
||||
// Discover the platform.
|
||||
log.Println("discovering the platform")
|
||||
p, err := platform.NewPlatform()
|
||||
@ -93,6 +99,10 @@ func initram() (err error) {
|
||||
}
|
||||
|
||||
func root() (err error) {
|
||||
// Setup logging to /dev/kmsg.
|
||||
if err = kmsg("[talos]"); err != nil {
|
||||
return
|
||||
}
|
||||
// Read the user data.
|
||||
log.Printf("reading the user data: %s\n", constants.UserDataPath)
|
||||
data, err := userdata.Open(constants.UserDataPath)
|
||||
|
@ -12,6 +12,8 @@ import (
|
||||
"github.com/autonomy/talos/src/initramfs/cmd/init/pkg/system/runner"
|
||||
processlogger "github.com/autonomy/talos/src/initramfs/cmd/init/pkg/system/runner/process/log"
|
||||
"github.com/autonomy/talos/src/initramfs/pkg/userdata"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// Process is a runner.Runner that runs a process on the host.
|
||||
@ -53,7 +55,7 @@ func (p *Process) build(data *userdata.UserData, args *runner.Args, opts *runner
|
||||
|
||||
var writer io.Writer
|
||||
if data.Debug {
|
||||
out, err := os.OpenFile("/dev/kmsg", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
||||
out, err := os.OpenFile("/dev/kmsg", os.O_RDWR|unix.O_CLOEXEC|unix.O_NONBLOCK|unix.O_NOCTTY, 0666)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user