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
      • Synopsis
      • Record the current state
      • Interpret the phase
      • Continue a saved transaction
      • Diagnose a repeated failure
      • Roll back only the most recent installed update
      • Primary references

      Recover an interrupted freebsd-update run

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

      Synopsis #

      freebsd-update separates fetching, merging, and installation into saved phases. During a release upgrade, repeated freebsd-update install invocations intentionally perform different work around a reboot and third-party package upgrade. An interruption does not therefore imply that the process must start again.

      Do not remove /var/db/freebsd-update, change the target release, or start another update job while diagnosing the saved transaction. Those actions can destroy the state needed to continue safely.

      This procedure applies to a distribution-set base system. A pkgbase host is maintained with pkg; identify the method with the update and upgrade decision guide .

      Record the current state #

      Capture the exact error and the three installed version values:

      $ freebsd-version -kru
      $ uname -a
      $ df -h / /var
      $ mount
      

      Check for another active process before starting a replacement invocation:

      $ pgrep -laf freebsd-update
      

      If an active process is still fetching, merging, or installing, investigate that process rather than running a concurrent copy. An abandoned terminal does not necessarily mean the process stopped.

      Interpret the phase #

      Last completed actionExpected next action
      Fetch or upgrade retrieval stopped before preparing an installationAfter confirming the process stopped, repeat the same fetch or upgrade -r command
      freebsd-update fetch during a patch updatefreebsd-update install
      freebsd-update upgrade -r 15.1-RELEASE finished, no install yetFirst freebsd-update install installs the new kernel
      First upgrade install finished, old kernel still runningReboot
      New kernel is running, old userland remains installedfreebsd-update install installs userland
      Userland install requested package rebuild or upgradeComplete that package step, then run freebsd-update install again
      Final cleanup was interruptedRun freebsd-update install again

      Once retrieval and configuration merging have completed, the saved upgrade state makes the next install invocation advance to the appropriate phase. Do not repeat upgrade -r merely because the shell session ended after that preparation succeeded.

      Continue a saved transaction #

      Confirm that no other update process is running and that storage is writable with adequate free space. If the preceding fetch or upgrade preparation completed, continue with:

      # freebsd-update install
      

      If retrieval was interrupted before preparing an installation, repeat that retrieval command first. Keep the work directory so verified downloads can be reused. An install message saying no updates are available after an incomplete fetch means that no installation is ready; it does not prove that the host is up to date.

      Read the output of each completed phase. If a kernel was installed but has not been booted, compare the running and installed kernel:

      $ freebsd-version -kr
      

      When they differ at the kernel phase, reboot before installing userland:

      # shutdown -r now
      

      After booting, record the versions again and continue with freebsd-update install. During a major release upgrade, complete the package ABI step at the point requested by the official release instructions, then make the final install call to remove obsolete base-system files.

      Diagnose a repeated failure #

      If the same phase fails again, preserve its full output and check:

      • free space in /var and the update work directory;
      • whether /, /boot, or /var became read-only;
      • DNS and HTTPS reachability when the failure occurs during fetch;
      • local modifications named in a failed configuration merge;
      • a custom kernel or nondefault Components setting;
      • the target release’s errata for a known upgrade issue.

      Do not respond to a checksum, signature, or metadata error by disabling verification. Do not delete a configuration file simply to force a merge. Correct the underlying storage, network, or merge failure and rerun the same saved phase.

      A fetch can also be refused because an automated session has no terminal. For a deliberate scripted fetch, the documented --not-running-from-cron option permits freebsd-update --not-running-from-cron fetch without a TTY. Use the separate cron subcommand for scheduled checks.

      Roll back only the most recent installed update #

      For a patch update that installed successfully but caused a regression, freebsd-update rollback uninstalls the most recently installed update:

      # freebsd-update rollback
      

      Review the proposed changes and reboot when the kernel or modules changed. This rollback is not a general undo mechanism for every phase of a release upgrade, and the configured backup kernel is managed separately. A ZFS-root system with a known pre-change boot environment can instead use the narrower boot-environment recovery procedure .

      Primary references #

      • FreeBSD Handbook: binary updates and release upgrades
      • FreeBSD 15.1-RELEASE upgrading instructions
      • freebsd-update(8)
      • freebsd-update.conf(5)
      • freebsd-version(1)

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

      Report a bug
      • Synopsis
      • Record the current state
      • Interpret the phase
      • Continue a saved transaction
      • Diagnose a repeated failure
      • Roll back only the most recent installed update
      • Primary references