# fixpoint-linux $ qemu-system-x86_64 -drive file=fixpoint.raw▊

Boot fixpoint-linux — land in the shell.

one download, one command — from zero to a booting system.
▊fixpoint-linux — live in this pagev86 · WebAssembly · 32-bit guest

The real system, booting inside this page: fx-init as PID 1, the content-addressed store, dhake materializing the rootfs, and fxsh on the console — a 32-bit Linux guest emulated by v86 in WebAssembly.

boot it in your browser · ~3.7 MB

Nothing is fetched until you click: the kernel, initrd and emulator together are ~3.7 MB, and the guest takes a few seconds to reach the prompt. The link opens the same demo as a full page if scripts are off.

Get the image

// curl · gunzip · sha256sum
$ curl -fL -o fixpoint.raw.gz \
  https://github.com/fixpoint-linux/fx-init/releases/download/image-m3/fixpoint-m3-x86_64.raw.gz
$ gunzip fixpoint.raw.gz

That is a 64 MiB raw disk image (the download is ~15.8 MB gzipped). The partition is blank until first boot — see what just happened. The release lives at fx-init · image-m3.

$ sha256sum fixpoint.raw
bf8c703f7e13aca975e2c4a6b95173f5981bd4f20478fc94ac88bd15f5fd0879  fixpoint.raw

Boot it

// qemu-system-x86_64 · serial console · virtio

Boot the image under QEMU, with the serial console attached.

$ qemu-system-x86_64 -machine q35 -accel kvm -cpu host -m 2048 -nographic \
  -drive file=fixpoint.raw,format=raw,if=virtio

You need qemu-system-x86_64 plus hardware virtualization (/dev/kvm) — the image is x86_64 and boots under -accel kvm.

Leave QEMU with Ctrl-A X.

The serial console ends at an interactive prompt — you land in the fixpoint shell:

SeaBIOS ...
Linux version 6.12.19 ...
...
Run /fx/store/<hash>-fx-init/fx-init as init process
fx-init: disk store mounted (current v3)
fx-init: pivoted to tmpfs root (magic 0x1021994)
fx-init: boot-ok v3
fx>

What just happened

// fx-init · dhake · datalog
01

fx-init is PID1

fx-init reads the current store generation, materializes the rootfs with dhake, supervises services, and maintains a live Datalog DB — the sole writer of runtime state. The prompt it hands you is fxsh, fx-core's own shell — the real fx-* commands from the image (fx-seq 1 5 | fx-sort -r, fx-cat /etc/hostname).

02

A content-addressed store

A Dhall config activates to a generation; each generation is one atomic snapshot of the whole system.

03

Time travel

The timeline is the system's complete history; a rollback is recorded as history and is itself undoable.

04

First boot formats

The image ships a blank primary partition, formatted by the guest on first boot.

This is an early milestone: it boots and lands you at a prompt — not yet a general-purpose desktop.

Build it yourself

// fx-init · zig · dhall

The same image can be built from source instead of downloaded.

$ git clone https://github.com/fixpoint-linux/fx-init && cd fx-init
$ git submodule update --init --recursive
$ (cd zig && zig build -Doptimize=ReleaseSafe)
$ ./zig/zig-out/bin/fx-image \
  --config m3/config-console.dhall \
  --package-set m3/package-set.dhall \
  --pin scripts/kernel-pin.txt \
  --out fixpoint.raw

The result is the same fixpoint.raw — boot it with the same QEMU command above.