init(8) on Solnix vs Linux and the BSDs
On Solnix, init is the illumos init at /usr/sbin/init and /sbin/init. It starts the SMF daemons svc.configd and svc.startd and still reads /etc/inittab. The BSDs drive init from ttys(5) and rc(8) and have no run levels, and it takes run-level arguments rather than boot options.
The manual pages
What Solnix runs
A default Solnix system runs the illumos init at /usr/sbin/init and /sbin/init. No other variants are shipped. telinit is linked to /sbin/init (the page gives /etc/telinit in the synopsis). The page says run levels and booting are provided for compatibility and are made obsolete by SMF (smf(7)).
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | role of init | Solnix init starts svc.configd(8) and svc.startd(8) and restarts them if they fail. It runs /etc/inittab entries only for backwards compatibility. Linux init creates processes from /etc/inittab. The BSD inits run rc(8) and manage ttys(5) lines.Source: Solnix init(8) DESCRIPTION; Linux init(8) DESCRIPTION; FreeBSD init(8) DESCRIPTION; OpenBSD init(8) DESCRIPTION; NetBSD init(8) DESCRIPTION |
| FreeBSD, OpenBSD, NetBSD | run levels vs ttys/rc | Solnix has eight run levels (0-6, S/s), changed by running init or telinit with a one-character argument. OpenBSD and NetBSD have no run-level arguments and take only -s (and -f on OpenBSD). FreeBSD accepts a run-level argument only when init is run as a user process.Source: Solnix init(8) SYNOPSIS, Run Level Defined; OpenBSD init(8) SYNOPSIS; NetBSD init(8) SYNOPSIS; FreeBSD init(8) SYNOPSIS |
| FreeBSD | run level meanings | On Solnix, init 0 goes into firmware, 5 shuts down and removes power if possible, and 6 reboots. FreeBSD maps run level 0 to halt signals (SIGUSR1 halt, SIGUSR2 halt and power off), 1 to single-user and 6 to reboot, via signals to PID 1. Source: Solnix init(8) OPTIONS 0, 5, 6; FreeBSD init(8) run-level table |
| Linux | options and telinit | Linux init takes -a, -s, -b, -z and --version, and telinit takes -t and -e. The Solnix synopsis shows only run-level arguments (0123456abcQqSs) for init and telinit, with no dash options.Source: Linux init(8) SYNOPSIS; Solnix init(8) SYNOPSIS |
| Linux | run level and SMF milestones | Solnix run levels map to SMF milestones: 1 to milestone/single-user:default, 2 to multi-user:default, 3 to multi-user-server:default. Linux describes /etc/init.d and /etc/rc{runlevel}.d scripts, not SMF milestones.Source: Solnix init(8) OPTIONS 1, 2, 3; Linux init(8) CONFORMING TO |
| FreeBSD, OpenBSD, NetBSD | reloading configuration | On Solnix, init Q or init q makes init re-read /etc/inittab. On the BSDs, send SIGHUP to PID 1 to re-read ttys(5), for example kill -s HUP 1 on OpenBSD and NetBSD.Source: Solnix init(8) inittab Additions, OPTIONS Q,q; OpenBSD init(8) DESCRIPTION; NetBSD init(8) DESCRIPTION; FreeBSD init(8) DESCRIPTION |
| all four | init environment file | Solnix init reads /etc/default/init at boot to set TZ and locale variables such as LANG and LC_CTYPE. Linux init sets PATH, INIT_VERSION, RUNLEVEL, PREVLEVEL and CONSOLE for its children. The BSD pages shown do not mention an equivalent file.Source: Solnix init(8) init and System Booting; Linux init(8) ENVIRONMENT |
| FreeBSD, OpenBSD, NetBSD | restart if init dies | Solnix restarts init with process-ID 1 if it exits for any reason other than system shutdown. On FreeBSD, OpenBSD and NetBSD, if init dies the system reboots itself. Source: Solnix init(8) init Failure; FreeBSD init(8) DESCRIPTION; OpenBSD init(8) DESCRIPTION; NetBSD init(8) DESCRIPTION |
| FreeBSD, OpenBSD, NetBSD | single-user mode | Solnix single-user mode (init S or s) opens /dev/console and invokes /sbin/su. The BSDs start a super-user shell on the console and check the password unless the ttys(5) console entry is marked secure.Source: Solnix init(8) init and System Booting (S or s); FreeBSD init(8) DESCRIPTION; OpenBSD init(8) DESCRIPTION; NetBSD init(8) DESCRIPTION |
| FreeBSD, OpenBSD, NetBSD | shutdown scripts | FreeBSD and OpenBSD run /etc/rc.shutdown at shutdown, and FreeBSD also runs /etc/rc.final. On Solnix, a run level change sends SIGTERM, waits at least five seconds, then sends SIGKILL to processes not defined in the target run level.Source: FreeBSD init(8) DESCRIPTION; OpenBSD init(8) DESCRIPTION; Solnix init(8) Run Level Changes |
Standards
- POSIX: init is not a POSIX.1-2024 utility.
- Linux: CONFORMING TO: init is compatible with the System V init.
Writing portable scripts
- Do not use run-level arguments such as init 6 or init 0 in scripts meant for the BSDs. Use shutdown(8), halt(8) or reboot(8) instead.
- Do not rely on
/etc/inittab.The BSDs use ttys(5) and rc(8), and Solnix uses SMF for services.
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.