diff --git a/cmd/control/install.go b/cmd/control/install.go index 6183947f..15f0eac9 100755 --- a/cmd/control/install.go +++ b/cmd/control/install.go @@ -838,9 +838,21 @@ func upgradeBootloader(device, baseName, bootDir, diskType string) error { return err } backupSyslinuxDir := filepath.Join(baseName, bootDir+"syslinux_backup") - if err := os.RemoveAll(backupSyslinuxDir); err != nil { - log.Errorf("RemoveAll (%s): %s", backupSyslinuxDir, err) - return err + if _, err := os.Stat(backupSyslinuxDir); !os.IsNotExist(err) { + backupSyslinuxLdlinuxSys := filepath.Join(backupSyslinuxDir, "ldlinux.sys") + if _, err := os.Stat(backupSyslinuxLdlinuxSys); !os.IsNotExist(err) { + //need a privileged container that can chattr -i ldlinux.sys + cmd := exec.Command("chattr", "-i", backupSyslinuxLdlinuxSys) + if err := cmd.Run(); err != nil { + log.Errorf("%s", err) + return err + } + } + + if err := os.RemoveAll(backupSyslinuxDir); err != nil { + log.Errorf("RemoveAll (%s): %s", backupSyslinuxDir, err) + return err + } } if err := os.Rename(grubDir, grubBackup); err != nil { diff --git a/cmd/control/os.go b/cmd/control/os.go index d30a7f5b..9edbe127 100644 --- a/cmd/control/os.go +++ b/cmd/control/os.go @@ -201,7 +201,7 @@ func osVersion(c *cli.Context) error { func startUpgradeContainer(image string, stage, force, reboot, kexec bool, upgradeConsole bool, kernelArgs string) error { command := []string{ - "-t", "upgrade", + "-t", "rancher-upgrade", "-r", config.Version, } diff --git a/scripts/installer/BaseDockerfile.amd64 b/scripts/installer/BaseDockerfile.amd64 index 8b8ca204..0f07b544 100644 --- a/scripts/installer/BaseDockerfile.amd64 +++ b/scripts/installer/BaseDockerfile.amd64 @@ -8,7 +8,8 @@ ENV KERNEL_VERSION=${KERNEL_VERSION} # not installed atm udev, grub2, kexe-tools # parted: partprobe, e2fsprogs: mkfs.ext4, syslinux: extlinux&syslinux -RUN apk --no-cache add syslinux parted e2fsprogs util-linux +# e2fsprogs-extra: chattr +RUN apk --no-cache add syslinux parted e2fsprogs e2fsprogs-extra util-linux COPY conf /scripts/ COPY ./build/ros /bin/