savecore(8) on Solnix vs Linux and the BSDs

On Solnix, savecore is the illumos /usr/bin/savecore, run at boot by the dumpadm SMF service. It saves either a compressed vmdump.n or an uncompressed vmcore.n plus unix.n, depending on the dumpadm configuration. Unlike the BSDs, it has no -c (clear dump) and no -N (kernel path) option.

What Solnix runs

A default Solnix system runs the illumos savecore at /usr/bin/savecore. No other variants are shipped. The dump directory and compression behaviour are configured with dumpadm(8), and the service is svc:/system/dumpadm:default.

Differences

Compared withTopicWhat differs
FreeBSD, OpenBSD, NetBSDhow savecore is started at bootOn Solnix, the dumpadm SMF service (svc:/system/dumpadm:default) invokes savecore at each boot. The BSD pages say savecore is meant to be called from /etc/rc (FreeBSD, OpenBSD) or from rc(8) before swapping is enabled (NetBSD).
Source: Solnix savecore(8) DESCRIPTION, NOTES; FreeBSD savecore(8) DESCRIPTION; OpenBSD savecore(8) DESCRIPTION; NetBSD savecore(8) DESCRIPTION
FreeBSD, OpenBSD, NetBSDoutput file namesSolnix writes directory/vmdump.n (compressed) or directory/vmcore.n plus directory/unix.n. FreeBSD writes vmcore.# and info.#. OpenBSD writes bsd.#.core and bsd.#. NetBSD writes netbsd.#.core and netbsd.#.
Source: Solnix savecore(8) DESCRIPTION; FreeBSD savecore(8) DESCRIPTION; OpenBSD savecore(8) DESCRIPTION; NetBSD savecore(8) DESCRIPTION
FreeBSD, OpenBSD, NetBSDnumbering of saved dumpsSolnix replaces n with a number that grows each run in that directory; the page does not mention a bounds file. FreeBSD, OpenBSD and NetBSD take # from the first line of directory/bounds and write it back after each successful run.
Source: Solnix savecore(8) DESCRIPTION; FreeBSD/OpenBSD/NetBSD savecore(8) DESCRIPTION (bounds)
FreeBSD, OpenBSD, NetBSD-c (clear the dump)Solnix savecore has no -c option. FreeBSD, OpenBSD and NetBSD -c clears the dump so later runs ignore it. On Solnix, -d does the reverse: it makes savecore save a dump even if the header says it was already saved.
Source: Solnix savecore(8) SYNOPSIS, -d; FreeBSD savecore(8) -c; OpenBSD savecore(8) -c; NetBSD savecore(8) -c
FreeBSD, OpenBSD, NetBSD-f meaningSolnix -f takes a dumpfile argument and reads the dump from that file instead of the dump device, for example a copy made with dd(8). On FreeBSD, OpenBSD and NetBSD, -f takes no argument and forces a dump to be taken despite a bad or cleared dump.
Source: Solnix savecore(8) -f dumpfile; FreeBSD savecore(8) -f; OpenBSD savecore(8) -f; NetBSD savecore(8) -f
FreeBSD-L live dumpSolnix -L saves a live snapshot to the dump device, then writes it to files in the directory. It needs a dedicated dump device set up with dumpadm(8). The result is not fully self-consistent. FreeBSD -L also dumps the running system, and can be combined with -f, -v, -Z, -z and -m.
Source: Solnix savecore(8) -L; FreeBSD savecore(8) SYNOPSIS, -L
FreeBSD, OpenBSD, NetBSDcompression optionsSolnix has no -z or -Z. Whether the saved dump is compressed follows the dumpadm(8) configuration. FreeBSD has -z (gzip) and -Z (zstd, with -L only). OpenBSD and NetBSD have -z. NetBSD -Z level sets the gzip level.
Source: Solnix savecore(8) DESCRIPTION; FreeBSD savecore(8) -z, -Z; OpenBSD savecore(8) -z; NetBSD savecore(8) -z, -Z level
OpenBSD, NetBSDkernel selection (-N)Solnix has no -N. OpenBSD and NetBSD -N system names the kernel to save instead of the default (/bsd on OpenBSD; the getbootfile(3) result on NetBSD). The Solnix page saves the kernel namelist as unix.n and does not document choosing it.
Source: OpenBSD savecore(8) -N; NetBSD savecore(8) -N; Solnix savecore(8) DESCRIPTION
FreeBSD, NetBSDchecking whether a dump existsSolnix has no option to test for a dump. FreeBSD -C exits 0 if a dump exists and 1 if not. NetBSD -n exits 0 if a dump is present, non-zero otherwise.
Source: FreeBSD savecore(8) -C; NetBSD savecore(8) -n; Solnix savecore(8) OPTIONS
FreeBSD, OpenBSD, NetBSDdefault directory and device selectionWith no directory, Solnix uses the default savecore directory set by dumpadm(8). FreeBSD uses the current directory and NetBSD uses /var/crash. OpenBSD requires a directory in its synopsis. FreeBSD also accepts device arguments; Solnix has none.
Source: Solnix savecore(8) OPERANDS; FreeBSD savecore(8) DESCRIPTION; NetBSD savecore(8) DESCRIPTION; OpenBSD savecore(8) SYNOPSIS
FreeBSD, OpenBSD, NetBSDminfree defaultSolnix assumes a minfree of 1 megabyte when directory/minfree does not exist. The BSD pages describe only the case where the file exists and give no default. Solnix does not say it checks free space before copying.
Source: Solnix savecore(8) DESCRIPTION; FreeBSD/OpenBSD/NetBSD savecore(8) DESCRIPTION (minfree)
FreeBSD, OpenBSD, NetBSD-r read-only recoverySolnix -r opens the dump device or file read-only and changes nothing, so a dump can be recovered from a read-only device. It cannot be combined with -L. The BSD pages document no equivalent.
Source: Solnix savecore(8) -r; FreeBSD/OpenBSD/NetBSD savecore(8) OPTIONS

Standards

  • POSIX: savecore is not a POSIX.1-2024 utility.

Writing portable scripts

  • Do not script against savecore options across systems: -f, -c, -L and -z mean different things or are missing. Branch on the OS and use that system's own flags.
  • Do not hard-code dump file names. Solnix writes vmcore.n and vmdump.n, while the BSDs write vmcore.#, bsd.#.core or netbsd.#.core.

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.