mirror of
https://github.com/rancher/os.git
synced 2025-07-31 22:47:16 +00:00
try mount state
run bootstrap if failed (and autoformat if we can), then try again
This commit is contained in:
parent
890052273e
commit
ca54b617a0
@ -68,10 +68,6 @@ func stopDocker(c chan interface{}) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func bootstrap(cfg *config.Config) error {
|
func bootstrap(cfg *config.Config) error {
|
||||||
if util.ResolveDevice(cfg.State.Dev) != "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info("Launching Bootstrap Docker")
|
log.Info("Launching Bootstrap Docker")
|
||||||
c, err := startDocker(cfg)
|
c, err := startDocker(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
42
init/init.go
42
init/init.go
@ -249,11 +249,21 @@ func MainInit() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func mountStateTmpfs(cfg *config.Config) error {
|
||||||
|
log.Debugf("State will not be persisted")
|
||||||
|
return util.Mount("none", STATE, "tmpfs", "")
|
||||||
|
}
|
||||||
|
|
||||||
func mountState(cfg *config.Config) error {
|
func mountState(cfg *config.Config) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if cfg.State.Dev != "" {
|
if cfg.State.Dev != "" {
|
||||||
dev := util.ResolveDevice(cfg.State.Dev)
|
dev := util.ResolveDevice(cfg.State.Dev)
|
||||||
|
if dev == "" {
|
||||||
|
msg := fmt.Sprintf("Could not resolve device %q", cfg.State.Dev)
|
||||||
|
log.Infof(msg)
|
||||||
|
return fmt.Errorf(msg)
|
||||||
|
}
|
||||||
log.Infof("Mounting state device %s to %s", dev, STATE)
|
log.Infof("Mounting state device %s to %s", dev, STATE)
|
||||||
|
|
||||||
fsType := cfg.State.FsType
|
fsType := cfg.State.FsType
|
||||||
@ -265,20 +275,31 @@ func mountState(cfg *config.Config) error {
|
|||||||
log.Debugf("FsType has been set to %s", fsType)
|
log.Debugf("FsType has been set to %s", fsType)
|
||||||
err = util.Mount(dev, STATE, fsType, "")
|
err = util.Mount(dev, STATE, fsType, "")
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
return mountStateTmpfs(cfg)
|
||||||
if err != nil && cfg.State.Required {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil || cfg.State.Dev == "" {
|
|
||||||
log.Debugf("State will not be persisted")
|
|
||||||
err = util.Mount("none", STATE, "tmpfs", "")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tryMountAndBootstrap(cfg *config.Config) error {
|
||||||
|
if err := mountState(cfg); err != nil {
|
||||||
|
if err := bootstrap(cfg); err != nil {
|
||||||
|
if cfg.State.Required {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return mountStateTmpfs(cfg)
|
||||||
|
}
|
||||||
|
if err := mountState(cfg); err != nil {
|
||||||
|
if cfg.State.Required {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return mountStateTmpfs(cfg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func createGroups(cfg *config.Config) error {
|
func createGroups(cfg *config.Config) error {
|
||||||
return ioutil.WriteFile("/etc/group", []byte("root:x:0:\n"), 0644)
|
return ioutil.WriteFile("/etc/group", []byte("root:x:0:\n"), 0644)
|
||||||
}
|
}
|
||||||
@ -354,8 +375,7 @@ func RunInit() error {
|
|||||||
loadModules,
|
loadModules,
|
||||||
setResolvConf,
|
setResolvConf,
|
||||||
setupSystemBridge,
|
setupSystemBridge,
|
||||||
bootstrap,
|
tryMountAndBootstrap,
|
||||||
mountState,
|
|
||||||
func(cfg *config.Config) error {
|
func(cfg *config.Config) error {
|
||||||
return cfg.Reload()
|
return cfg.Reload()
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user