zoneadm(8) on Solnix vs Linux and the BSDs

zoneadm is the illumos command at /usr/sbin/zoneadm that administers zones, which the page calls application containers maintained by the operating system runtime. Linux and FreeBSD have no single equivalent. systemd-nspawn runs a container, machinectl manages registered machines, and jail(8) creates, modifies and removes jails, with a different flag set.

What Solnix runs

A default Solnix system runs the illumos zoneadm at /usr/sbin/zoneadm. No other variants are shipped. The bundle's Solnix page shows only the placeholders 'subcommand' and 'subcommand_options' (plus list and mark incomplete), so this comparison does not cover other subcommands. zonecfg(8), zlogin(1), svcs(1) and svcadm(8) are listed in SEE ALSO. OpenBSD and NetBSD have no counterpart page in the bundle.

Differences

Compared withTopicWhat differs
Linux, FreeBSDtool modelzoneadm takes a zone name plus a subcommand. systemd-nspawn runs one command or OS tree per invocation, and machinectl acts on machines registered with systemd-machined. FreeBSD jail uses -c, -m, -r and -e plus name=value parameters.
Source: Solnix zoneadm(8) SYNOPSIS, DESCRIPTION; Linux systemd-nspawn(1) DESCRIPTION; Linux machinectl(1) DESCRIPTION; FreeBSD jail(8) DESCRIPTION
FreeBSD-R meaningSolnix zoneadm -R root gives an alternate root (boot environment) and works only with list and mark. FreeBSD jail -R removes a running jail without using the configuration file. The two flags are unrelated.
Source: Solnix zoneadm(8) -R; FreeBSD jail(8) -R
FreeBSD-u meaningSolnix zoneadm -u takes a UUID, assigned by libuuid(3LIB), that selects a zone in place of the one named by -z. FreeBSD jail -u takes a host user name for jailed commands. FreeBSD jail has no -z.
Source: Solnix zoneadm(8) -u, -z; FreeBSD jail(8) -u
Linux, FreeBSDhow a target is chosenSolnix names the zone with -z zonename, or by UUID with -u. FreeBSD jail names a jail by jid or name parameter or a jail argument, and '*' means all jails. Linux nspawn uses --machine or --directory.
Source: Solnix zoneadm(8) -z, -u; FreeBSD jail(8) DESCRIPTION (wildcard '*'); Linux systemd-nspawn(1) DESCRIPTION (--directory=, --machine=)
Linux, FreeBSDwhere configuration livesThe zoneadm page defines no configuration file or creation parameters. Its SEE ALSO points to zonecfg(8). FreeBSD jail reads /etc/jail.conf by default (-f overrides it). nspawn reads .nspawn files in /etc/systemd/nspawn/ and /run/systemd/nspawn/.
Source: Solnix zoneadm(8) SEE ALSO; FreeBSD jail(8) -f; Linux systemd-nspawn(1) --settings=
Linuxboot-time serviceOn Solnix the zones service is an SMF service, svc:/system/zones:default, managed with svcadm(8) and queried with svcs(1). Linux runs nspawn containers as service instances of the systemd-nspawn@.service template, which machinectl can start.
Source: Solnix zoneadm(8) NOTES; Linux systemd-nspawn(1) DESCRIPTION; Linux machinectl(1) DESCRIPTION
Linux, FreeBSDmark incompleteOnly Solnix zoneadm documents 'mark incomplete'. The Linux and FreeBSD pages in the bundle show no equivalent operation.
Source: Solnix zoneadm(8) SYNOPSIS (mark incomplete); FreeBSD jail(8) DESCRIPTION; Linux machinectl(1) DESCRIPTION
FreeBSDrestart and listingFreeBSD jail -rc restarts a jail by removing and re-creating it, and jls(8) lists running jails. The zoneadm page in the bundle shows a list subcommand but does not document restart.
Source: FreeBSD jail(8) -rc, -e; Solnix zoneadm(8) SYNOPSIS
Linux, FreeBSDexit statuszoneadm exits 0 on success, 1 on error and 2 on invalid usage. The systemd-nspawn, machinectl and jail text in the bundle shows no exit status section, so scripts should not assume the same codes.
Source: Solnix zoneadm(8) EXIT STATUS; Linux systemd-nspawn(1) and machinectl(1); FreeBSD jail(8)
Linuxbooting an OS versus a commandnspawn without --boot runs a command, or a shell if none is given. With --boot it runs an init program. The zoneadm page does not say how a zone's processes are started.
Source: Linux systemd-nspawn(1) OPTIONS, SYNOPSIS; Solnix zoneadm(8) DESCRIPTION

Everyday tasks

TaskSolnixLinuxFreeBSD
list zones, containers or jailszoneadm list—jls(8) lists running jails; jail -e separator lists configured jails
remove a jail——jail -r jail
restart a jail——jail -rc jail
configure a zone or containerzonecfg(8).nspawn file, see systemd.nspawn(5)jail.conf(5), /etc/jail.conf
log in or open a shellzlogin(1)machinectl shell or login—
signal the processes of a container—machinectl kill, with --signal and --kill-whom—
control the boot-time servicesvcadm and svcs on svc:/system/zones:defaultsystemd-nspawn@.service, via machinectl—

Standards

  • POSIX: zoneadm is not a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Committed.
  • Linux: systemd-nspawn implements the Container Interface specification.

Writing portable scripts

  • Do not script zone, container and jail management portably. Detect which tool exists (zoneadm, machinectl or systemd-nspawn, jail) and branch, because the flags and the configuration files differ.
  • Do not reuse -R or -u across these tools. They mean an alternate root and a UUID on Solnix zoneadm, but remove-without-configuration and a host user name on FreeBSD jail.

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.