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); }