From e871741ec3bba8f4ac3a03038232553711b401d3 Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Fri, 31 Mar 2017 10:41:25 +1000 Subject: [PATCH 1/2] need to use the old -t rancher-upgrade type so we can downgrade to older releases Signed-off-by: Sven Dowideit --- cmd/control/os.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/control/os.go b/cmd/control/os.go index 438a2f53..7086e19e 100644 --- a/cmd/control/os.go +++ b/cmd/control/os.go @@ -196,7 +196,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, } From 62d8aaa58e5c2eee20875bc51fb8a83334059c8f Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Fri, 31 Mar 2017 12:15:15 +0000 Subject: [PATCH 2/2] Need to remove the immutable bit from ldlinux.sys so root can remove it Signed-off-by: Sven Dowideit --- cmd/control/install.go | 18 +++++++++++++++--- scripts/installer/BaseDockerfile.amd64 | 3 ++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cmd/control/install.go b/cmd/control/install.go index 36044a96..c705a944 100755 --- a/cmd/control/install.go +++ b/cmd/control/install.go @@ -841,9 +841,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/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/