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 and Upgrade FreeBSD
        • 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
        • Run a command from cron reliably
        • 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
        • Find what is using ZFS space
        • Grow a ZFS virtual disk
        • 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
        • Share a directory with NFS
        • Share files with a named Samba account
        • 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
        • Build a first signed poudriere repository
        • 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 a service that will not start
          • Diagnose audio output or input
          • Diagnose webcamd, cuse, and a webcam
          • Fix USB device permissions without opening every device
      • About this handbook
      • Is this the official FreeBSD Handbook?
      • Which releases does a guide support?
      • Is pkg upgrade the same as a FreeBSD update?
      • Where should a persistent setting go?
      • Why does a service ask for an enable variable before starting?
      • Why does a command work manually but fail from cron?
      • Can FreeBSD be used as a desktop or laptop system?
      • Is a ZFS snapshot a backup?
      • Why did deleting files not free ZFS space?
      • How can a ZFS pool use a larger virtual disk?
      • Should a workload run in a jail or a virtual machine?
      • Should packages use the quarterly or latest branch?
      • Why did a package upgrade replace my local build options?
      • How can a small server share files without exporting everything?
      • Is the Linux compatibility layer the same as a Linux container?
      • Is a custom kernel normally required?
      • Is a serial login the same as a recovery console?
      • Can a Windows application run without a Windows virtual machine?
      • Should a small server use CUPS or lpd?
      • Does enabling security auditing record everything?
      • How is an error or concern reported?

      FAQ

      Is this the official FreeBSD Handbook? #

      No. This is an independent, task-oriented companion. The authoritative documentation is the official FreeBSD Handbook .

      Which releases does a guide support? #

      Every technical page displays an Applies to line. Tested on is shown only when the complete procedure was exercised. Do not assume that a procedure applies to an older or newer release that is not listed.

      Is pkg upgrade the same as a FreeBSD update? #

      Usually not. On a traditional distribution-set installation, pkg upgrade updates third-party packages while freebsd-update maintains the base system. A pkgbase installation also manages base-system packages with pkg. See Update, upgrade, or update packages? .

      Where should a persistent setting go? #

      Runtime kernel settings normally use /etc/sysctl.conf, loader tunables use /boot/loader.conf, and service settings use /etc/rc.conf. See Make a system setting persistent for the decision process.

      Why does a service ask for an enable variable before starting? #

      Ordinary service name start honors the service’s boot-enable setting. Use onestart for a temporary test, or set the documented variable with sysrc before starting a persistent service. See Diagnose a service that will not start .

      Why does a command work manually but fail from cron? #

      Check the account, paths, interpreter, environment, and output log. Per-account and system crontabs also have different formats. Run a command from cron reliably provides a small working example.

      Can FreeBSD be used as a desktop or laptop system? #

      That depends on the exact graphics, Wi-Fi, audio, suspend, browser, and application requirements. A model name alone is not enough evidence. Begin with the desktop and laptop hardware preflight , then prove one maintainable desktop baseline .

      Is a ZFS snapshot a backup? #

      Not by itself. A snapshot normally remains dependent on its source pool. The ZFS operations guide separates local history, independent replication, restore testing, integrity, and redundancy.

      Why did deleting files not free ZFS space? #

      Snapshots, clones, or an open file can retain blocks after deletion. Quotas and reservations can also limit available space. Find what is using ZFS space explains how to distinguish these cases before deleting recovery points.

      How can a ZFS pool use a larger virtual disk? #

      Expand the virtual disk, its last GPT partition, and the pool in that order. Grow a ZFS virtual disk covers a single-disk pool and the checks between those steps.

      Should a workload run in a jail or a virtual machine? #

      A jail shares the FreeBSD host kernel. A bhyve virtual machine supplies another kernel and a machine-shaped boundary at higher operational cost. See Choose a jail or a bhyve virtual machine .

      Should packages use the quarterly or latest branch? #

      The branch is a system-wide maintenance policy, not a per-package preference. Quarterly favors fewer changes; latest follows the current ports package set more closely. See Choose the quarterly or latest package branch .

      Why did a package upgrade replace my local build options? #

      A locally built port is still an installed package. An upgrade from the official repository can replace it with that repository’s option set. Keep package sources coherent; use a signed poudriere repository when custom options need to survive routine maintenance.

      How can a small server share files without exporting everything? #

      Start with a dedicated directory and explicit clients or named accounts. NFS suits trusted clients with coordinated numeric identities; Samba supplies an authenticated SMB share. Verify filesystem permissions and keep backups separate from writable access.

      Is the Linux compatibility layer the same as a Linux container? #

      No. It supplies a Linux binary ABI and userland environment on the FreeBSD kernel; it does not supply Linux cgroups, namespaces, or a Linux kernel. See Run a Linux binary with the compatibility layer .

      Is a custom kernel normally required? #

      No. GENERIC plus a documented module, runtime setting, or loader tunable usually has the simpler update and recovery path. A custom kernel needs a stated requirement, matching source, compatible modules, a rebuild owner, and a known-good fallback. See Choose a custom kernel, module, or loader setting .

      Is a serial login the same as a recovery console? #

      No. A login normally appears only after the kernel and init are running. A recovery console may also need firmware, loader, early kernel, and single-user access. See Configure a serial console for recovery .

      Can a Windows application run without a Windows virtual machine? #

      Sometimes. Wine can run compatible Windows applications through FreeBSD host interfaces, but it does not provide a Windows kernel, driver model, or security sandbox. See Run Windows applications with Wine .

      Should a small server use CUPS or lpd? #

      That depends on clients, protocols, driver requirements, discovery, and administrative surface. The base lpd service can fit a small explicit queue; packaged CUPS provides IPP-oriented client and driver integration with additional service and web-interface boundaries. See Choose and configure a printing stack .

      Does enabling security auditing record everything? #

      No. Audit coverage depends on selected events, instrumented paths, login attribution, trail storage, and review. Broad collection can also capture sensitive data and exhaust storage. See Audit security-relevant activity .

      How is an error or concern reported? #

      Select Report a bug in the footer. The link reveals the project’s email address. It can be used for technical corrections, complaints, and other concerns about this independent project.

      For a FreeBSD question, port problem, or reproducible operating-system defect, use the documentation and support channel guide . The footer link contacts only this independent handbook; it does not contact the FreeBSD Project or create a FreeBSD problem report.

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

      Report a bug
      • Is this the official FreeBSD Handbook?
      • Which releases does a guide support?
      • Is pkg upgrade the same as a FreeBSD update?
      • Where should a persistent setting go?
      • Why does a service ask for an enable variable before starting?
      • Why does a command work manually but fail from cron?
      • Can FreeBSD be used as a desktop or laptop system?
      • Is a ZFS snapshot a backup?
      • Why did deleting files not free ZFS space?
      • How can a ZFS pool use a larger virtual disk?
      • Should a workload run in a jail or a virtual machine?
      • Should packages use the quarterly or latest branch?
      • Why did a package upgrade replace my local build options?
      • How can a small server share files without exporting everything?
      • Is the Linux compatibility layer the same as a Linux container?
      • Is a custom kernel normally required?
      • Is a serial login the same as a recovery console?
      • Can a Windows application run without a Windows virtual machine?
      • Should a small server use CUPS or lpd?
      • Does enabling security auditing record everything?
      • How is an error or concern reported?