uname(1) on Solnix vs Linux and the BSDs

On Solnix, uname is the illumos uname, found at /usr/bin/uname and /sbin/uname. It has two options the other systems lack: -S sets the nodename and -X prints SCO-style expanded output. Solnix also discourages -m in favour of -p, which differs from the usual meaning of -m elsewhere.

What Solnix runs

A default Solnix system runs the illumos uname at /usr/bin/uname and /sbin/uname. No other variants are shipped. The page comes from pkgs.solnix.illumos-world-man.

Differences

Compared withTopicWhat differs
all four-S sets the nodenameSolnix uname -S system_name changes the nodename. Only the super-user may do it, and it does not persist across reboots. The Linux, FreeBSD, OpenBSD and NetBSD pages document no option that sets anything.
Source: Solnix uname(1) SYNOPSIS, -S; Linux, FreeBSD, OpenBSD, NetBSD uname(1) SYNOPSIS
all four-X expanded outputSolnix uname -X prints one element per line in the format SCO UNIX expects: system name, node, release, version, machine, CPU count, and more. BusType, Serial and Users are set to "unknown". None of the other pages document -X.
Source: Solnix uname(1) -X; Linux, FreeBSD, OpenBSD, NetBSD uname(1) SYNOPSIS
FreeBSD, OpenBSD-m versus -pSolnix calls -m "machine hardware name (class)", discourages it, and says to use -p for the ISA or processor type. FreeBSD -m is the hardware platform and -p the processor architecture. OpenBSD -m is the kernel architecture and -p the application architecture.
Source: Solnix uname(1) -m, -p, NOTES; FreeBSD uname(1) -m, -p; OpenBSD uname(1) -m, -p
all four-i meaningSolnix -i prints the platform name. Linux -i prints the hardware platform and marks it non-portable. FreeBSD -i prints the kernel ident. The OpenBSD and NetBSD pages have no -i.
Source: Solnix uname(1) -i; Linux uname(1) -i, --hardware-platform; FreeBSD uname(1) -i; OpenBSD and NetBSD uname(1) SYNOPSIS
OpenBSD, NetBSD-oSolnix -o prints the name of the kernel/OS. Linux -o prints the operating system, and FreeBSD -o is a synonym for -s. The OpenBSD and NetBSD pages have no -o, so scripts using it fail there.
Source: Solnix uname(1) -o; Linux uname(1) -o; FreeBSD uname(1) -o; OpenBSD and NetBSD uname(1) SYNOPSIS
all fourwhat -a printsThe Solnix page says -a prints "basic information currently available" and lists no fields. FreeBSD, OpenBSD and NetBSD define -a as -m -n -r -s -v. Linux omits -p and -i if unknown. Do not parse -a output by position.
Source: Solnix uname(1) -a; FreeBSD uname(1) -a; OpenBSD uname(1) -a; NetBSD uname(1) -a; Linux uname(1) -a
FreeBSDFreeBSD-only flags and environmentFreeBSD has -b (kernel build-id), -K (kernel version) and -U (user-environment version). Setting UNAME_ followed by a flag letter overrides the value. The Solnix page documents none of these.
Source: FreeBSD uname(1) -b, -K, -U, ENVIRONMENT; Solnix uname(1) ENVIRONMENT VARIABLES
Linuxlong optionsLinux (GNU coreutils) accepts long options such as --kernel-name, --nodename, --kernel-release, --machine, plus --help and --version. The Solnix synopsis lists only single-letter options.
Source: Linux uname(1) DESCRIPTION; Solnix uname(1) SYNOPSIS
OpenBSDrelease string formatSolnix warns that release levels may be x.y.z (such as 5.5.1), not only x.y, so scripts must not assume two fields. OpenBSD documents the -r format as digit.digit.
Source: Solnix uname(1) NOTES; OpenBSD uname(1) -r
FreeBSD, OpenBSDmulti-option output layoutFreeBSD and OpenBSD print all selected fields on one line separated by spaces when -a or several options are given. The Solnix page does not describe the layout of multi-option output, except that -X uses one element per line.
Source: FreeBSD uname(1) DESCRIPTION; OpenBSD uname(1) DESCRIPTION; Solnix uname(1) OPTIONS
FreeBSDarch and platform detectionSolnix NOTES say uname -sp gives hardware platform information and uname -sr gives OS name and release. It says arch -k and uname -m return equivalent values, and third-party programs should avoid both.
Source: Solnix uname(1) NOTES

Standards

  • POSIX: uname is a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Standard.
  • FreeBSD: The uname command is expected to conform to the IEEE Std 1003.2 (“POSIX.2”) specification.
  • OpenBSD: The uname utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flag -p is an extension to that specification.
  • NetBSD: The uname utility conforms to IEEE Std 1003.2-1992 (“POSIX.2”). The -p option is an extension to the standard.

Writing portable scripts

  • Stick to -s, -n, -r, -v and -a without parsing its fields. These are documented on all five systems. Avoid -i, -o, -m and -p for portable logic, since they mean different things or are missing.
  • Do not assume the release string is x.y. Solnix says it could be x.y.z.

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.