nfsd(8) on Solnix vs Linux and the BSDs
On a default Solnix system nfsd is the illumos daemon /usr/lib/nfs/nfsd, which is not on PATH and is normally started by share(8) and SMF, not by hand. Its single-letter options differ from Linux and the BSDs: -p selects a protocol, -t selects a transport device, and -a means all transports.
The manual pages
What Solnix runs
The illumos daemon is at /usr/lib/nfs/nfsd, outside /usr/bin, /usr/sbin and /sbin. No other variants are shipped. The page recommends against starting it manually. Use svcadm on svc:/network/nfs/server instead, and see nfs(5) for the configuration properties.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | how the server is started | Solnix nfsd is run by share(8) with -a and managed by SMF as svc:/network/nfs/server. Manual starts are discouraged. The other four pages describe running the daemon directly, and FreeBSD also describes enabling it through rc.conf.Source: Solnix nfsd(8) DESCRIPTION, NOTES; FreeBSD nfsd(8) DESCRIPTION (nfs_server_enable); OpenBSD/NetBSD nfsd(8) DESCRIPTION |
| Linux, FreeBSD | -p meaning | Solnix -p takes a protocol, equivalent to the protocol property. On Linux, -p/--port sets the listen port (default 2049). On FreeBSD, -p enables pNFS and takes a pnfs_setup string.Source: Solnix nfsd(8) -p; Linux nfsd(8) -p, --port; FreeBSD nfsd(8) -p |
| all four | -t meaning | Solnix -t takes a device argument and starts nfsd on that transport. On Linux, FreeBSD, OpenBSD and NetBSD, -t takes no argument and selects TCP. NetBSD -t serves TCP only.Source: Solnix nfsd(8) -t device; Linux nfsd(8) -t; OpenBSD nfsd(8) -t; NetBSD nfsd(8) -t |
| FreeBSD | -a meaning | Solnix -a starts nfsd over all connectionless and connection-oriented transports. FreeBSD -a binds to the wildcard IP address, which is the default when no -h is given.Source: Solnix nfsd(8) -a; FreeBSD nfsd(8) -a |
| all four | -r meaning | Solnix has no -r. On Linux, -r enables RDMA. On FreeBSD, OpenBSD and NetBSD, -r re-registers NFS with the RPC port mapper (rpcbind or portmap) without starting servers.Source: Solnix nfsd(8) SYNOPSIS; Linux nfsd(8) -r, --rdma; FreeBSD/OpenBSD/NetBSD nfsd(8) -r |
| all four | server count and default | Solnix takes nservers as an operand and defaults to 1 if it is omitted, with 16 as the usual value. Linux defaults to eight threads. OpenBSD and NetBSD default to four, and OpenBSD allows at most 20. FreeBSD uses -n, which is deprecated. Check the Solnix default before relying on it.Source: Solnix nfsd(8) Operands nservers; Linux nfsd(8) nproc; OpenBSD nfsd(8) -n; NetBSD nfsd(8) -n; FreeBSD nfsd(8) -n |
| Linux, OpenBSD, NetBSD | default transports | Solnix starts TCP and UDP for NFS versions 2 and 3, and TCP only for version 4. Linux defaults to TCP, and UDP is off unless -u is given. OpenBSD starts UDP servers unless -t is given. NetBSD serves both TCP and UDP by default.Source: Solnix nfsd(8) DESCRIPTION; Linux nfsd(8) -t, -u; OpenBSD nfsd(8) DESCRIPTION, -t, -u; NetBSD nfsd(8) -t |
| Linux | changing a running server | On Linux, rerunning rpc.nfsd with a different thread count adjusts the running server, and rpc.nfsd 0 stops all threads. Solnix says a running nfsd must be stopped before another nfsd command is invoked. Source: Solnix nfsd(8) DESCRIPTION; Linux nfsd(8) nproc paragraph |
| all four | stopping and restart signals | On Solnix, SIGTERM stops nfsd and SMF does not restart it. Other signals such as SIGINT can restart it. The Linux, FreeBSD, OpenBSD and NetBSD pages in the bundle do not describe signal handling. Source: Solnix nfsd(8) NOTES |
| all four | privileged-port requirement | Solnix can require clients to use privileged ports if nfssrv:nfs_portmon is set to 1 in /etc/system. It is 0 by default. The other four pages in the bundle document no such setting.Source: Solnix nfsd(8) Usage |
| all four | privilege and exit status | Solnix nfsd needs {PRIV_SYS_NFS} and write access to /var/run. Its exit status is 0 if started and 1 if it failed. OpenBSD and NetBSD exit 0 on success and >0 on error.Source: Solnix nfsd(8) DESCRIPTION, EXIT STATUS; OpenBSD nfsd(8) EXIT STATUS; NetBSD nfsd(8) EXIT STATUS |
| FreeBSD, NetBSD | binding, debugging and PID file | Solnix has no option to bind to a given address, run in the foreground with debugging, or pick a PID file. FreeBSD has -h bindip and -P pidfile (default /var/run/nfsd.pid). NetBSD has -4 and -6 for IP version and -d for debugging in the foreground.Source: Solnix nfsd(8) SYNOPSIS; FreeBSD nfsd(8) -h, -P; NetBSD nfsd(8) -4, -6, -d |
Everyday tasks
| Task | Solnix | Linux | FreeBSD | OpenBSD | NetBSD |
|---|---|---|---|---|---|
| enable the NFS server at boot | svcadm enable svc:/network/nfs/server | — | nfs_server_enable="YES" in rc.conf(5) | — | — |
| start the daemon directly with TCP | /usr/lib/nfs/nfsd -p tcp nservers (not recommended) | rpc.nfsd -t nproc | nfsd -t -n num_servers | nfsd -t -n num_servers | nfsd -t -n num_threads |
Standards
- POSIX: nfsd is not a POSIX.1-2024 utility.
- OpenBSD: The page says nfsd listens at the port given in the NFS server specification, citing RFCs 1094 and 1813.
Writing portable scripts
- Do not call nfsd directly in portable scripts. On Solnix use svcadm on svc:/network/nfs/server, and use each system's own service mechanism elsewhere.
- Do not rely on
-p,-tor-ameaning the same thing across systems. Solnix and FreeBSD give-pand-aunrelated meanings, and Solnix-ttakes an argument where the others take none.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.