From nobody Wed Apr 26 05:33:46 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Q5nbb1Q4fz47GJk; Wed, 26 Apr 2023 05:33:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Q5nbb0wf2z4MDZ; Wed, 26 Apr 2023 05:33:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682487227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9TjZNSiWfUbaxPqvDnOS/vUu8Vj1L0JUinPtg0uiOmk=; b=etPX8wxsOJWbLe2V/Df0Qcph4Bjeu2QI1BOYkg1jhwghUtGdQsqEcRj29DCC1XzggeBDGj xfST2RQ//43+zX90XyvzVrR0CV8Y9hVIFCh3Kzy6LmVewIYNMd1cjWaBb/HuxTZBpwUpCT d1jaZnY3gxLvHQ03rjmYFXctO/fLiXweCbKLnNv2QJ1VpVe+yarR0V5/1at2FS6MDNaiCj t0xYPncRBw5tHmmvNhNmcisk+PUCCz2iSAMe97ujw0LDj+UYkO3hY3NMuTGc9AYaQtDaFr cwk3t21Vq72x7cvOiRmAUnRoLkFQScFpgGdt3H6vSobQb4MM0qBmMKgx7laRbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682487227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9TjZNSiWfUbaxPqvDnOS/vUu8Vj1L0JUinPtg0uiOmk=; b=HGdfENqa2B5lq5+M6gWNPtQrDrugLLIs1heTZWK3qjW7Y62V/uDcSZHsgz9GvjNS69evgp xLc5xzTAg8IPfpZ7dEd4006sY0+nNPHJNIcSIYHBm7esrks2FnBEW/+mH77c4k6jJTpzmI +g3T3bKMkJ5aW1mDPhX7mbo43pi9m++iSHpcmmBop1md3UKGrx7pnpR0DgjB1AiLoc/JGa UUBTh2Hy0VkYmPDBzajL/28ImpXjyQWk/48BP9vj8MGpIJ7K4qP/iI5nARh2nbsdL831no oKwoxBJqTTDgBroyG2Rlix+r6EIzmUZ5asb63YwFNpt0J/jqx6ASsipMvkV7Zw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1682487227; a=rsa-sha256; cv=none; b=wp/XkXO64udwl8oqbIhcuKRyJBMgLG5yTyl8ej9NUsZ5cnqhLnEpMnJJU4hiC/eTJAX59M Ir3A02fDq4urFEB9s/nIt7u2E4wTwPt9TgvI363xIzgE6Ca+CYbyLsw2cPVY7NWtMwUZl9 QT6mIn0Xu+B3PoqzZXCySBzrNrUULn4Yq/iea5mJbK2x8lKF6bb0BmP7W8ukU7EFOkolPj 8gWf95HKNDVmtxgtyM1Fkk7b4aaNUe0i/sYhQNT8c2SpBx84RlhlWfD++XRkMVE9Ta/AMA V2Qn+6nxp+bpDBBJB8OAbe02JFr5Lg9MXHJXgIHXpvgMfFWg2iOKMfdQJNCkyg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Q5nbZ74s7zMwM; Wed, 26 Apr 2023 05:33:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 33Q5XkpS029291; Wed, 26 Apr 2023 05:33:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33Q5Xk7Z029290; Wed, 26 Apr 2023 05:33:46 GMT (envelope-from git) Date: Wed, 26 Apr 2023 05:33:46 GMT Message-Id: <202304260533.33Q5Xk7Z029290@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 4163bae03051 - main - bectl: document the -r flag to bectl List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4163bae03051839c739c0133605b4ef494ee8f6a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4163bae03051839c739c0133605b4ef494ee8f6a commit 4163bae03051839c739c0133605b4ef494ee8f6a Author: Kyle Evans AuthorDate: 2023-04-20 04:55:07 +0000 Commit: Kyle Evans CommitDate: 2023-04-26 05:33:25 +0000 bectl: document the -r flag to bectl Independent of all of the commands, bectl itself takes an `-r` flag that specifies the BE root to use. This was originally added to facilitate testing, but it was later discovered to be incredibly useful in other scenarios; e.g., trying to recover some boot environments in rescue media. The "BE root" described here is the parent dataset that holds boot environments, but I've no idea if that's an accepted definition for that dataset. Reviewed by: gallatin, imp, Pau Amma MFC after: 1 week Differential Review: https://reviews.freebsd.org/D39710 --- sbin/bectl/bectl.8 | 39 +++++++++++++++++++++++++++++++++++---- sbin/bectl/bectl.c | 30 +++++++++++++++--------------- 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); }