func main() { flag.Usage = usage flag.Parse() var err error switch flag.NArg() { case 0: var uts syscall.Utsname err = syscall.Uname(&uts) if err == nil { name := "" for _, r := range uts.Domainname { if r == 0 { break } name += string(r) } fmt.Println(name) } case 1: name := []byte(flag.Arg(0)) err = syscall.Setdomainname(name) default: usage() } if err != nil { fmt.Fprintln(os.Stderr, "domainname:", err) os.Exit(1) } }
func (st *initState) runInit() { st.log.Info("Starting oz-init for profile: %s", st.profile.Name) sigs := make(chan os.Signal) signal.Notify(sigs, syscall.SIGTERM, os.Interrupt) s, err := ipc.NewServer(st.sockaddr, messageFactory, st.log, handlePing, st.handleRunProgram, st.handleRunShell, ) if err != nil { st.log.Error("NewServer failed: %v", err) os.Exit(1) } if err := os.Chown(st.sockaddr, int(st.uid), int(st.gid)); err != nil { st.log.Warning("Failed to chown oz-init control socket: %v", err) } if err := st.setupFilesystem(nil); err != nil { st.log.Error("Failed to setup filesytem: %v", err) os.Exit(1) } if st.user != nil && st.user.HomeDir != "" { st.launchEnv = append(st.launchEnv, "HOME="+st.user.HomeDir) } if st.profile.Networking.Nettype != network.TYPE_HOST { err := network.NetSetup(st.network) if err != nil { st.log.Error("Unable to setup networking: %+v", err) os.Exit(1) } } network.NetPrint(st.log) if syscall.Sethostname([]byte(st.profile.Name)) != nil { st.log.Error("Failed to set hostname to (%s)", st.profile.Name) os.Exit(1) } if syscall.Setdomainname([]byte("local")) != nil { st.log.Error("Failed to set domainname") } st.log.Info("Hostname set to (%s.local)", st.profile.Name) if err := st.setupDbus(); err != nil { st.log.Error("Unable to setup dbus: %v", err) os.Exit(1) } oz.ReapChildProcs(st.log, st.handleChildExit) if st.profile.XServer.Enabled { st.xpraReady.Add(1) st.startXpraServer() } st.xpraReady.Wait() st.log.Info("XPRA started") if st.needsDbus() { if err := st.getDbusSession(); err != nil { st.log.Error("Unable to get dbus session information: %v", err) os.Exit(1) } } fsbx := path.Join("/tmp", "oz-sandbox") err = ioutil.WriteFile(fsbx, []byte(st.profile.Name), 0644) // Signal the daemon we are ready os.Stderr.WriteString("OK\n") go st.processSignals(sigs, s) st.ipcServer = s if err := s.Run(); err != nil { st.log.Warning("MsgServer.Run() return err: %v", err) } st.log.Info("oz-init exiting...") }