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.

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 withTopicWhat differs
all fourrole of initSolnix 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, NetBSDrun levels vs ttys/rcSolnix 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
FreeBSDrun level meaningsOn 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
Linuxoptions and telinitLinux 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
Linuxrun level and SMF milestonesSolnix 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, NetBSDreloading configurationOn 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 fourinit environment fileSolnix 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, NetBSDrestart if init diesSolnix 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, NetBSDsingle-user modeSolnix 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, NetBSDshutdown scriptsFreeBSD 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.