summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorrandi <randi@FreeBSD.org>2010-07-08 03:28:25 +0000
committerrandi <randi@FreeBSD.org>2010-07-08 03:28:25 +0000
commit5e2426bc109883c6a0e6cb07e0b07b4c7a78cccf (patch)
tree89e826aa281d57d2ab61755d17153cc4f23c469a /usr.sbin
parent1b6dcbe4ec4f5695b968c17a3cf97501be50ef40 (diff)
downloadFreeBSD-src-5e2426bc109883c6a0e6cb07e0b07b4c7a78cccf.zip
FreeBSD-src-5e2426bc109883c6a0e6cb07e0b07b4c7a78cccf.tar.gz
Remove the ability to upgrade via sysinstall. This feature has been flaky
and broken for a number of years. freebsd-update now provides a reasonable way to handle upgrades, so keeping this functionality in sysinstall only serves to mislead users. Approved by: cperciva (mentor)
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/sysinstall/Makefile2
-rw-r--r--usr.sbin/sysinstall/dispatch.c1
-rw-r--r--usr.sbin/sysinstall/install.c20
-rw-r--r--usr.sbin/sysinstall/installUpgrade.c526
-rw-r--r--usr.sbin/sysinstall/menus.c2
-rw-r--r--usr.sbin/sysinstall/sysinstall.85
-rw-r--r--usr.sbin/sysinstall/sysinstall.h1
7 files changed, 6 insertions, 551 deletions
diff --git a/usr.sbin/sysinstall/Makefile b/usr.sbin/sysinstall/Makefile
index 152b524..b8ecff1 100644
--- a/usr.sbin/sysinstall/Makefile
+++ b/usr.sbin/sysinstall/Makefile
@@ -8,7 +8,7 @@ PROG= sysinstall
MAN= sysinstall.8
SRCS= anonFTP.c cdrom.c command.c config.c devices.c dhcp.c \
disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \
- ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \
+ ftp.c globals.c http.c index.c install.c keymap.c \
label.c main.c makedevs.c media.c menus.c misc.c modules.c \
mouse.c msg.c network.c nfs.c options.c package.c \
system.c tcpip.c termcap.c ttys.c ufs.c usb.c user.c \
diff --git a/usr.sbin/sysinstall/dispatch.c b/usr.sbin/sysinstall/dispatch.c
index 0e4a634..fc6c042 100644
--- a/usr.sbin/sysinstall/dispatch.c
+++ b/usr.sbin/sysinstall/dispatch.c
@@ -82,7 +82,6 @@ static struct _word {
{ "installCommit", installCommit },
{ "installExpress", installExpress },
{ "installStandard", installStandard },
- { "installUpgrade", installUpgrade },
{ "installFixupBase", installFixupBase },
{ "installFixitHoloShell", installFixitHoloShell },
{ "installFixitCDROM", installFixitCDROM },
diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c
index 2a6a95b..cf893d9 100644
--- a/usr.sbin/sysinstall/install.c
+++ b/usr.sbin/sysinstall/install.c
@@ -1032,13 +1032,11 @@ installFilesystems(dialogMenuItem *self)
Device **devs;
PartInfo *root;
char dname[80];
- Boolean upgrade = FALSE;
/* If we've already done this, bail out */
if (!variable_cmp(DISK_LABELLED, "written"))
return DITEM_SUCCESS;
- upgrade = !variable_cmp(SYSTEM_STATE, "upgrade");
if (!checkLabels(TRUE))
return DITEM_FAILURE;
@@ -1078,9 +1076,7 @@ installFilesystems(dialogMenuItem *self)
if (strcmp(root->mountpoint, "/"))
msgConfirm("Warning: %s is marked as a root partition but is mounted on %s", RootChunk->name, root->mountpoint);
- if (root->do_newfs && (!upgrade ||
- !msgNoYes("You are upgrading - are you SURE you want to newfs "
- "the root partition?"))) {
+ if (root->do_newfs) {
int i;
dialog_clear_norefresh();
@@ -1093,9 +1089,7 @@ installFilesystems(dialogMenuItem *self)
}
}
else {
- if (!upgrade) {
- msgConfirm("Warning: Using existing root partition.");
- }
+ msgConfirm("Warning: Using existing root partition.");
dialog_clear_norefresh();
msgNotify("Checking integrity of existing %s filesystem.", dname);
i = vsystem("fsck_ffs -y %s", dname);
@@ -1179,9 +1173,7 @@ installFilesystems(dialogMenuItem *self)
sprintf(dname, "%s/dev/%s",
RunningAsInit ? "/mnt" : "", c2->name);
- if (tmp->do_newfs && (!upgrade ||
- !msgNoYes("You are upgrading - are you SURE you"
- " want to newfs /dev/%s?", c2->name)))
+ if (tmp->do_newfs)
performNewfs(tmp, dname, QUEUE_YES);
else
command_shell_add(tmp->mountpoint,
@@ -1214,7 +1206,7 @@ installFilesystems(dialogMenuItem *self)
}
}
else if (c1->type == fat && c1->private_data &&
- (root->do_newfs || upgrade)) {
+ (root->do_newfs)) {
char name[FILENAME_MAX];
sprintf(name, "%s/%s", RunningAsInit ? "/mnt" : "", ((PartInfo *)c1->private_data)->mountpoint);
@@ -1227,9 +1219,7 @@ installFilesystems(dialogMenuItem *self)
sprintf(dname, "%s/dev/%s", RunningAsInit ? "/mnt" : "",
c1->name);
- if (pi->do_newfs && (!upgrade ||
- !msgNoYes("You are upgrading - are you SURE you want to "
- "newfs /dev/%s?", c1->name)))
+ if (pi->do_newfs)
performNewfs(pi, dname, QUEUE_YES);
command_func_add(pi->mountpoint, Mount_msdosfs, c1->name);
diff --git a/usr.sbin/sysinstall/installUpgrade.c b/usr.sbin/sysinstall/installUpgrade.c
deleted file mode 100644
index 82569f6..0000000
--- a/usr.sbin/sysinstall/installUpgrade.c
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- * The new sysinstall program.
- *
- * This is probably the last program in the `sysinstall' line - the next
- * generation being essentially a complete rewrite.
- *
- * $FreeBSD$
- *
- * Copyright (c) 1995
- * Jordan Hubbard. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer,
- * verbatim and that no modifications are made prior to this
- * point in the file.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#include "sysinstall.h"
-#include <sys/disklabel.h>
-#include <sys/errno.h>
-#include <sys/ioctl.h>
-#include <sys/fcntl.h>
-#include <sys/wait.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/mount.h>
-
-static int installUpgradeNonInteractive(dialogMenuItem *self);
-
-typedef struct _hitList {
- enum { JUST_COPY, CALL_HANDLER } action ;
- char *name;
- Boolean optional;
- void (*handler)(struct _hitList *self);
-} HitList;
-
-/* These are the only meaningful files I know about */
-static HitList etc_files [] = {
- { JUST_COPY, "Xaccel.ini", TRUE, NULL },
- { JUST_COPY, "X11", TRUE, NULL },
- { JUST_COPY, "adduser.conf", TRUE, NULL },
- { JUST_COPY, "aliases", TRUE, NULL },
- { JUST_COPY, "aliases.db", TRUE, NULL },
- { JUST_COPY, "amd.map", TRUE, NULL },
- { JUST_COPY, "auth.conf", TRUE, NULL },
- { JUST_COPY, "crontab", TRUE, NULL },
- { JUST_COPY, "csh.cshrc", TRUE, NULL },
- { JUST_COPY, "csh.login", TRUE, NULL },
- { JUST_COPY, "csh.logout", TRUE, NULL },
- { JUST_COPY, "cvsupfile", TRUE, NULL },
- { JUST_COPY, "devfs.conf", TRUE, NULL },
- { JUST_COPY, "dhclient.conf", TRUE, NULL },
- { JUST_COPY, "disktab", TRUE, NULL },
- { JUST_COPY, "dumpdates", TRUE, NULL },
- { JUST_COPY, "exports", TRUE, NULL },
- { JUST_COPY, "fbtab", TRUE, NULL },
- { JUST_COPY, "fstab", FALSE, NULL },
- { JUST_COPY, "ftpusers", TRUE, NULL },
- { JUST_COPY, "gettytab", TRUE, NULL },
- { JUST_COPY, "gnats", TRUE, NULL },
- { JUST_COPY, "group", FALSE, NULL },
- { JUST_COPY, "hosts", TRUE, NULL },
- { JUST_COPY, "hosts.allow", TRUE, NULL },
- { JUST_COPY, "hosts.equiv", TRUE, NULL },
- { JUST_COPY, "hosts.lpd", TRUE, NULL },
- { JUST_COPY, "inetd.conf", TRUE, NULL },
- { JUST_COPY, "localtime", TRUE, NULL },
- { JUST_COPY, "login.access", TRUE, NULL },
- { JUST_COPY, "login.conf", TRUE, NULL },
- { JUST_COPY, "mail", TRUE, NULL },
- { JUST_COPY, "mail.rc", TRUE, NULL },
- { JUST_COPY, "mac.conf", TRUE, NULL },
- { JUST_COPY, "make.conf", TRUE, NULL },
- { JUST_COPY, "manpath.config", TRUE, NULL },
- { JUST_COPY, "master.passwd", FALSE, NULL },
- { JUST_COPY, "mergemaster.rc", TRUE, NULL },
- { JUST_COPY, "motd", TRUE, NULL },
- { JUST_COPY, "namedb", TRUE, NULL },
- { JUST_COPY, "networks", TRUE, NULL },
- { JUST_COPY, "newsyslog.conf", TRUE, NULL },
- { JUST_COPY, "nsmb.conf", TRUE, NULL },
- { JUST_COPY, "nsswitch.conf", TRUE, NULL },
- { JUST_COPY, "ntp.conf", TRUE, NULL },
- { JUST_COPY, "pam.conf", TRUE, NULL },
- { JUST_COPY, "passwd", TRUE, NULL },
- { JUST_COPY, "periodic", TRUE, NULL },
- { JUST_COPY, "pf.conf", TRUE, NULL },
- { JUST_COPY, "portsnap.conf", TRUE, NULL },
- { JUST_COPY, "ppp", TRUE, NULL },
- { JUST_COPY, "printcap", TRUE, NULL },
- { JUST_COPY, "profile", TRUE, NULL },
- { JUST_COPY, "protocols", TRUE, NULL },
- { JUST_COPY, "pwd.db", TRUE, NULL },
- { JUST_COPY, "rc.local", TRUE, NULL },
- { JUST_COPY, "rc.firewall", TRUE, NULL },
- { JUST_COPY, "rc.conf.local", TRUE, NULL },
- { JUST_COPY, "remote", TRUE, NULL },
- { JUST_COPY, "resolv.conf", TRUE, NULL },
- { JUST_COPY, "rmt", TRUE, NULL },
- { JUST_COPY, "sendmail.cf", TRUE, NULL },
- { JUST_COPY, "sendmail.cw", TRUE, NULL },
- { JUST_COPY, "services", TRUE, NULL },
- { JUST_COPY, "shells", TRUE, NULL },
- { JUST_COPY, "skeykeys", TRUE, NULL },
- { JUST_COPY, "snmpd.config", TRUE, NULL },
- { JUST_COPY, "spwd.db", TRUE, NULL },
- { JUST_COPY, "src.conf", TRUE, NULL },
- { JUST_COPY, "ssh", TRUE, NULL },
- { JUST_COPY, "sysctl.conf", TRUE, NULL },
- { JUST_COPY, "syslog.conf", TRUE, NULL },
- { JUST_COPY, "ttys", TRUE, NULL },
- { 0, NULL, FALSE, NULL },
-};
-
-static void
-traverseHitlist(HitList *h)
-{
- system("rm -rf /etc/upgrade");
- Mkdir("/etc/upgrade");
- while (h->name) {
- if (!file_readable(h->name)) {
- if (!h->optional)
- msgConfirm("Unable to find an old /etc/%s file! That is decidedly non-standard and\n"
- "your upgraded system may function a little strangely as a result.", h->name);
- }
- else {
- if (h->action == JUST_COPY) {
- /* Move the just-loaded copy aside */
- vsystem("mv /etc/%s /etc/upgrade/%s", h->name, h->name);
-
- /* Copy the old one into its place */
- msgNotify("Resurrecting %s..", h->name);
- /* Do this with tar so that symlinks and such are preserved */
- if (vsystem("tar cf - %s | tar xpf - -C /etc", h->name))
- msgConfirm("Unable to resurrect your old /etc/%s! Hmmmm.", h->name);
- }
- else /* call handler */
- h->handler(h);
- }
- ++h;
- }
-}
-
-int
-installUpgrade(dialogMenuItem *self)
-{
- char saved_etc[FILENAME_MAX];
- Boolean extractingBin = TRUE;
-
- if (variable_get(VAR_NONINTERACTIVE))
- return installUpgradeNonInteractive(self);
-
- variable_set2(SYSTEM_STATE, "upgrade", 0);
- dialog_clear();
-
- if (msgYesNo("Before beginning a binary upgrade, please review the upgrade instructions,\n"
- "which are located in the \"Install\" document under the main documentation\n"
- "menu. Given that you have read these instructions and understand the risks\n"
- "and precautions involved, are you sure that you want to proceed with\n"
- "this upgrade?") != 0)
- return DITEM_FAILURE;
-
- if (!Dists) {
- msgConfirm("First, you must select some distribution components. The upgrade procedure\n"
- "will only upgrade the distributions you select in the next set of menus.");
- if (!dmenuOpenSimple(&MenuDistributions, FALSE) || !Dists)
- return DITEM_FAILURE;
- }
- else if (!(Dists & DIST_BASE)) { /* No base selected? Not much of an upgrade.. */
- if (msgYesNo("You didn't select the base distribution as one of the distributons to load.\n"
- "This one is pretty vital to a successful upgrade. Are you SURE you don't\n"
- "want to select the base distribution? Chose No to bring up the Distributions\n"
- "menu again.") != 0) {
- if (!dmenuOpenSimple(&MenuDistributions, FALSE))
- return DITEM_FAILURE;
- }
- }
-
- /* Still?! OK! They must know what they're doing.. */
- if (!(Dists & DIST_BASE))
- extractingBin = FALSE;
-
- if (RunningAsInit) {
- Device **devs;
- int i, cnt;
- char *cp;
-
- cp = variable_get(VAR_DISK);
- devs = deviceFind(cp, DEVICE_TYPE_DISK);
- cnt = deviceCount(devs);
- if (!cnt) {
- msgConfirm("No disks found! Please verify that your disk controller is being\n"
- "properly probed at boot time. See the Hardware Guide on the\n"
- "Documentation menu for clues on diagnosing this type of problem.");
- return DITEM_FAILURE | DITEM_RESTORE;
- }
- else {
- /* Enable all the drives before we start */
- for (i = 0; i < cnt; i++)
- devs[i]->enabled = TRUE;
- }
-
- msgConfirm("OK. First, we're going to go to the disk label editor. In this editor\n"
- "you will be expected to Mount any partitions you're interested in\n"
- "upgrading. DO NOT set the Newfs flag to Y on anything in the label editor\n"
- "unless you're absolutely sure you know what you're doing! In this\n"
- "instance, you'll be using the label editor as little more than a fancy\n"
- "screen-oriented partition mounting tool.\n\n"
- "Once you're done in the label editor, press Q to return here for the next\n"
- "step.");
-
- if (DITEM_STATUS(diskLabelEditor(self)) == DITEM_FAILURE) {
- msgConfirm("The disk label editor returned an error status. Upgrade operation\n"
- "aborted.");
- return DITEM_FAILURE | DITEM_RESTORE;
- }
-
- /* Don't write out MBR info */
- variable_set2(DISK_PARTITIONED, "written", 0);
- if (DITEM_STATUS(diskLabelCommit(self)) == DITEM_FAILURE) {
- msgConfirm("Not all file systems were properly mounted. Upgrade operation\n"
- "aborted.");
- variable_unset(DISK_PARTITIONED);
- return DITEM_FAILURE | DITEM_RESTORE;
- }
-
- msgNotify("Updating /stand on root filesystem");
- (void)vsystem("find -x /stand | cpio %s -pdum /mnt", cpioVerbosity());
-
- if (DITEM_STATUS(chroot("/mnt")) == DITEM_FAILURE) {
- msgConfirm("Unable to chroot to /mnt - something is wrong with the\n"
- "root partition or the way it's mounted if this doesn't work.");
- variable_unset(DISK_PARTITIONED);
- return DITEM_FAILURE | DITEM_RESTORE;
- }
- chdir("/");
- installEnvironment();
- systemCreateHoloshell();
- }
-
- saved_etc[0] = '\0';
-
- /* Don't allow sources to be upgraded if we have src already */
- if (directory_exists("/usr/src/") && (Dists & DIST_SRC)) {
- Dists &= ~DIST_SRC;
- SrcDists = 0;
- msgConfirm("Warning: /usr/src exists and sources were selected as upgrade\n"
- "targets. Unfortunately, this is not the way to upgrade your\n"
- "sources - please use CTM or CVSup or some other method which\n"
- "handles ``deletion events'', unlike this particular feature.\n\n"
- "Your existing /usr/src will not be affected by this upgrade.\n");
- }
-
- if (extractingBin) {
- while (!*saved_etc) {
- char *cp = msgGetInput("/var/tmp/etc", "Under which directory do you wish to save your current /etc?");
-
- if (!cp || !*cp || Mkdir(cp)) {
- if (msgYesNo("Directory was not specified, was invalid or user selected Cancel.\n\n"
- "Doing an upgrade without first backing up your /etc directory is a very\n"
- "bad idea! Do you want to go back and specify the save directory again?") != 0)
- break;
- }
- else {
- SAFE_STRCPY(saved_etc, cp);
- }
- }
-
- if (saved_etc[0]) {
- msgNotify("Preserving /etc directory..");
- if (vsystem("tar -cBpf - -C /etc . | tar --unlink -xBpf - -C %s", saved_etc))
- if (msgYesNo("Unable to backup your /etc into %s.\n"
- "Do you want to continue anyway?", saved_etc) != 0)
- return DITEM_FAILURE;
- msgNotify("Preserving /root directory..");
- vsystem("tar -cBpf - -C / root | tar --unlink -xBpf - -C %s", saved_etc);
- }
-
- msgNotify("chflags'ing old binaries - please wait.");
- (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"
- "treat this as a big problem and abort the upgrade? Due to the\n"
- "way that this upgrade process works, you will have to reboot\n"
- "and start over from the beginning. Select Yes to reboot now"))
- systemShutdown(1);
- }
- else
- msgConfirm("NOTICE: Your old kernel is in /boot/kernel.prev should this\n"
- "upgrade fail for any reason and you need to boot your old\n"
- "kernel.");
- }
- }
-
-media:
- /* We do this very late, but we unfortunately need to back up /etc first */
- if (!mediaVerify())
- return DITEM_FAILURE;
-
- if (!DEVICE_INIT(mediaDevice)) {
- if (!msgYesNo("Couldn't initialize the media. Would you like\n"
- "to adjust your media selection and try again?")) {
- mediaDevice = NULL;
- goto media;
- }
- else
- return DITEM_FAILURE | DITEM_REDRAW | DITEM_RESTORE;
- }
-
- msgNotify("Beginning extraction of distributions.");
- if (DITEM_STATUS(distExtractAll(self)) == DITEM_FAILURE) {
- msgConfirm("Hmmmm. We couldn't even extract the base distribution. This upgrade\n"
- "should be considered a failure and started from the beginning, sorry!\n"
- "The system will reboot now.");
- dialog_clear();
- systemShutdown(1);
- }
- else if (Dists) {
- if (!extractingBin || !(Dists & DIST_BASE)) {
- msgNotify("The extraction process seems to have had some problems, but we got most\n"
- "of the essentials. We'll treat this as a warning since it may have been\n"
- "only non-essential distributions which failed to load.");
- }
- else {
- msgConfirm("Hmmmm. We couldn't even extract the base distribution. This upgrade\n"
- "should be considered a failure and started from the beginning, sorry!\n"
- "The system will reboot now.");
- dialog_clear();
- systemShutdown(1);
- }
- }
-
- if (extractingBin)
- vsystem("disklabel -B `awk '$2~/\\/$/ {print substr($1, 6, 5)}' /etc/fstab`");
- msgNotify("First stage of upgrade completed successfully!\n\n"
- "Next comes stage 2, where we attempt to resurrect your /etc\n"
- "directory!");
-
- if (chdir(saved_etc)) {
- msgConfirm("Unable to go to your saved /etc directory in %s?! Argh!\n"
- "Something went seriously wrong! It's quite possible that\n"
- "your former /etc is toast. I hope you didn't have any\n"
- "important customizations you wanted to keep in there.. :(", saved_etc);
- }
- else {
- /* Now try to resurrect the /etc files */
- traverseHitlist(etc_files);
- /* Resurrect the root dotfiles */
- vsystem("tar -cBpf - root | tar -xBpf - -C / && rm -rf root");
- }
-
- msgConfirm("Upgrade completed! All of your old /etc files have been restored.\n"
- "For your reference, the new /etc files are in /etc/upgrade/ in case\n"
- "you wish to upgrade these files by hand (though that should not be\n"
- "strictly necessary). If your root partition is specified in /etc/fstab\n"
- "using the old \"compatibility\" slice, you may also wish to update it to\n"
- "use a fully qualified slice name in order to avoid warnings on startup.\n\n"
- "When you're ready to reboot into the new system, simply exit the installation.");
- return DITEM_SUCCESS | DITEM_REDRAW | DITEM_RESTORE;
-}
-
-static int
-installUpgradeNonInteractive(dialogMenuItem *self)
-{
- char *saved_etc;
- Boolean extractingBin = TRUE;
-
- variable_set2(SYSTEM_STATE, "upgrade", 0);
-
- /* Make sure at least BIN is selected */
- Dists |= DIST_BASE;
-
- if (RunningAsInit) {
- Device **devs;
- int i, cnt;
- char *cp;
-
- cp = variable_get(VAR_DISK);
- devs = deviceFind(cp, DEVICE_TYPE_DISK);
- cnt = deviceCount(devs);
- if (!cnt) {
- msgConfirm("No disks found! Please verify that your disk controller is being\n"
- "properly probed at boot time. See the Hardware Guide on the\n"
- "Documentation menu for clues on diagnosing this type of problem.");
- return DITEM_FAILURE;
- }
- else {
- /* Enable all the drives before we start */
- for (i = 0; i < cnt; i++)
- devs[i]->enabled = TRUE;
- }
-
- msgConfirm("OK. First, we're going to go to the disk label editor. In this editor\n"
- "you will be expected to Mount any partitions you're interested in\n"
- "upgrading. DO NOT set the Newfs flag to Y on anything in the label editor\n"
- "unless you're absolutely sure you know what you're doing! In this\n"
- "instance, you'll be using the label editor as little more than a fancy\n"
- "screen-oriented partition mounting tool.\n\n"
- "Once you're done in the label editor, press Q to return here for the next\n"
- "step.");
-
- if (DITEM_STATUS(diskLabelEditor(self)) == DITEM_FAILURE) {
- msgConfirm("The disk label editor returned an error status. Upgrade operation\n"
- "aborted.");
- return DITEM_FAILURE;
- }
-
- /* Don't write out MBR info */
- variable_set2(DISK_PARTITIONED, "written", 0);
- if (DITEM_STATUS(diskLabelCommit(self)) == DITEM_FAILURE) {
- msgConfirm("Not all file systems were properly mounted. Upgrade operation\n"
- "aborted.");
- variable_unset(DISK_PARTITIONED);
- return DITEM_FAILURE;
- }
-
- if (extractingBin) {
- msgNotify("chflags'ing old binaries - please wait.");
- (void)vsystem("chflags -R noschg /mnt/");
- }
- msgNotify("Updating /stand on root filesystem");
- (void)vsystem("find -x /stand | cpio %s -pdum /mnt", cpioVerbosity());
-
- if (DITEM_STATUS(chroot("/mnt")) == DITEM_FAILURE) {
- msgConfirm("Unable to chroot to /mnt - something is wrong with the\n"
- "root partition or the way it's mounted if this doesn't work.");
- variable_unset(DISK_PARTITIONED);
- return DITEM_FAILURE;
- }
- chdir("/");
- systemCreateHoloshell();
- }
-
- if (!mediaVerify() || !DEVICE_INIT(mediaDevice)) {
- msgNotify("Upgrade: Couldn't initialize media.");
- return DITEM_FAILURE;
- }
-
- saved_etc = "/var/tmp/etc";
- Mkdir(saved_etc);
- msgNotify("Preserving /etc directory..");
- if (vsystem("tar -cpBf - -C /etc . | tar -xpBf - -C %s", saved_etc)) {
- msgNotify("Unable to backup your /etc into %s.", saved_etc);
- return DITEM_FAILURE;
- }
-
- /*
- * Back up the old kernel, leaving it in place in case we
- * 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");
- }
-
- msgNotify("Beginning extraction of distributions.");
- if (DITEM_STATUS(distExtractAll(self)) == DITEM_FAILURE) {
- msgConfirm("Hmmmm. We couldn't even extract the base distribution. This upgrade\n"
- "should be considered a failure and started from the beginning, sorry!\n"
- "The system will reboot now.");
- dialog_clear();
- systemShutdown(1);
- }
- else if (Dists) {
- if (!(Dists & DIST_BASE)) {
- msgNotify("The extraction process seems to have had some problems, but we got most\n"
- "of the essentials. We'll treat this as a warning since it may have been\n"
- "only non-essential distributions which failed to upgrade.");
- }
- else {
- msgConfirm("Hmmmm. We couldn't even extract the base distribution. This upgrade\n"
- "should be considered a failure and started from the beginning, sorry!\n"
- "The system will reboot now.");
- dialog_clear();
- systemShutdown(1);
- }
- }
-
- msgNotify("First stage of upgrade completed successfully.");
- if (vsystem("tar -cpBf - -C %s . | tar --unlink -xpBf - -C /etc", saved_etc)) {
- msgNotify("Unable to resurrect your old /etc!");
- return DITEM_FAILURE;
- }
- return DITEM_SUCCESS | DITEM_REDRAW;
-}
diff --git a/usr.sbin/sysinstall/menus.c b/usr.sbin/sysinstall/menus.c
index 9d184e9..df1d91e 100644
--- a/usr.sbin/sysinstall/menus.c
+++ b/usr.sbin/sysinstall/menus.c
@@ -243,7 +243,6 @@ DMenu MenuIndex = {
#endif /* WITH_SYSCONS */
{ " Time Zone", "Set the system's time zone.", NULL, dmenuSystemCommand, NULL, "tzsetup" },
{ " TTYs", "Configure system ttys.", NULL, configEtcTtys, NULL, "ttys" },
- { " Upgrade", "Upgrade an existing system.", NULL, installUpgrade },
{ " Usage", "Quick start - How to use this menu system.", NULL, dmenuDisplayFile, NULL, "usage" },
{ " User Management", "Add user and group information.", NULL, dmenuSubmenu, NULL, &MenuUsermgmt },
{ NULL } },
@@ -275,7 +274,6 @@ DMenu MenuInitial = {
#endif
{ "Options", "View/Set various installation options", NULL, optionsEditor },
{ "Fixit", "Repair mode with CDROM/DVD/floppy or start shell", NULL, dmenuSubmenu, NULL, &MenuFixit },
- { "Upgrade", "Upgrade an existing system", NULL, installUpgrade },
{ "Load Config..","Load default install configuration", NULL, dispatch_load_menu },
{ "Index", "Glossary of functions", NULL, dmenuSubmenu, NULL, &MenuIndex },
{ NULL } },
diff --git a/usr.sbin/sysinstall/sysinstall.8 b/usr.sbin/sysinstall/sysinstall.8
index b5c714b..019657e 100644
--- a/usr.sbin/sysinstall/sysinstall.8
+++ b/usr.sbin/sysinstall/sysinstall.8
@@ -553,11 +553,6 @@ installation type available.
.Pp
.Sy Variables :
None
-.It installUpgrade
-Start an upgrade installation.
-.Pp
-.Sy Variables :
-None
.It installFixitHoloShell
Start up the "emergency holographic shell" over on VTY4
if running as init.
diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h
index 767bb32..f06a528 100644
--- a/usr.sbin/sysinstall/sysinstall.h
+++ b/usr.sbin/sysinstall/sysinstall.h
@@ -679,7 +679,6 @@ extern int installFixitUSB(dialogMenuItem *self);
extern int installFixitFloppy(dialogMenuItem *self);
extern int installFixupBase(dialogMenuItem *self);
extern int installFixupKernel(dialogMenuItem *self, int dists);
-extern int installUpgrade(dialogMenuItem *self);
extern int installFilesystems(dialogMenuItem *self);
extern int installVarDefaults(dialogMenuItem *self);
extern void installEnvironment(void);
OpenPOWER on IntegriCloud