-
Notifications
You must be signed in to change notification settings - Fork 6
How NextBSD Differs
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.
| 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 |
The kernel is FreeBSD-derived and ABI-compatible, so:
-
pkgworks, and FreeBSD packages install and run. See Installing Packages. -
Standard tools are all present —
ps,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.
+----------------+ +----------------+ +------------------+
| 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.
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.
- Command Reference — the commands that replace familiar ones
- Project Repositories — how it is all built
NextBSD is pre-production — continuous builds only, no stable release yet. Questions are welcome in Discussions.