-
Notifications
You must be signed in to change notification settings - Fork 6
Filesystem Layout
NextBSD uses an explicit four-domain layout. Every system resource lives under a domain root, so it is always clear who owns a file and whether an OS upgrade may replace it.
| Domain | Root | Owner and meaning |
|---|---|---|
| System | /System/Library |
Provided by the OS. Treat as immutable — upgrades replace it. |
| Local | /Local/Library |
This machine. Admin-installed, survives OS upgrades. |
| Network | /Network/Library |
Network-shared. Reserved; not used yet. |
| User | ~/Library |
Per-user. |
On macOS, the bare /Library is the Local domain. NextBSD does not do that.
Every domain has an explicit root, so where Apple would use /Library, NextBSD
uses /Local/Library.
The reason is that a bare /Library makes it ambiguous whether something is
OS-owned or admin-owned, which matters when an upgrade decides what it may
overwrite. Keeping /System strictly for the OS and /Local strictly for the
machine removes the guesswork.
If you are porting instructions written for macOS, the mechanical translation is
/Library/… → /Local/Library/….
| Path | Used by | Purpose |
|---|---|---|
/System/Library/LaunchDaemons/ |
launchd (PID 1) | OS daemon plists — scanned first |
/Local/Library/LaunchDaemons/ |
launchd (PID 1) | Third-party daemon plists — scanned second |
/System/Library/Extensions/ |
kextd, kextload
|
Kernel extensions (drivers) |
/dev/ioregistry |
ioreg, libIOKit
|
The in-kernel IOKit registry |
/boot/kernel/kernel |
loader | The kernel |
/etc/os-release |
anything asking what OS this is | Name and build stamp |
/bin/nextbsd-version |
you | Build version reporting |
On stock FreeBSD, /boot/kernel holds the kernel plus a tree of .ko modules
that kldload pulls in on demand. NextBSD ships no .ko tree — the image
build removes it, so /boot/kernel contains only kernel itself.
Two consequences worth knowing:
- Anything a driver needs must be compiled into the kernel; there is no autoload path to fall back on.
- Drivers that are separately loadable arrive as kernel extensions under
/System/Library/Extensions/, handled bykextload/kextstat, notkldload.
Everything you expect from a BSD is still where it should be — /etc, /usr,
/var, /usr/local for packages, /home for users. The four-domain model sits
alongside the traditional hierarchy rather than replacing it.
Package-installed software from pkg lands under /usr/local exactly as it does
on FreeBSD.
- Service Management with launchd — the two LaunchDaemons directories in practice
-
Installing Packages — where
pkgputs things
NextBSD is pre-production — continuous builds only, no stable release yet. Questions are welcome in Discussions.