15952343eSKyle Evans.\" 2b179da01SKyle Evans.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3b179da01SKyle Evans.\" 4b179da01SKyle Evans.\" Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> 5b179da01SKyle Evans.\" All rights reserved. 65952343eSKyle Evans.\" 75952343eSKyle Evans.\" Redistribution and use in source and binary forms, with or without 85952343eSKyle Evans.\" modification, are permitted provided that the following conditions 95952343eSKyle Evans.\" are met: 105952343eSKyle Evans.\" 1. Redistributions of source code must retain the above copyright 115952343eSKyle Evans.\" notice, this list of conditions and the following disclaimer. 125952343eSKyle Evans.\" 2. Redistributions in binary form must reproduce the above copyright 135952343eSKyle Evans.\" notice, this list of conditions and the following disclaimer in the 145952343eSKyle Evans.\" documentation and/or other materials provided with the distribution. 155952343eSKyle Evans.\" 165952343eSKyle Evans.\" 175952343eSKyle Evans.\" @(#)be.1 18b6e7c421SKyle Evans.\" 195952343eSKyle Evans.\" $FreeBSD$ 205952343eSKyle Evans.\" 21*490e13c1SKyle Evans.Dd September 11, 2019 22edbfe3bcSKyle Evans.Dt BECTL 8 2384e61219SKyle Evans.Os 245952343eSKyle Evans.Sh NAME 25edbfe3bcSKyle Evans.Nm bectl 2677688bffSMateusz Piotrowski.Nd Utility to manage boot environments on ZFS 275952343eSKyle Evans.Sh SYNOPSIS 285952343eSKyle Evans.Nm 29d81df689SKyle Evans.Cm activate 305952343eSKyle Evans.Op Fl t 31d81df689SKyle Evans.Ar beName 325952343eSKyle Evans.Nm 33*490e13c1SKyle Evans.Cm check 34*490e13c1SKyle Evans.Nm 35d81df689SKyle Evans.Cm create 365952343eSKyle Evans.Op Fl r 3777688bffSMateusz Piotrowski.Op Fl e Brq Ar nonActiveBe | Ar beName Ns Cm @ Ns Ar snapshot 3877688bffSMateusz Piotrowski.Ar newBeName 395952343eSKyle Evans.Nm 4055ece394SKyle Evans.Cm create 4155ece394SKyle Evans.Op Fl r 4255ece394SKyle Evans.Ar beName@snapshot 4355ece394SKyle Evans.Nm 44d81df689SKyle Evans.Cm destroy 4577b4126cSKyle Evans.Op Fl \&Fo 4677688bffSMateusz Piotrowski.Ar beName Ns Op Cm @ Ns Ar snapshot 475952343eSKyle Evans.Nm 48d81df689SKyle Evans.Cm export 49d81df689SKyle Evans.Ar sourceBe 5034761e84SKyle Evans.Nm 51d81df689SKyle Evans.Cm import 52d81df689SKyle Evans.Ar targetBe 5334761e84SKyle Evans.Nm 54d81df689SKyle Evans.Cm jail 5577688bffSMateusz Piotrowski.Op Fl bU 5677688bffSMateusz Piotrowski.Oo Bro Fl o Ar key Ns Cm = Ns Ar value | Fl u Ar key Brc Oc Ns ... 5777688bffSMateusz Piotrowski.Ar beName 58cd816834SKyle Evans.Op Ar utility Op Ar argument ... 595952343eSKyle Evans.Nm 60d81df689SKyle Evans.Cm list 6177688bffSMateusz Piotrowski.Op Fl aDHs 62f0298be0SKyle Evans.Op Fl c Ar property 63f0298be0SKyle Evans.Op Fl C Ar property 64f0298be0SKyle Evans.Oo Bro Fl c Ar property | Fl C Ar property Brc Oc 655952343eSKyle Evans.Nm 66d81df689SKyle Evans.Cm mount 67d81df689SKyle Evans.Ar beName 6877688bffSMateusz Piotrowski.Op Ar mountpoint 695952343eSKyle Evans.Nm 70d81df689SKyle Evans.Cm rename 71d81df689SKyle Evans.Ar origBeName 72d81df689SKyle Evans.Ar newBeName 735952343eSKyle Evans.Nm 74d81df689SKyle Evans.Brq Cm ujail | unjail 7577688bffSMateusz Piotrowski.Brq Ar jailId | jailName 7677688bffSMateusz Piotrowski.Ar beName 775952343eSKyle Evans.Nm 78d81df689SKyle Evans.Brq Cm umount | unmount 795952343eSKyle Evans.Op Fl f 80d81df689SKyle Evans.Ar beName 8177688bffSMateusz Piotrowski.Pp 8277688bffSMateusz Piotrowski.Nm 8377688bffSMateusz Piotrowski.Op Fl h\&? 845952343eSKyle Evans.Sh DESCRIPTION 855952343eSKyle EvansThe 865952343eSKyle Evans.Nm 87d81df689SKyle Evanscommand is used to setup and interact with ZFS boot environments, which are 88d81df689SKyle Evansbootable clones of datasets. 895952343eSKyle Evans.Pp 9077688bffSMateusz PiotrowskiBoot environments 9177688bffSMateusz Piotrowskiallow the system to be upgraded, while preserving the old system environment in 92d81df689SKyle Evansa separate ZFS dataset. 9377688bffSMateusz Piotrowski.Pp 945952343eSKyle EvansThe following commands are supported by 955952343eSKyle Evans.Nm : 965952343eSKyle Evans.Bl -tag -width activate 97d81df689SKyle Evans.It Xo 98d81df689SKyle Evans.Cm activate 995952343eSKyle Evans.Op Fl t 100d81df689SKyle Evans.Ar beName 101d81df689SKyle Evans.Xc 1025952343eSKyle EvansActivate the given 1035952343eSKyle Evans.Ar beName 10484e61219SKyle Evansas the default boot filesystem. 10584e61219SKyle EvansIf the 1065952343eSKyle Evans.Op Fl t 1075952343eSKyle Evansflag is given, this takes effect only for the next boot. 108d81df689SKyle Evans.It Xo 109*490e13c1SKyle Evans.Cm check 110*490e13c1SKyle Evans.Xc 111*490e13c1SKyle EvansPerforms a silent sanity check on the current system. 112*490e13c1SKyle EvansIf boot environments are supported and used, 113*490e13c1SKyle Evans.Nm 114*490e13c1SKyle Evanswill exit with a status code of 0. 115*490e13c1SKyle EvansAny other status code is not currently defined and may, in the future, grow 116*490e13c1SKyle Evansspecial meaning for different degrees of sanity check failures. 117*490e13c1SKyle Evans.It Xo 118d81df689SKyle Evans.Cm create 1195952343eSKyle Evans.Op Fl r 12077688bffSMateusz Piotrowski.Op Fl e Brq Ar nonActiveBe | Ar beName Ns Cm @ Ns Ar snapshot 12177688bffSMateusz Piotrowski.Ar newBeName 122d81df689SKyle Evans.Xc 12377688bffSMateusz PiotrowskiCreate a new boot environment named 12477688bffSMateusz Piotrowski.Ar newBeName . 12577688bffSMateusz Piotrowski.Pp 12677688bffSMateusz PiotrowskiIf the 12777688bffSMateusz Piotrowski.Fl r 12877688bffSMateusz Piotrowskiflag is given, a recursive boot environment will be made. 12977688bffSMateusz Piotrowski.Pp 1305952343eSKyle EvansIf the 131d81df689SKyle Evans.Fl e 13277688bffSMateusz Piotrowskiflag is specified, the new environment will be cloned from the given 13377688bffSMateusz Piotrowski.Ar nonActiveBe 13477688bffSMateusz Piotrowskior 13577688bffSMateusz Piotrowski.Ar beName Ns Cm @ Ns Ar snapshot . 13677688bffSMateusz PiotrowskiOtherwise, the new environment will be created from the currently booted environment. 13777688bffSMateusz Piotrowski.Pp 13877688bffSMateusz PiotrowskiIf 13977688bffSMateusz Piotrowski.Nm 14077688bffSMateusz Piotrowskiis creating from another boot environment, a snapshot of that boot environment will be created to clone from. 141d81df689SKyle Evans.It Xo 14255ece394SKyle Evans.Cm create 14355ece394SKyle Evans.Op Fl r 14455ece394SKyle Evans.Ar beName@snapshot 14555ece394SKyle Evans.Xc 14655ece394SKyle EvansCreate a snapshot of the boot environment named 14755ece394SKyle Evans.Ar beName . 14855ece394SKyle Evans.Pp 14955ece394SKyle EvansIf the 15055ece394SKyle Evans.Fl r 15155ece394SKyle Evansflag is given, a recursive snapshot of the boot environment will be created. 15255ece394SKyle EvansA snapshot is created for each descendant dataset of the boot environment. 15355ece394SKyle Evans.Pp 15455ece394SKyle EvansNo new boot environment is created with this command. 15555ece394SKyle Evans.It Xo 156d81df689SKyle Evans.Cm destroy 15777b4126cSKyle Evans.Op Fl \&Fo 15877688bffSMateusz Piotrowski.Ar beName Ns Op Cm @ Ns Ar snapshot 159d81df689SKyle Evans.Xc 16077688bffSMateusz PiotrowskiDestroy the given 1615952343eSKyle Evans.Ar beName 1625952343eSKyle Evansboot environment or 16377688bffSMateusz Piotrowski.Ar beName Ns Cm @ Ns Ar snapshot 1648369ba42SKyle Evanssnapshot without confirmation, unlike in 16577688bffSMateusz Piotrowski.Xr beadm 1 . 1665952343eSKyle EvansSpecifying 1675952343eSKyle Evans.Fl F 1685952343eSKyle Evanswill automatically unmount without confirmation. 16977b4126cSKyle Evans.Pp 17077b4126cSKyle EvansBy default, 17177b4126cSKyle Evans.Nm 17277b4126cSKyle Evanswill warn that it is not destroying the origin of 17377b4126cSKyle Evans.Ar beName . 17477b4126cSKyle EvansThe 17577b4126cSKyle Evans.Fl o 17677b4126cSKyle Evansflag may be specified to destroy the origin as well. 177d81df689SKyle Evans.It Cm export Ar sourceBe 17834761e84SKyle EvansExport 17934761e84SKyle Evans.Ar sourceBe 18034761e84SKyle Evansto 18177688bffSMateusz Piotrowski.Xr stdout 4 . 18277688bffSMateusz Piotrowski.Xr stdout 4 18334761e84SKyle Evansmust be piped or redirected to a file. 184d81df689SKyle Evans.It Cm import Ar targetBe 18534761e84SKyle EvansImport 18634761e84SKyle Evans.Ar targetBe 18734761e84SKyle Evansfrom 18877688bffSMateusz Piotrowski.Xr stdin 4 . 189d81df689SKyle Evans.It Xo 190d81df689SKyle Evans.Cm jail 19177688bffSMateusz Piotrowski.Op Fl bU 19277688bffSMateusz Piotrowski.Oo Bro Fl o Ar key Ns Cm = Ns Ar value | Fl u Ar key Brc Oc Ns ... 19377688bffSMateusz Piotrowski.Ar beName 194cd816834SKyle Evans.Op Ar utility Op Ar argument ... 195d81df689SKyle Evans.Xc 19677688bffSMateusz PiotrowskiCreate a jail of the given boot environment. 197d694059fSKyle EvansMultiple 198d694059fSKyle Evans.Fl o 1992a0b8dc2SKyle Evansand 2002a0b8dc2SKyle Evans.Fl u 201d694059fSKyle Evansarguments may be specified. 2022a0b8dc2SKyle Evans.Fl o 2032a0b8dc2SKyle Evanswill set a jail parameter, and 2042a0b8dc2SKyle Evans.Fl u 2052a0b8dc2SKyle Evanswill unset a jail parameter. 206cd816834SKyle Evans.Pp 207cd816834SKyle EvansBy default, jails are created in interactive mode and 208cd816834SKyle Evans.Pa /bin/sh 209cd816834SKyle Evansis 210b509cad4SKyle Evansexecuted within the jail. 211cd816834SKyle EvansIf 212cd816834SKyle Evans.Ar utility 213cd816834SKyle Evansis specified, it will be executed instead of 214cd816834SKyle Evans.Pa /bin/sh . 215db9db0e7SKyle EvansThe jail will be destroyed and the boot environment unmounted when the command 216db9db0e7SKyle Evansfinishes executing, unless the 217db9db0e7SKyle Evans.Fl U 218db9db0e7SKyle Evansargument is specified. 219cd816834SKyle Evans.Pp 220b509cad4SKyle EvansThe 221b509cad4SKyle Evans.Fl b 222b509cad4SKyle Evansargument enables batch mode, thereby disabling interactive mode. 223db9db0e7SKyle EvansThe 224db9db0e7SKyle Evans.Fl U 225db9db0e7SKyle Evansargument will be ignored in batch mode. 2262a0b8dc2SKyle Evans.Pp 2272a0b8dc2SKyle EvansThe 2282a0b8dc2SKyle Evans.Va name , 2292a0b8dc2SKyle Evans.Va host.hostname , 2302a0b8dc2SKyle Evansand 2312a0b8dc2SKyle Evans.Va path 2327ce09314SKyle Evansmust be set, the default values are specified below. 2332a0b8dc2SKyle Evans.Pp 2342a0b8dc2SKyle EvansAll 23577688bffSMateusz Piotrowski.Ar key Ns Cm = Ns Ar value 236d694059fSKyle Evanspairs are interpreted as jail parameters as described in 237d694059fSKyle Evans.Xr jail 8 . 238d694059fSKyle EvansThe following default parameters are provided: 239d81df689SKyle Evans.Bl -column "allow.mount.devfs" "" 240d81df689SKyle Evans.It Va allow.mount Ta Cm true 241d81df689SKyle Evans.It Va allow.mount.devfs Ta Cm true 242d81df689SKyle Evans.It Va enforce_statfs Ta Cm 1 24377688bffSMateusz Piotrowski.It Va name Ta Set to jail ID. 244d81df689SKyle Evans.It Va host.hostname Ta Va bootenv 24577688bffSMateusz Piotrowski.It Va path Ta Set to a path in Pa /tmp 24677688bffSMateusz Piotrowskigenerated by 24784e61219SKyle Evans.Xr libbe 3 . 248d694059fSKyle Evans.El 2495952343eSKyle Evans.Pp 2502a0b8dc2SKyle EvansAll default parameters may be overwritten. 251f0298be0SKyle Evans.It Xo 252f0298be0SKyle Evans.Cm list 253f0298be0SKyle Evans.Op Fl DHas 254f0298be0SKyle Evans.Oo Bro Fl c Ar property | Fl C Ar property Brc Oc 255f0298be0SKyle Evans.Xc 256f0298be0SKyle Evans.Pp 25777688bffSMateusz PiotrowskiDisplay all boot environments. 25877688bffSMateusz PiotrowskiThe 25977688bffSMateusz Piotrowski.Em Active 26077688bffSMateusz Piotrowskifield indicates whether the boot environment is active now 26177688bffSMateusz Piotrowski.Pq Em \&N ; 26277688bffSMateusz Piotrowskiactive on reboot 26377688bffSMateusz Piotrowski.Pq Em \&R ; 26477688bffSMateusz Piotrowskior both 26577688bffSMateusz Piotrowski.Pq Em \&NR . 2665952343eSKyle Evans.Pp 267f0298be0SKyle Evans.Bl -tag -width indent 268f0298be0SKyle Evans.It Fl a 269f0298be0SKyle EvansDisplay all datasets. 270f0298be0SKyle Evans.It Fl D 271f0298be0SKyle EvansDisplay the full space usage for each boot environment, assuming all 272d81df689SKyle Evansother boot environments were destroyed. 273f0298be0SKyle Evans.It Fl H 274f0298be0SKyle EvansUsed for scripting. 275f0298be0SKyle EvansDo not print headers and separate fields by a single tab instead of 276d81df689SKyle Evansarbitrary white space. 277f0298be0SKyle Evans.It Fl s 278f0298be0SKyle EvansDisplay all snapshots as well. 279f0298be0SKyle Evans.It Fl c Ar property 280f0298be0SKyle EvansSort boot environments by given property name. 281f0298be0SKyle EvansThe following properties are supported: 282f0298be0SKyle Evans.Pp 283f0298be0SKyle Evans.Bl -tag -width 4n -offset indent -compact 284f0298be0SKyle Evans.It name (default output) 285f0298be0SKyle Evans.It creation 286f0298be0SKyle Evans.It origin 287f0298be0SKyle Evans.It used 288f0298be0SKyle Evans.It usedds 289f0298be0SKyle Evans.It usedsnap 290f0298be0SKyle Evans.It usedrefreserv 291f0298be0SKyle Evans.El 292f0298be0SKyle Evans.It Fl C Ar property 293f0298be0SKyle EvansSame as the 294f0298be0SKyle Evans.Fl c 295f0298be0SKyle Evansoption, but displays in descending order. 296f0298be0SKyle Evans.El 297f0298be0SKyle Evans.Pp 298f0298be0SKyle EvansThe 299f0298be0SKyle Evans.Fl D 300f0298be0SKyle Evansoption is ignored when either the 3015952343eSKyle Evans.Fl s 302f0298be0SKyle Evansor 303f0298be0SKyle Evans.Fl a 304f0298be0SKyle Evansoption is used. 305d81df689SKyle Evans.It Cm mount Ar beName Op Ar mountpoint 3065952343eSKyle EvansTemporarily mount the boot environment. 3075952343eSKyle EvansMount at the specified 3085952343eSKyle Evans.Ar mountpoint 3095952343eSKyle Evansif provided. 310d81df689SKyle Evans.It Cm rename Ar origBeName newBeName 31177688bffSMateusz PiotrowskiRename the given 3125952343eSKyle Evans.Ar origBeName 3135952343eSKyle Evansto the given 314d81df689SKyle Evans.Ar newBeName . 3158369ba42SKyle EvansThe boot environment will not be unmounted in order for this rename to occur. 31677688bffSMateusz Piotrowski.It Cm ujail Bro Ar jailId | jailName Brc Ar beName 31777688bffSMateusz Piotrowski.It Cm unjail Bro Ar jailId | jailName Brc Ar beName 31877688bffSMateusz PiotrowskiDestroy the jail created from the given boot environment. 31977688bffSMateusz Piotrowski.It Xo 32077688bffSMateusz Piotrowski.Cm umount 32177688bffSMateusz Piotrowski.Op Fl f 32277688bffSMateusz Piotrowski.Ar beName 32377688bffSMateusz Piotrowski.Xc 324d81df689SKyle Evans.It Xo 325d81df689SKyle Evans.Cm unmount 3265952343eSKyle Evans.Op Fl f 327d81df689SKyle Evans.Ar beName 328d81df689SKyle Evans.Xc 3295952343eSKyle EvansUnmount the given boot environment, if it is mounted. 3305952343eSKyle EvansSpecifying 3315952343eSKyle Evans.Fl f 3325952343eSKyle Evanswill force the unmount if busy. 3335952343eSKyle Evans.El 33477688bffSMateusz Piotrowski.Pp 33577688bffSMateusz Piotrowski.Nm 33677688bffSMateusz Piotrowskiprints usage information if 33777688bffSMateusz Piotrowski.Fl h 33877688bffSMateusz Piotrowskior 33977688bffSMateusz Piotrowski.Fl \&? 34077688bffSMateusz Piotrowskiis specified. 3415952343eSKyle Evans.Sh EXAMPLES 3425952343eSKyle Evans.Bl -bullet 3435952343eSKyle Evans.It 3445952343eSKyle EvansTo fill in with jail upgrade example when behavior is firm. 34584e61219SKyle Evans.El 3465952343eSKyle Evans.Sh SEE ALSO 34777688bffSMateusz Piotrowski.Xr beinstall.sh 1 , 348f5c8cb4cSMateusz Piotrowski.Xr libbe 3 , 3495952343eSKyle Evans.Xr jail 8 , 3505952343eSKyle Evans.Xr zfs 8 , 3515952343eSKyle Evans.Xr zpool 8 3525952343eSKyle Evans.Sh HISTORY 3535952343eSKyle Evans.Nm 3545952343eSKyle Evansis based on 35577688bffSMateusz Piotrowski.Xr beadm 1 3565952343eSKyle Evansand was implemented as a project for the 2017 Summer of Code, along with 3575952343eSKyle Evans.Xr libbe 3 . 3585952343eSKyle Evans.Sh AUTHORS 359d81df689SKyle Evans.Nm 360d81df689SKyle Evanswas written by 361d81df689SKyle Evans.An Kyle Kneitinger (kneitinger) Aq Mt kyle@kneit.in . 3625952343eSKyle Evans.Pp 36377688bffSMateusz Piotrowski.Xr beadm 1 364d81df689SKyle Evanswas written and is maintained by 365d81df689SKyle Evans.An Slawomir Wojciech Wojtczak (vermaden) Aq Mt vermaden@interia.pl . 3665952343eSKyle Evans.Pp 36734761e84SKyle Evans.An Bryan Drewery (bdrewery) Aq Mt bryan@shatow.net 368d81df689SKyle Evanswrote the original 36977688bffSMateusz Piotrowski.Xr beadm 1 3705952343eSKyle Evansmanual page that this one is derived from. 371