Warn if trying to install over an existing partition, which usually fails

anyway due to libarchive not being able to overwrite schg flags.

PR:		bin/164278
MFC after:	4 days
This commit is contained in:
nwhitehorn 2012-01-18 15:59:23 +00:00
parent 747971918d
commit 3ec7d90475

View File

@ -240,23 +240,41 @@ delete_part_metadata(const char *name)
static int
validate_setup(void)
{
struct partition_metadata *md;
int root_found = FALSE;
struct partition_metadata *md, *root = NULL;
int cancel;
TAILQ_FOREACH(md, &part_metadata, metadata) {
if (md->fstab != NULL && strcmp(md->fstab->fs_file, "/") == 0)
root_found = TRUE;
root = md;
/* XXX: Check for duplicate mountpoints */
}
if (!root_found) {
if (root == NULL) {
dialog_msgbox("Error", "No root partition was found. "
"The root FreeBSD partition must have a mountpoint of '/'.",
0, 0, TRUE);
return (FALSE);
}
/*
* Check for root partitions that we aren't formatting, which is
* usually a mistake
*/
if (root->newfs == NULL) {
dialog_vars.defaultno = TRUE;
cancel = dialog_yesno("Warning", "The chosen root partition "
"has a preexisting filesystem. If it contains an existing "
"FreeBSD system, please update it with freebsd-update "
"instead of installing a new system on it. The partition "
"can also be erased by pressing \"No\" and then deleting "
"and recreating it. Are you sure you want to proceed?",
0, 0);
dialog_vars.defaultno = FALSE;
if (cancel)
return (FALSE);
}
return (TRUE);
}