Vertex LinuxDocs
First-party tools

VX

Build and use Vertex Linux's selectable BSD-oriented multicall userland.

VX bundles a growing set of FreeBSD-derived userland tools into one Linux binary. Applets are selected either by the first argument to vx or by the command name in argv[0] when the binary is reached through an installed symlink.

Note: The available command set is decided at build time. A default build enables every applet, while -Dutils can produce a smaller purpose-built binary.

Invocation model

Call an applet as a vx subcommand:

vx grep pattern file
vx find . -name '*.c'
vx depmod -a

Installed symlinks expose the traditional command names:

grep pattern file
find . -name '*.c'
depmod -a

When invoked without an applet, vx prints its usage and the applets compiled into that binary. An unknown applet is rejected before dispatch.

Included applets

The current default build registers these applets:

CategoryApplets
Patching and differencespatch, diff, cmp, diff3, sdiff
Search and traversalgrep, egrep, fgrep, rgrep, find, xargs, which
Compressiongzip, gunzip, zcat, gzcat, uncompress
PCI inspectionlspci, setpci
Kernel modulesdepmod

Several command names share one implementation. The gzip applet handles gzip, gunzip, zcat, gzcat, and uncompress; the grep applet handles the full grep command family.

Select utilities at build time

VX uses Meson and enables all utilities by default:

meson setup builddir
meson compile -C builddir
meson test -C builddir

Build only a selected subset with -Dutils:

meson setup builddir -Dutils=grep,find,xargs
meson compile -C builddir
meson test -C builddir

The selection controls the compiled source set, dispatch table, installed command symlinks, man pages, and registered tests. An empty selection is rejected; use all for the complete build.

Optional build dependencies

Dependencies are required only when their related applets are enabled.

Applet groupAdditional dependencies
gzipzlib and liblzma
findACL library and yacc or Bison
depmodzlib, libzstd, and liblzma

PCI utilities share the local PCI support code. All BSD-derived translation units are built with the Linux compatibility header force-included.

Installed commands and supporting scripts

Meson installs selected applet names as symlinks to vx. Gzip builds also install the companion scripts zdiff, zforce, zmore, znew, gzexe, zgrep, and zless, plus aliases for zcmp, zegrep, and zfgrep.

Man pages are installed only for enabled utilities. This keeps reduced builds consistent across the executable, command surface, tests, and documentation.

Test coverage

meson test runs shell-based tests only for enabled applets. The current suite covers:

  • patch and the diff family
  • which, grep, find, and xargs
  • gzip
  • lspci and setpci
  • depmod

The test harness exposes the newly built binary through the VX environment variable so each test exercises the selected multicall executable directly.

Behavior and compatibility

VX intentionally preserves BSD behavior where it differs from GNU userland. It uses compatibility shims for BSD APIs and types that are not provided directly by Linux libc.

  • Scripts that depend on GNU-specific flags should be checked against the corresponding VX applet.
  • Applet availability must not be assumed when using a reduced -Dutils build.
  • PCI and kernel-module tools are part of the same deterministic multicall dispatch model as the traditional userland commands.

See also