The Handbook

    Theme
    • Guides
        • Check a system before installing FreeBSD
        • Orient a Linux administrator on FreeBSD
        • Supported FreeBSD releases
        • Choose a FreeBSD documentation and support channel
        • Move files safely without GNU mv -t
        • Update, upgrade, or update packages?
        • Upgrade 14.4 or 15.0 to FreeBSD 15.1
        • Choose packages, ports, or poudriere
        • Choose the quarterly or latest package branch
        • Choose a FreeBSD download or package mirror
        • Make a system setting persistent
        • Configure locale, keyboard, and time zone
        • Configure a serial console for recovery
        • Choose a custom kernel, module, or loader setting
        • Run a Linux binary with the compatibility layer
        • Check desktop and laptop hardware before installation
        • Choose and check a graphics driver
        • Choose Xorg or Wayland
        • Build a maintainable desktop baseline
        • Install and check a desktop browser
        • Check laptop Wi-Fi, power, and suspend
        • Check multimedia readiness
        • Choose and configure a printing stack
        • Run Windows applications with Wine
        • Snapshot and replicate a ZFS dataset
        • Choose a filesystem and storage layout
        • Operate ZFS without losing the recovery path
        • Restore files from a ZFS snapshot
        • Read ZFS pool health and run a scrub
        • Replace a failed device in a ZFS mirror
        • Replicate a ZFS dataset over SSH
        • Change PF safely on a remote host
        • Configure a narrow WireGuard tunnel
        • Plan a FreeBSD home server
        • Choose a mail server or an outgoing relay
        • Publish a network service safely
        • Choose a jail network model
        • Choose native jails or a jail manager
        • Choose a jail or a bhyve virtual machine
        • Establish a FreeBSD security baseline
        • Choose a MAC policy
        • Audit security-relevant activity
        • Start a DTrace performance investigation
    • Integrations
        • Create a first jail with Bastille
        • Compare jail managers and OCI tooling
        • Publish a Bastille service through PF
        • Mount a ZFS dataset in a Bastille jail
        • Update and upgrade Bastille jails
        • Back up and restore a Bastille jail
        • Prepare bhyve and vm-bhyve
        • Choose NFS or Samba for file sharing
        • Choose ZFS backup automation
        • Operate a signed poudriere repository
        • Manage FreeBSD configuration with Ansible or Salt
        • Run Motion with webcamd on FreeBSD
        • Design a reverse proxy, certificates, and monitoring
    • FAQ
      • Troubleshooting
          • Recover an interrupted freebsd-update run
          • Resolve a package repository or ABI mismatch
          • Diagnose the FreeBSD boot path
          • Recover with a ZFS boot environment
          • Diagnose DNS, routing, and firewall paths
          • Diagnose network mbuf exhaustion
          • Bind a service to a low port without running it as root
          • Diagnose audio output or input
          • Diagnose webcamd, cuse, and a webcam
          • Fix USB device permissions without opening every device
      • About this handbook
      • Synopsis
      • Compare the boundaries
      • Prefer a jail for FreeBSD services
      • Prefer bhyve for a separate operating system
      • Avoid false migration shortcuts
      • Primary references

      Choose a jail or a bhyve virtual machine

      Last reviewed
      13 August 2026
      Applies to
      15.1-RELEASE, 15.0-RELEASE, 14.4-RELEASE

      Synopsis #

      A jail isolates processes, filesystems, users, and optionally network stacks while sharing the FreeBSD host kernel. A bhyve virtual machine supplies a separate guest kernel and emulated or virtual devices. The decision follows from kernel and isolation requirements, not from which management command looks easier.

      Prefer a jail for FreeBSD-native services that do not need a different kernel. Prefer bhyve when the workload needs another operating system, its own kernel, stronger separation from the host kernel, a different release lifecycle, or device behavior that a jail cannot provide.

      Compare the boundaries #

      RequirementJailbhyve virtual machine
      FreeBSD userland on the host kernelNatural fitWorks, with a second kernel and more resources
      Linux or Windows kernel behaviorNot providedNatural fit for supported guests
      Independent kernel update and rebootNoYes
      Low memory and rapid startupStrong fitHigher fixed overhead
      Direct host dataset mountStraightforward but expands the shared boundaryUsually exposed as a virtual disk or network filesystem
      Kernel-compromise separationShared kernel remains the boundaryGuest kernel is separated by the hypervisor boundary
      Device emulation and UEFI guest bootLimited jail device accessSupported according to bhyve and firmware capabilities
      OCI image workflowAvailable over jail technologyNot normally the reason to choose a VM

      Neither mechanism removes the need for host hardening, backups, resource limits, and network policy. A compromised VM can still attack exposed hypervisor interfaces and networks; a compromised jail still reaches the shared kernel through allowed system calls.

      Prefer a jail for FreeBSD services #

      A web server, DNS server, monitoring service, or database built and supported on FreeBSD generally needs process, filesystem, account, and network separation rather than another kernel. Jails also integrate directly with ZFS and rc.d.

      Review Choose native jails or a jail manager and Choose a jail network model before selecting the administrative layer.

      Prefer bhyve for a separate operating system #

      bhyve is the clearer boundary when:

      • an application explicitly requires a Linux or Windows kernel;
      • kernel modules or kernel-specific behavior are required;
      • the guest must be patched, rebooted, and rolled back independently;
      • the service is not trusted to share the host kernel;
      • an appliance image is delivered as a virtual disk;
      • virtual firmware or virtual devices are part of the requirement.

      The additional kernel, memory, disk image, boot process, network tap, firmware, and guest agent become operational responsibilities. Continue with Prepare bhyve and vm-bhyve .

      When the requirement is one Windows application rather than a Windows kernel or appliance, evaluate Wine on FreeBSD first. Application compatibility, isolation, and recovery evidence should decide whether that smaller boundary is acceptable.

      Avoid false migration shortcuts #

      Moving a workload into a jail does not make a Linux application FreeBSD-native. Moving a small native daemon into a VM does not automatically provide meaningful isolation if the guest shares broad host storage and an unrestricted management network.

      Write the required boundary first, then choose the mechanism that implements it with the fewest exceptions.

      Primary references #

      • FreeBSD Handbook: Jails and Containers
      • FreeBSD Handbook: Virtualization with bhyve
      • bhyve(8)
      • jail(8)

      Independent documentation. Not affiliated with or endorsed by the FreeBSD Project or the FreeBSD Foundation.

      Report a bug
      • Synopsis
      • Compare the boundaries
      • Prefer a jail for FreeBSD services
      • Prefer bhyve for a separate operating system
      • Avoid false migration shortcuts
      • Primary references