aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbin/bectl/bectl.839
-rw-r--r--sbin/bectl/bectl.c30
2 files changed, 50 insertions, 19 deletions
diff --git a/sbin/bectl/bectl.8 b/sbin/bectl/bectl.8
index 79bdec751a86..974c6ece9d12 100644
--- a/sbin/bectl/bectl.8
+++ b/sbin/bectl/bectl.8
@@ -17,7 +17,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 31, 2022
+.Dd April 26, 2023
.Dt BECTL 8
.Os
.Sh NAME
@@ -25,54 +25,67 @@
.Nd Utility to manage boot environments on ZFS
.Sh SYNOPSIS
.Nm
+.Op Fl r Ar beroot
.Cm activate
.Op Fl t | Fl T
.Ar beName
.Nm
+.Op Fl r Ar beroot
.Cm check
.Nm
+.Op Fl r Ar beroot
.Cm create
.Op Fl r
.Op Fl e Brq Ar nonActiveBe | Ar beName Ns Cm @ Ns Ar snapshot
.Ar newBeName
.Nm
+.Op Fl r Ar beroot
.Cm create
.Op Fl r
.Ar beName@snapshot
.Nm
+.Op Fl r Ar beroot
.Cm destroy
.Op Fl \&Fo
.Ar beName Ns Op Cm @ Ns Ar snapshot
.Nm
+.Op Fl r Ar beroot
.Cm export
.Ar sourceBe
.Nm
+.Op Fl r Ar beroot
.Cm import
.Ar targetBe
.Nm
+.Op Fl r Ar beroot
.Cm jail
.Op Fl bU
.Oo Bro Fl o Ar key Ns Cm = Ns Ar value | Fl u Ar key Brc Oc Ns ...
.Ar beName
.Op Ar utility Op Ar argument ...
.Nm
+.Op Fl r Ar beroot
.Cm list
.Op Fl aDHs
.Op Fl c Ar property
.Op Fl C Ar property
.Oo Bro Fl c Ar property | Fl C Ar property Brc Oc
.Nm
+.Op Fl r Ar beroot
.Cm mount
.Ar beName
.Op Ar mountpoint
.Nm
+.Op Fl r Ar beroot
.Cm rename
.Ar origBeName
.Ar newBeName
.Nm
+.Op Fl r Ar beroot
.Brq Cm ujail | unjail
.Brq Ar jailId | jailName | beName
.Nm
+.Op Fl r Ar beroot
.Brq Cm umount | unmount
.Op Fl f
.Ar beName
@@ -89,6 +102,23 @@ Boot environments
allow the system to be upgraded, while preserving the old system environment in
a separate ZFS dataset.
.Pp
+.Nm
+itself accepts an
+.Fl r
+flag specified before the command to indicate the
+.Ar beroot
+that should be used as the boot environment root, or the dataset whose children
+are all boot environments.
+Normally this information is derived from the bootfs property of the pool that
+is mounted at
+.Pa / ,
+but it is useful when the system has not been booted into a ZFS root or a
+different pool should be operated on.
+For instance, booting into the recovery media and manually importing a pool from
+one of the system's resident disks will require the
+.Fl r
+flag to work.
+.Pp
The following commands are supported by
.Nm :
.Bl -tag -width activate
@@ -141,11 +171,13 @@ flag is specified, the new environment will be cloned from the given
.Ar nonActiveBe
or
.Ar beName Ns Cm @ Ns Ar snapshot .
-Otherwise, the new environment will be created from the currently booted environment.
+Otherwise, the new environment will be created from the currently booted
+environment.
.Pp
If
.Nm
-is creating from another boot environment, a snapshot of that boot environment will be created to clone from.
+is creating from another boot environment, a snapshot of that boot environment
+will be created to clone from.
.It Xo
.Cm create
.Op Fl r
@@ -276,7 +308,6 @@ is used on next boot once
.Pq Em \&T ;
or combination of
.Pq Em \&NRT .
-.Pp
.Bl -tag -width indent
.It Fl a
Display all datasets.
diff --git a/sbin/bectl/bectl.c b/sbin/bectl/bectl.c
index bc414d6baf41..9e3833ba834e 100644
--- a/sbin/bectl/bectl.c
+++ b/sbin/bectl/bectl.c
@@ -69,23 +69,23 @@ usage(bool explicit)
fprintf(fp, "%s",
"Usage:\tbectl {-h | -? | subcommand [args...]}\n"
#if SOON
- "\tbectl add (path)*\n"
+ "\tbectl [-r beroot] add (path)*\n"
#endif
- "\tbectl activate [-t] beName\n"
- "\tbectl activate [-T]\n"
- "\tbectl check\n"
- "\tbectl create [-r] [-e {nonActiveBe | beName@snapshot}] beName\n"
- "\tbectl create [-r] beName@snapshot\n"
- "\tbectl destroy [-Fo] {beName | beName@snapshot}\n"
- "\tbectl export sourceBe\n"
- "\tbectl import targetBe\n"
- "\tbectl jail [-bU] [{-o key=value | -u key}]... beName\n"
+ "\tbectl [-r beroot] activate [-t] beName\n"
+ "\tbectl [-r beroot] activate [-T]\n"
+ "\tbectl [-r beroot] check\n"
+ "\tbectl [-r beroot] create [-r] [-e {nonActiveBe | beName@snapshot}] beName\n"
+ "\tbectl [-r beroot] create [-r] beName@snapshot\n"
+ "\tbectl [-r beroot] destroy [-Fo] {beName | beName@snapshot}\n"
+ "\tbectl [-r beroot] export sourceBe\n"
+ "\tbectl [-r beroot] import targetBe\n"
+ "\tbectl [-r beroot] jail [-bU] [{-o key=value | -u key}]... beName\n"
"\t [utility [argument ...]]\n"
- "\tbectl list [-aDHs] [{-c property | -C property}]\n"
- "\tbectl mount beName [mountpoint]\n"
- "\tbectl rename origBeName newBeName\n"
- "\tbectl {ujail | unjail} {jailID | jailName | beName}\n"
- "\tbectl {umount | unmount} [-f] beName\n");
+ "\tbectl [-r beroot] list [-aDHs] [{-c property | -C property}]\n"
+ "\tbectl [-r beroot] mount beName [mountpoint]\n"
+ "\tbectl [-r beroot] rename origBeName newBeName\n"
+ "\tbectl [-r beroot] {ujail | unjail} {jailID | jailName | beName}\n"
+ "\tbectl [-r beroot] {umount | unmount} [-f] beName\n");
return (explicit ? 0 : EX_USAGE);
}