From e2ad49199ca9fa0f11ebd5e83d1855725b94c787 Mon Sep 17 00:00:00 2001 From: Ceri Davies Date: Mon, 1 Jan 2007 17:25:51 +0000 Subject: During an upgrade, if /boot/kernel.prev exists then the backup of /boot/kernel can fail. Try to remove /boot/kernel.prev and cope the best we can if that fails. PR: bin/106376 Submitted by: Nobuyuki Koganemaru Approved by: ru MFC after: 2 weeks --- usr.sbin/sysinstall/installUpgrade.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'usr.sbin') diff --git a/usr.sbin/sysinstall/installUpgrade.c b/usr.sbin/sysinstall/installUpgrade.c index d70aab7509b7..1d98b1e2d0a7 100644 --- a/usr.sbin/sysinstall/installUpgrade.c +++ b/usr.sbin/sysinstall/installUpgrade.c @@ -300,6 +300,15 @@ installUpgrade(dialogMenuItem *self) (void)vsystem("chflags -R noschg /bin /sbin /lib /libexec /usr/bin /usr/sbin /usr/lib /usr/libexec /var/empty /boot/kernel*"); if (directory_exists("/boot/kernel")) { + if (directory_exists("/boot/kernel.prev")) { + msgNotify("Removing /boot/kernel.prev"); + if (system("rm -fr /boot/kernel.prev")) { + msgConfirm("NOTICE: I'm trying to back up /boot/kernel to\n" + "/boot/kernel.prev, but /boot/kernel.prev exists and I\n" + "can't remove it. This means that the backup will, in\n" + "all probability, fail."); + } + } msgNotify("Moving old kernel to /boot/kernel.prev"); if (system("mv /boot/kernel /boot/kernel.prev")) { if (!msgYesNo("Hmmm! I couldn't move the old kernel over! Do you want to\n" @@ -472,6 +481,15 @@ installUpgradeNonInteractive(dialogMenuItem *self) * crash and reboot. */ if (directory_exists("/boot/kernel")) { + if (directory_exists("/boot/kernel.prev")) { + msgNotify("Removing /boot/kernel.prev"); + if (system("rm -fr /boot/kernel.prev")) { + msgConfirm("NOTICE: I'm trying to back up /boot/kernel to\n" + "/boot/kernel.prev, but /boot/kernel.prev exists and I\n" + "can't remove it. This means that the backup will, in\n" + "all probability, fail."); + } + } msgNotify("Copying old kernel to /boot/kernel.prev"); vsystem("cp -Rp /boot/kernel /boot/kernel.prev"); } -- cgit v1.3