Skip to content

Getting Started

pkgdemon edited this page Aug 21, 2026 · 2 revisions

The fastest way to see NextBSD is to boot a published image in a VM. Nothing is installed, nothing is partitioned, and you can throw it away afterwards.

On an Apple Silicon Mac, use the Apple Silicon Mac (UTM) Guide instead — it is a friendlier path than raw QEMU.

1. Download an image

Grab the latest build from the continuous release.

Every successful build of main publishes four things per architecture:

Asset Use it for
NextBSD-<arch>-<stamp>.img.zip Booting in a VM, or dd to a USB stick
NextBSD-<arch>-<stamp>.iso.zip Optical media, and VM software that wants an ISO
*.sha256 Verifying the download

<arch> is amd64 (x86-64) or arm64 (AArch64). Both are built, boot-tested and published on every merge. <stamp> is the UTC build time, YYYYMMDD-HHMMSS.

Unzip with whatever your platform provides — Finder, Explorer, or:

unzip NextBSD-amd64-*.img.zip

Verifying the download

sha256sum -c NextBSD-amd64-*.img.zip.sha256     # Linux
shasum -a 256 -c NextBSD-amd64-*.img.zip.sha256 # macOS
sha256 -c "$(cat NextBSD-amd64-*.img.zip.sha256)" NextBSD-amd64-*.img.zip  # FreeBSD

2. Boot it

amd64 under QEMU

img=$(echo NextBSD-amd64-*.img)
qemu-system-x86_64 \
  -accel kvm -cpu host -m 2048 \
  -bios /usr/share/OVMF/OVMF_CODE.fd \
  -drive file="$img",format=raw,if=virtio \
  -nic user,model=e1000 \
  -nographic

arm64 under QEMU

The machine type is virt and the firmware is AAVMF rather than OVMF. One extra detail: virtio-net needs its PXE option ROM disabled with romfile=, because the arm64 QEMU packages do not ship one.

img=$(echo NextBSD-arm64-*.img)
qemu-system-aarch64 \
  -accel kvm -cpu host -m 2048 -machine virt \
  -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd \
  -drive file="$img",format=raw,if=virtio \
  -netdev user,id=net0 -device virtio-net-pci,netdev=net0,romfile= \
  -nographic

-accel kvm -cpu host only works when your host CPU matches the image architecture. Drop both flags to emulate instead — it works, but it is slow.

On real hardware

Write the .img to a USB stick and boot it. The image carries both BIOS and UEFI boot paths and a read-write UFS root, so it boots as-is on most machines.

sudo dd if=NextBSD-amd64-<stamp>.img of=/dev/sdX bs=4M status=progress conv=fsync

Check the device name twice. dd will overwrite whatever you point it at.

3. Log in

After roughly ten seconds you will see launchd start its daemons, DHCP fire on the first Ethernet interface, syslog come up, and a login: prompt.

Log in as root with no password — just press Enter.

4. Confirm it is really NextBSD

uname -a            # ostype reads NextBSD, not FreeBSD
nextbsd-version     # userland build stamp, e.g. 20260820-185023
nextbsd-version -k  # the installed kernel's version
nextbsd-version -r  # the running kernel's version (same as uname -r)
cat /etc/os-release

Userland and kernel are built in separate repositories at different times, so nextbsd-version and -k legitimately disagree. Showing that gap is precisely what the command is for.

5. Networking

ipconfigd, Darwin's DHCPv4 client, configures the first Ethernet interface it finds at boot. Under QEMU's user-mode networking you will get 10.0.2.15/24, gateway 10.0.2.2, DNS at 10.0.2.3.

ipconfig getifaddr em0   # the interface's IP address
ipconfig ifcount         # how many interfaces there are
netstat -rn              # routing table, exactly as you'd expect

ipconfig(8) here is Darwin's tool, not FreeBSD's ifconfig(8). Both are on the image and they are not interchangeable.

Where next

Clone this wiki locally