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.
The manual pages
- Solnix: savecore(8) from
pkgs.solnix.illumos-world-man· illumos.org - FreeBSD: savecore(8) 15.1-RELEASE
- OpenBSD: savecore(8) 8.0
- NetBSD: savecore(8) 11.0
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 with | Topic | What differs |
|---|---|---|
| FreeBSD, OpenBSD, NetBSD | how savecore is started at boot | On 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, NetBSD | output file names | Solnix 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, NetBSD | numbering of saved dumps | Solnix 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 meaning | Solnix -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 dump | Solnix -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, NetBSD | compression options | Solnix 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, NetBSD | kernel 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, NetBSD | checking whether a dump exists | Solnix 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, NetBSD | default directory and device selection | With 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, NetBSD | minfree default | Solnix 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 recovery | Solnix -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,-Land-zmean 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.