Skip to content

FreeBSD

omfreebdy is built on FreeBSD, not Linux. This is a deliberate choice. FreeBSD provides a coherent, well-documented operating system with architectural properties that make it a better foundation for a desktop environment.

FreeBSD draws a hard line between the operating system and third-party software.

  • /bin, /sbin, /usr/bin, /usr/sbin — base system, maintained by the FreeBSD project
  • /usr/local/bin, /usr/local/sbin — packages installed via pkg

If a package upgrade goes wrong, you can nuke /usr/local and reinstall everything without touching the base system. The kernel, libc, and core utilities are unaffected.

# Nuclear option: wipe all ports/packages, base system intact
sudo rm -rf /usr/local
sudo pkg bootstrap
sudo pkg install -y hyprland waybar ...

On Linux, this separation does not exist. A broken upgrade to glibc or systemd can render the system unbootable.

Every mise run update in omfreebdy creates a ZFS boot environment snapshot before making changes.

# Create a boot environment before risky operations
boot-env create before-experiment
# List available boot environments
boot-env list
# Roll back if something breaks
boot-env rollback before-experiment

You can also select a boot environment from the bootloader menu at startup, before the OS loads. No working system required.

FreeBSD includes a kernel-level audio mixer with 256 virtual channels. Applications get audio output without any userspace audio daemon.

# Check audio devices
cat /dev/sndstat
# Set default device
sysctl hw.snd.default_unit=0
SystemAudio StackDaemons Required
FreeBSDOSS (kernel)Zero
Linux (modern)PipeWire → WirePlumber → ALSA → kernel2–3
Linux (legacy)PulseAudio → ALSA → kernel1–2

Audio works at install time with no configuration. See the Audio page for full details.

FreeBSD jails are OS-level containers with hard namespace isolation. They have been part of the base system since FreeBSD 4.0 (year 2000).

# Create a jail
sudo jail -c name=myjail path=/jails/myjail host.hostname=myjail
# Execute a command inside
sudo jexec myjail sh
# List running jails
jls

omfreebdy uses jails for:

  • Linux compat — run Linux-only binaries (Brave, hermes-agent) via the linuxulator
  • Sandboxing — run untrusted apps in disposable ZFS-cloned environments
  • Services — isolate network services from the host

Unlike Docker, jails use the host kernel directly. No virtualization overhead. No daemon. No image registry.

FreeBSD ships a /rescue directory containing ~150 statically linked binaries.

ls /rescue
[ cat chmod cp df echo expr hostname kill ln
ls mkdir mv ps rm sh stat tar ...

If /usr is unmounted, corrupted, or a package upgrade broke a shared library, /rescue/sh still works. You can diagnose and repair the system without a live USB.

# Boot into single-user mode, use rescue shell
/rescue/sh
# Mount filesystems manually
/rescue/mount -a
# Repair or reinstall packages
pkg install -f broken-package

The entire system startup state lives in one file: /etc/rc.conf.

# View full system configuration
cat /etc/rc.conf
hostname="myhost"
ifconfig_em0="DHCP"
sshd_enable="YES"
dbus_enable="YES"
seatd_enable="YES"
llama_server_enable="YES"
llama_server_model="/usr/local/share/llama/models/Qwen3-4B-Q4_K_M.gguf"

Every enabled service, network interface, and system option is visible here. To disable a service: sudo sysrc sshd_enable=NO. No hunting through /etc/systemd/system/, /etc/init.d/, and /lib/systemd/system/ across three directories.

# Add a setting
sudo sysrc some_service_enable=YES
# Remove a setting
sudo sysrc -x some_service_enable
PropertyFreeBSDLinux (typical)
Init systemrc.d (sh scripts)systemd (binary journal, socket activation, unit files)
Package namespace/usr/local onlyMixed into /usr, /lib, /bin
Kernel + userlandDeveloped together, same repoSeparate projects (kernel.org vs GNU vs distro)
ContainersJails (base system)Docker/containerd/runc (separate install)
AudioOSS in kernelALSA + PipeWire + WirePlumber
Boot environmentsBuilt into ZFS + bootloaderRequires btrfs-assistant or snapper + manual grub
Recovery shell/rescue (always available)Depends on initramfs configuration