beadm(8) on Solnix vs Linux and the BSDs

beadm is the illumos boot-environment manager, run on Solnix as /usr/sbin/beadm or /sbin/beadm. FreeBSD's counterpart is bectl. The subcommands overlap (create, destroy, list, mount, unmount, rename, activate), but bectl destroys without confirmation, has no rollback in the bundle's synopsis, and adds jail, export, import and check.

What Solnix runs

A default Solnix system runs the illumos beadm at /usr/sbin/beadm and /sbin/beadm. No other variants are shipped. The Solnix page gives only the synopsis and a list of operations, with no per-option descriptions, so option meanings below are compared only where the synopsis shows a difference. The bundle has no Linux, OpenBSD or NetBSD counterpart page for boot environments.

Differences

Compared withTopicWhat differs
FreeBSDcommand name and modelSolnix uses beadm; FreeBSD uses bectl. Both manage ZFS boot environments with subcommands. bectl takes an optional global -r beroot to name a parent dataset. The beadm synopsis has no equivalent.
Source: Solnix beadm(8) SYNOPSIS; FreeBSD bectl(8) SYNOPSIS, -r beroot
FreeBSDdestroy confirmationFreeBSD bectl destroy removes the boot environment without confirmation, and the page says this is unlike beadm(8). With -F it also unmounts automatically without confirmation. The Solnix page does not describe -f or -F for destroy.
Source: FreeBSD bectl(8) destroy; Solnix beadm(8) SYNOPSIS (destroy [-fFsv])
FreeBSDrollbackSolnix beadm has rollback beName snapshot (or beName@snapshot) to roll a BE back to a snapshot. The bectl synopsis in the bundle has no rollback subcommand.
Source: Solnix beadm(8) SYNOPSIS, DESCRIPTION; FreeBSD bectl(8) SYNOPSIS
FreeBSDmount argumentsbeadm mount requires a mountpoint and accepts -s ro|rw and -v. bectl mount takes the mountpoint as optional and has no listed options.
Source: Solnix beadm(8) SYNOPSIS (mount); FreeBSD bectl(8) SYNOPSIS (mount)
FreeBSDcreate optionsbeadm create takes -a or -t, -d description, -o property=value, -p zpool and -v. bectl create takes -r for a recursive BE or snapshot and -E for an empty BE. Neither set of flags appears in the other synopsis.
Source: Solnix beadm(8) SYNOPSIS (create); FreeBSD bectl(8) create -r, -E
FreeBSDlist optionsbeadm list takes -a or -ds, -H, -k or -K with date, name or space, and -v. bectl list takes -a, -D, -H, -s, and -c or -C property for sort order (-C is descending). The sort flags differ.
Source: Solnix beadm(8) SYNOPSIS (list); FreeBSD bectl(8) list -c, -C, -D
FreeBSDscripting output from listBoth list subcommands accept -H. bectl documents it as no headers and tab-separated fields. The Solnix page does not describe -H, so check its output before parsing it in a script.
Source: FreeBSD bectl(8) list -H; Solnix beadm(8) SYNOPSIS (list [-H])
FreeBSDsubcommands only on FreeBSDbectl has check, export, import, jail and ujail/unjail. The beadm synopsis has none of these.
Source: FreeBSD bectl(8) SYNOPSIS; Solnix beadm(8) SYNOPSIS
FreeBSDtemporary activationBoth activate subcommands accept -t or -T. bectl documents -t as taking effect only for the next boot, and -T as removing the temporary boot-once setting. The Solnix page does not describe these flags.
Source: FreeBSD bectl(8) activate; Solnix beadm(8) SYNOPSIS (activate [-v] [-t | -T])
FreeBSDexit statusSolnix beadm returns 0 on success and >0 on failure. bectl check exits 0 if boot environments are supported and used; the page says any other status is not defined.
Source: Solnix beadm(8) EXIT STATUS; FreeBSD bectl(8) check

Everyday tasks

TaskSolnixFreeBSD
list boot environmentsbeadm listbectl list
create a BE from the current BEbeadm create beNamebectl create newBeName
create a BE from an inactive BE or snapshotbeadm create -e non-activeBeName | beName@snapshot beNamebectl create -e nonActiveBe | beName@snapshot newBeName
snapshot a BEbeadm create beName@snapshotbectl create beName@snapshot
activate a BEbeadm activate beNamebectl activate beName
activate for the next boot onlybeadm activate -t beNamebectl activate -t beName
mount a BEbeadm mount beName mountpointbectl mount beName [mountpoint]
unmount a BEbeadm unmount beName | mountpointbectl unmount beName
rename a BEbeadm rename beName newBeNamebectl rename origBeName newBeName
destroy a BEbeadm destroy beNamebectl destroy beName
roll back a BE to a snapshotbeadm rollback beName snapshot—

Standards

  • POSIX: beadm is not a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Uncommitted.

Writing portable scripts

  • Do not assume beadm and bectl are interchangeable: pick the tool that is present, and note that bectl destroy asks for no confirmation while the bectl page says beadm does.
  • Pass the mountpoint explicitly to mount. beadm requires it, and bectl accepts it.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.