Skip to content

How NextBSD Differs

pkgdemon edited this page Aug 21, 2026 · 2 revisions

NextBSD is derived from FreeBSD, and most of what you know still applies. The differences are concentrated in the system plumbing — process one, service management, logging, device events and network configuration — all of which come from Darwin instead.

Side by side

Other BSDs NextBSD
init(8) is PID 1 launchd(8) is PID 1
Services via rc(8)rc.conf plus rc.d/* scripts Services as .plist files under /System/Library/LaunchDaemons/
The base syslogd(8) Darwin's syslogd (Apple System Logger) plus notifyd as a cross-process event bus
Device events via devd/devmatch (FreeBSD), devpubd/drvctl (NetBSD), hotplugd (OpenBSD) In-kernel IORegistry at /dev/ioregistry, browsed with ioreg
Modules via kldload (FreeBSD) or modload/modctl (NetBSD); OpenBSD dropped them Kernel extensions via kextload/kextstat; the kld* CLIs are retired, the syscalls remain
A base DHCP client — dhclient, dhcpcd, dhcpleased ipconfigd — DHCPv4, ARP probing, lease renewal, publishing to SCDynamicStore
mdnsd, if installed Darwin's mDNSResponder with the full client API
Nothing equivalent configd and SCDynamicStore — the system-wide key/value store Darwin daemons expect
Nothing equivalent Mach IPC in-kernel, with libsystem_kernel, libdispatch, libxpc, liblaunch and libCoreFoundation in userland
uname -s names the upstream BSD uname -s is NextBSD; nextbsd-version reports build stamps

What has not changed

The kernel is FreeBSD-derived and ABI-compatible, so:

  • pkg works, and FreeBSD packages install and run. See Installing Packages.
  • Standard tools are all presentps, top, netstat, ifconfig, vi, sh, find, grep.
  • UFS, GEOM, jails, the network stack and the rest of the kernel behave as FreeBSD does.
  • Ports and third-party software generally build without modification.

The POSIX command suites — file_cmds, shell_cmds, text_cmds, adv_cmds, system_cmds — deliberately come from FreeBSD, not Darwin. For generic POSIX tools Apple's versions buy nothing, so NextBSD uses curated FreeBSD source instead.

What runs at boot

+----------------+      +----------------+      +------------------+
|   launchctl    |----->|    launchd     |<-----| .plist files in  |
| /bin/launchctl |      |  /sbin/launchd |      | /System/Library/ |
+----------------+      | (PID 1)        |      |   LaunchDaemons/ |
                        +----------------+      +------------------+
                                |
                                | starts + monitors
                                v
   +----------------+----------------+---------------+---------------+
   | syslogd + ASL  |   notifyd      | mDNSResponder |   configd     |
   | ASL log store  | event pub/sub  | Bonjour/DNS-SD| SCDynamicStore|
   +----------------+----------------+---------------+---------------+
                                                     |
                                                     | publishes to
                                                     v
                                            +------------------+
                                            |  ipconfigd       |
                                            |  (DHCP + lease)  |
                                            +------------------+

These talk to each other over Mach IPC, implemented in-kernel and reached from userland through libsystem_kernel. Daemons needing a property store use configd's SCDynamicStore via libSystemConfiguration.

Heritage

This project is a re-implementation of the original NextBSD, not a fork of it. It reuses some of the original's solutions — libxpc among them, carrying enhancements from ravynOS — but is built entirely differently.

For the long technical account of what was ported and how, see PORTING.md in the main repository.

See also

Clone this wiki locally