devfsadm(8) on Solnix vs Linux and the BSDs

devfsadm is the illumos command at /usr/sbin/devfsadm that maintains the /dev namespace and the path_to_inst(5) database: it loads drivers, attaches device instances and creates the /dev links. Linux udevadm and FreeBSD devfs/devctl cover only parts of this, so there is no one-to-one flag mapping.

What Solnix runs

A default Solnix system runs the illumos devfsadm at /usr/sbin/devfsadm. No other variants are shipped. The daemon form, /usr/lib/devfsadm/devfsadmd, starts at boot. The page says drvconfig, disks, tapes, ports, audlinks and devlinks are implemented as links to devfsadm.

Differences

Compared withTopicWhat differs
Linuxmodel: command that builds /dev vs control tool for a daemondevfsadm itself creates the /dev links and loads drivers, and its daemon form devfsadmd handles kernel reconfiguration events. udevadm does not populate /dev. It controls the running systemd-udevd, requests kernel events, manages the event queue and queries the udev database.
Source: Solnix devfsadm(8) DESCRIPTION; Linux udevadm(8) DESCRIPTION
Linuxre-scanning devicesPlain devfsadm with no options tries to load every driver and attach all possible device instances, then creates the /dev links. Linux uses udevadm trigger to request kernel events and udevadm settle to wait for the queue. The trimmed bundle shows only their synopses.
Source: Solnix devfsadm(8) DESCRIPTION; Linux udevadm(8) SYNOPSIS (trigger, settle)
Linuxquerying device informationdevfsadm has no query mode. Its -v only prints changes made to /dev. On Linux, udevadm info queries the udev database (--query name, symlink, path, property, all) and can export it with -e/--export-db.
Source: Solnix devfsadm(8) -v, OPTIONS; Linux udevadm(8) info -q, -e
Linuxdry run and debuggingdevfsadm -s suppresses changes to /dev and is meant to be combined with -v. -n stops it loading drivers or adding nodes to the kernel device tree. udevadm test has a separate debug mode, and its --dry-run flag appears in the flag list; the trimmed text does not describe it.
Source: Solnix devfsadm(8) -s, -n; Linux udevadm(8) SYNOPSIS (test), option flag list
Linuxcleaning stale entriesdevfsadm -C removes dangling /dev links that are not normally removed, and -c restricts this to a device class. udevadm info -c/--cleanup-db cleans the udev database, which is a different object.
Source: Solnix devfsadm(8) -C, -c; Linux udevadm(8) info -c, --cleanup-db
FreeBSD/dev rules vs /dev constructionFreeBSD devfs(8) does not build /dev. It sets rules (path and type conditions; group, hide, mode, user and unhide actions) on devfs(4) mounts, and rule sets are reloaded with service devfs restart. devfsadm takes no rule language. It reads an alternate devlink.tab with -t (default /etc/devlink.tab).
Source: FreeBSD devfs(8) DESCRIPTION, Rule Specification; Solnix devfsadm(8) -t
FreeBSDoperating on another /dev treedevfs -m mount-point works on a devfs(4) mount and defaults to /dev. devfsadm -r root_dir presumes the /dev trees are under root_dir rather than /, and the page makes no other assumption about root_dir.
Source: FreeBSD devfs(8) -m; Solnix devfsadm(8) -r
FreeBSDdriver attach and detachSolnix devfsadm -i driver_name configures only the devices of the named driver, and -c limits work to a device class (disk, tape, port, audio, pseudo). FreeBSD devctl acts on one named device: attach, detach, disable, enable, set driver, rescan. Per-device commands are not in the devfsadm page.
Source: Solnix devfsadm(8) -i, -c; FreeBSD devctl(8) SYNOPSIS and DESCRIPTION
FreeBSD/devices namespacedevfsadm no longer manages /devices, which devfs(4FS) now handles. devfsadm still creates links to nodes in /dev and /devices. The page warns that /devices might not exist or might change, and is not an API. The FreeBSD pages describe no /devices directory.
Source: Solnix devfsadm(8) DESCRIPTION, NOTES; FreeBSD devfs(8) DESCRIPTION
all fourservice management and daemonOn Solnix, svcadm(8) controls devfsadm under SMF. The service svc:/system/device/local:default starts it during reconfiguration boot. Otherwise svc:/system/sysevent:default starts it. Query status with svcs(1). FreeBSD devfs rules are loaded by the devfs rc service.
Source: Solnix devfsadm(8) NOTES; FreeBSD devfs(8) DESCRIPTION
all fourexit statusdevfsadm returns 0 on success and 1 on any error. The bundle does not give exit-status sections for the udevadm, devfs or devctl pages, so finer-grained codes cannot be assumed.
Source: Solnix devfsadm(8) EXIT STATUS

Everyday tasks

TaskSolnixLinuxFreeBSD
create /dev links and attach all devicesdevfsadmudevadm trigger—
wait until pending device events are processed—udevadm settle—
remove dangling /dev linksdevfsadm -C——
show what would change in /dev without changing itdevfsadm -s -v——
query device information—udevadm info -q property -n /dev/sda—
rescan a busdevfsadm -i driver_name—devctl rescan device
change permissions or visibility of device nodes——devfs rule add rulespec; service devfs restart
reload device rules after editing—udevadm control --reloadservice devfs restart

Standards

  • POSIX: devfsadm is not a POSIX.1-2024 utility.
  • Solnix: The page states it does not constitute an API; the /devices directory might not exist or might have different contents in a future release.

Writing portable scripts

  • Do not script against devfsadm, udevadm or devfs/devctl interchangeably. Branch on which tool is present, and prefer stable paths such as /dev/... over parsing tool output.

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.