dd(8) on Solnix vs Linux and the BSDs

On Solnix, dd is the illumos dd at /usr/bin/dd, documented in section 8 (the other systems document it in section 1). The size suffixes (k, b, w, and x for multiplication) and the conversion names (asciib, ebcdicb, ibmb) differ from Linux and the BSDs. The operand set also differs: stride operands, and iseek/oseek described separately from skip/seek.

What Solnix runs

A default Solnix system runs the illumos dd at /usr/bin/dd, and no other variants are shipped. The Solnix text in the bundle is cut off partway through the conv= list (after swab). Where this page says the Solnix text does not show something, it may be in the cut part, so check dd(8) on the system.

Differences

Compared withTopicWhat differs
Linuxsize suffixesSolnix numbers may end in k (1024), b (512) or w (2), and x multiplies numbers. The Linux page lists c, w, b, kB (1000), K (1024), MB, M, G and larger suffixes. Linux documents no lowercase k, and Solnix documents no kB, K, M or G. Use plain digits for portability.
Source: Solnix dd(8) DESCRIPTION (k, b, w, x); Linux dd(1) DESCRIPTION (multiplicative suffixes)
FreeBSD, NetBSDiseek and oseek are not synonymsSolnix documents iseek and oseek as separate operands from skip and seek. iseek is for disk files 'where skip can be incredibly slow'. Solnix skip and seek may read the blocks instead of seeking. On FreeBSD and NetBSD, iseek is synonymous with skip and oseek with seek. The Linux page also lists them as aliases.
Source: Solnix dd(8) skip=, iseek=, seek=, oseek=; FreeBSD dd(1) iseek=, oseek=; NetBSD dd(1) iseek=, oseek=; Linux dd(1) seek=N (or oseek=N), skip=N (or iseek=N)
all fourstride operandsSolnix has istride=n, ostride=n and stride=n, which read or write every nth block and skip n-1 blocks between records. None of the Linux, FreeBSD, OpenBSD or NetBSD pages in the bundle list these operands.
Source: Solnix dd(8) ostride=, istride=, stride=; Linux/FreeBSD/OpenBSD/NetBSD dd(1) operand lists
FreeBSD, OpenBSD, NetBSDconversion namesSolnix offers ascii, ebcdic and ibm plus asciib, ebcdicb and ibmb, which use BSD-compatible character translations. FreeBSD and NetBSD name their alternate maps oldascii, oldebcdic and oldibm. OpenBSD has only ascii, ebcdic and ibm. The manuals do not say whether the maps are identical across systems.
Source: Solnix dd(8) conv= (asciib, ebcdicb, ibmb); FreeBSD dd(1) conv= ascii, oldascii, ebcdic, ibm, oldebcdic, oldibm; NetBSD dd(1) conv= ascii, oldascii; OpenBSD dd(1) conv=
FreeBSD, OpenBSD, NetBSDcbs and implied block/unblockOn FreeBSD, OpenBSD and NetBSD, ascii implies unblock and ebcdic/ibm imply block when cbs is given. On Solnix, with cbs unset or 0 the character-set conversions keep the block structure, and block/unblock become a plain copy. The Solnix cbs= entry separately says block or unblock with cbs 0 gives unspecified results.
Source: Solnix dd(8) DESCRIPTION (cbs paragraph), cbs=; FreeBSD dd(1) conv= ascii, ebcdic; OpenBSD dd(1) conv= ascii, ebcdic, ibm
OpenBSD, NetBSDshort readsSolnix dd processes the block that read actually returned, which may be smaller than the block size, unless the input flag fullblock is used. OpenBSD and NetBSD say short reads are aggregated to form the output block, and the bundle shows no fullblock option for them. Linux and FreeBSD list iflag=fullblock.
Source: Solnix dd(8) DESCRIPTION (fullblock); OpenBSD dd(1) DESCRIPTION; NetBSD dd(1) DESCRIPTION; Linux dd(1) iflag fullblock; FreeBSD dd(1) iflag=fullblock
all fourstatus and progress reportingThe Solnix operand text in the bundle shows no status= operand. Linux has status=none|noxfer|progress, FreeBSD the same, and OpenBSD none|noxfer. NetBSD has progress=n (prints a dot every n blocks) and msgfmt= instead. Linux also prints statistics on SIGUSR1. Solnix reports block counts at completion.
Source: Solnix dd(8) DESCRIPTION (last paragraph); Linux dd(1) status=LEVEL, USR1; FreeBSD dd(1) status=; OpenBSD dd(1) status=; NetBSD dd(1) progress=, msgfmt=
Linux, FreeBSD, NetBSDiflag and oflagLinux, FreeBSD and NetBSD document iflag= and oflag=. On NetBSD, once oflag is given it must include creat to write a nonexistent file. The Solnix operand text in the bundle shows no iflag or oflag operand and mentions only an input flag fullblock.
Source: Linux dd(1) iflag=, oflag=; FreeBSD dd(1) iflag=, oflag=; NetBSD dd(1) oflag=; Solnix dd(8) DESCRIPTION (fullblock)
FreeBSDFreeBSD-only operandsFreeBSD has fillchar=c (pad character) and speed=n (bytes per second limit). The Solnix, OpenBSD and NetBSD text in the bundle shows neither.
Source: FreeBSD dd(1) fillchar=, speed=
NetBSDcount=0NetBSD documents that count=0 copies nothing after performing any skip or seek. The Solnix and other pages do not describe count=0.
Source: NetBSD dd(1) count=; Solnix dd(8) count=
Linuxcommand-line optionsLinux dd accepts --help and --version in addition to operands. The Solnix synopsis is dd [operand=value] ... with no options.
Source: Linux dd(1) SYNOPSIS, Options are; Solnix dd(8) SYNOPSIS

Standards

  • POSIX: dd is a POSIX.1-2024 utility.

Writing portable scripts

  • Stick to if=, of=, bs=, count=, skip=, seek= and conv=notrunc,noerror,sync, with plain decimal sizes (for example bs=1048576). Suffixes, status=, iflag/oflag and iseek/oseek differ between systems.
  • Do not rely on dd's output text. Completion reporting and progress options differ on each system.

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.