Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

LX-branded zones (Linux on illumos)

illumos zones come in brands — a brand decides which userland and system-call environment a zone presents. The most interesting brand for a mixed shop is the LX brand: an LX-branded zone presents the Linux system- call interface, so unmodified Linux binaries run directly on the illumos kernel — no virtual machine, no emulation of a whole CPU, no second kernel.

On illumos generally LX zones are a real, shipping feature — SmartOS runs Linux workloads this way in production. On solnix LX support is a roadmap item, not yet built (see the solnix plan below). This page describes the feature and the plan honestly; nothing here is a shipped solnix capability.

What an LX-branded zone is

A native zone runs illumos userland on the illumos kernel. An LX zone runs a Linux userland (a Linux distribution’s files — Debian, Alpine, etc.) on the same illumos kernel. The trick is a brand: a thin translation layer that implements the Linux system-call ABI in terms of illumos kernel facilities. When a Linux binary in the zone calls, say, epoll_create or clone, the LX brand maps it to the illumos equivalent.

The result:

  • Linux ELF binaries run as-is — no recompilation, no patchelf, no VM.
  • Only one kernel runs (the illumos kernel), so there is no hypervisor overhead and no second OS to manage. It is a zone, with a zone’s near-native performance.
  • The zone still gets full illumos integration underneath — a ZFS dataset, a Crossbow VNIC, resource controls, and observability from the global zone with DTrace.

Compare the alternatives: a Linux VM (bhyve/KVM) runs a whole second kernel and pays for it; QEMU user-mode emulation is slow. The LX brand is neither — it is a syscall-translation shim, so Linux processes are just illumos processes wearing a Linux ABI.

How SmartOS pioneered the modern LX brand

An early lx brand existed in OpenSolaris but bit-rotted. The modern LX brand — the one that runs contemporary 64-bit Linux distributions — was built and is maintained by the SmartOS community (Joyent, now MNX). SmartOS’s whole model is “everything in a zone,” and LX zones let it run the vast catalog of Linux software (and Linux Docker images, via its Docker-to-zone layer) alongside native illumos zones on one kernel. That work lives in illumos-gate and the SmartOS platform, and is the reference implementation of LX today.

The solnix plan (roadmap)

solnix intends to pull LX-zone support in from SmartOS so that a solnix machine can run Linux workloads alongside native illumos ones — without a VM. The intent, stated plainly:

  • Bring the SmartOS LX brand into solnix so Linux binaries run in an LX zone on a solnix host.
  • Let users run Linux Docker-style workloads / Linux-only binaries that have no illumos build, next to native solnix (illumos + Nix) zones, on the same kernel.
  • Eventually wire this into solnix’s declarative model — a Nix-described LX zone, the same way native zones are a natural target for a solnix.zones.* module (see Zones).

Why it matters

Not everything has an illumos build. An LX zone means you do not have to choose between “illumos-native” and “the Linux software I need” — you run the Linux thing in an LX zone and the illumos-native things in native zones, one kernel, one machine, full observability across all of it. For a solnix user that is the difference between “illumos for the workloads that have illumos builds only” and “illumos as a general-purpose host that also runs your Linux workloads.”

Honest status

This is not in solnix today. The prerequisites come first: a bootable native solnix system (the bootstrap — see How solnix is built) and the zone tooling generally (Zones is early). Pulling in the SmartOS LX brand is a stated direction, not a shipped feature. Treat LX-on-solnix as “planned, and here is why we plan it,” not “available now.”

Further reading