aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/bsdinstall/bsdinstall.820
-rw-r--r--usr.sbin/bsdinstall/partedit/part_wizard.c7
-rw-r--r--usr.sbin/bsdinstall/partedit/partedit.h1
-rw-r--r--usr.sbin/bsdinstall/partedit/scripted.c10
4 files changed, 27 insertions, 11 deletions
diff --git a/usr.sbin/bsdinstall/bsdinstall.8 b/usr.sbin/bsdinstall/bsdinstall.8
index c58f6636493a..e9f7dd808f73 100644
--- a/usr.sbin/bsdinstall/bsdinstall.8
+++ b/usr.sbin/bsdinstall/bsdinstall.8
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 22, 2021
+.Dd March 26, 2021
.Dt BSDINSTALL 8
.Os
.Sh NAME
@@ -158,7 +158,13 @@ Multiple disk setups are separated by semicolons.
The
.Ar disk
argument specifies the disk on which to operate (which will be erased),
-while the
+or the special value
+.Em DEFAULT ,
+which will result in either a selection window (as in
+.Cm autopart )
+for the destination disk or, if there is only one possible disk, will
+automatically select it.
+The
.Ar scheme
argument specifies the
.Xr gpart 8
@@ -208,6 +214,10 @@ A shorter invocation to use the default partitioning (as
would have used) on the same disk:
.Pp
bsdinstall scriptedpart ada0
+.Pp
+or, even shorter:
+.Pp
+bsdinstall scriptedpart DEFAULT
.It Cm mount
Mounts the file systems previously configured by
.Cm autopart ,
@@ -279,7 +289,9 @@ See
of
the
.Sx TARGETS
-section for format details.
+section for format details. If this variable is unset, the installer will
+use the default partitioning as in
+.Cm autopart .
Default: unset
.It Ev BSDINSTALL_DISTDIR
The directory in which the distribution files can be found (or to which they
@@ -454,7 +466,7 @@ the interpreter for the setup script.
.Pp
A typical bsdinstall script looks like this:
.Bd -literal -offset indent
-PARTITIONS=ada0
+PARTITIONS=DEFAULT
DISTRIBUTIONS="kernel.txz base.txz"
#!/bin/sh
diff --git a/usr.sbin/bsdinstall/partedit/part_wizard.c b/usr.sbin/bsdinstall/partedit/part_wizard.c
index 3160e1f049ea..9f7158a4801e 100644
--- a/usr.sbin/bsdinstall/partedit/part_wizard.c
+++ b/usr.sbin/bsdinstall/partedit/part_wizard.c
@@ -44,7 +44,6 @@
#define MIN_FREE_SPACE (1024*1024*1024) /* 1 GB */
#define SWAP_SIZE(available) MIN(available/20, 4*1024*1024*1024LL)
-static char *boot_disk(struct gmesh *mesh);
static char *wizard_partition(struct gmesh *mesh, const char *disk);
int
@@ -65,7 +64,7 @@ startwizard:
dlg_put_backtitle();
error = geom_gettree(&mesh);
- disk = boot_disk(&mesh);
+ disk = boot_disk_select(&mesh);
if (disk == NULL)
return (1);
@@ -91,8 +90,8 @@ startwizard:
return (0);
}
-static char *
-boot_disk(struct gmesh *mesh)
+char *
+boot_disk_select(struct gmesh *mesh)
{
struct gclass *classp;
struct gconfig *gc;
diff --git a/usr.sbin/bsdinstall/partedit/partedit.h b/usr.sbin/bsdinstall/partedit/partedit.h
index e989decc2359..20d2047c1408 100644
--- a/usr.sbin/bsdinstall/partedit/partedit.h
+++ b/usr.sbin/bsdinstall/partedit/partedit.h
@@ -60,6 +60,7 @@ void delete_part_metadata(const char *name);
int part_wizard(const char *fstype);
int scripted_editor(int argc, const char **argv);
+char *boot_disk_select(struct gmesh *mesh);
int wizard_makeparts(struct gmesh *mesh, const char *disk, const char *fstype,
int interactive);
diff --git a/usr.sbin/bsdinstall/partedit/scripted.c b/usr.sbin/bsdinstall/partedit/scripted.c
index 57dcbca816a3..37ac6de131b5 100644
--- a/usr.sbin/bsdinstall/partedit/scripted.c
+++ b/usr.sbin/bsdinstall/partedit/scripted.c
@@ -183,10 +183,14 @@ int parse_disk_config(char *input)
}
} while (input != NULL && *input != 0);
- if (disk != NULL)
- return (part_config(disk, scheme, partconfig));
+ if (disk == NULL || strcmp(disk, "DEFAULT") == 0) {
+ struct gmesh mesh;
+ geom_gettree(&mesh);
+ disk = boot_disk_select(&mesh);
+ geom_deletetree(&mesh);
+ }
- return (0);
+ return (part_config(disk, scheme, partconfig));
}
int