func SysInit() error { cfg, err := config.LoadConfig() if err != nil { return err } _, err = config.ChainCfgFuncs(cfg, loadImages, func(cfg *config.CloudConfig) (*config.CloudConfig, error) { p, err := compose.GetProject(cfg, false) if err != nil { return cfg, err } return cfg, p.Up() }, func(cfg *config.CloudConfig) (*config.CloudConfig, error) { syscall.Sync() return cfg, nil }, func(cfg *config.CloudConfig) (*config.CloudConfig, error) { log.Infof("RancherOS %s started", config.VERSION) return cfg, nil }) return err }
func RunInit() error { os.Setenv("PATH", "/sbin:/usr/sbin:/usr/bin") if isInitrd() { log.Debug("Booting off an in-memory filesystem") // Magic setting to tell Docker to do switch_root and not pivot_root os.Setenv("DOCKER_RAMDISK", "true") } else { log.Debug("Booting off a persistent filesystem") } initFuncs := []config.CfgFunc{ func(c *config.CloudConfig) (*config.CloudConfig, error) { return c, dockerlaunch.PrepareFs(&mountConfig) }, mountOem, func(_ *config.CloudConfig) (*config.CloudConfig, error) { cfg, err := config.LoadConfig() if err != nil { return cfg, err } if cfg.Rancher.Debug { cfgString, err := config.Dump(false, false, true) if err != nil { log.WithFields(log.Fields{"err": err}).Error("Error serializing config") } else { log.Debugf("Config: %s", cfgString) } } return cfg, nil }, loadModules, tryMountAndBootstrap, func(_ *config.CloudConfig) (*config.CloudConfig, error) { return config.LoadConfig() }, loadModules, sysInit, } cfg, err := config.ChainCfgFuncs(nil, initFuncs...) if err != nil { return err } launchConfig, args := getLaunchConfig(cfg, &cfg.Rancher.SystemDocker) launchConfig.Fork = !cfg.Rancher.SystemDocker.Exec log.Info("Launching System Docker") _, err = dockerlaunch.LaunchDocker(launchConfig, config.DOCKER_BIN, args...) if err != nil { return err } return pidOne() }
func bootstrap(cfg *config.CloudConfig) error { log.Info("Launching Bootstrap Docker") c, err := startDocker(cfg) if err != nil { return err } defer stopDocker(c) _, err = config.ChainCfgFuncs(cfg, loadImages, runBootstrapContainers, autoformat) return err }