inits/cmd/dkl-system-init/bootstrap.go
2018-07-06 19:07:37 +11:00

34 lines
801 B
Go

package main
import (
"log"
"os"
"syscall"
)
func bootstrap() {
mount("proc", "/proc", "proc", 0, "")
mount("sys", "/sys", "sysfs", 0, "")
mount("dev", "/dev", "devtmpfs", syscall.MS_NOSUID, "mode=0755,size=10M")
mount("run", "/run", "tmpfs", 0, "")
mount("/run", "/var/run", "", syscall.MS_BIND, "")
mkdir("/run/lock", 0775)
log.Print("/run/lock: correcting owner")
if err := os.Chown("/run/lock", 0, 14); err != nil {
fatal(err)
}
}
func mount(source, target, fstype string, flags uintptr, data string) {
if _, err := os.Stat(target); os.IsNotExist(err) {
mkdir(target, 0755)
}
if err := syscall.Mount(source, target, fstype, flags, data); err != nil {
fatalf("mount %q %q -t %q -o %q failed: %v", source, target, fstype, data, err)
}
log.Printf("mounted %q", target)
}