Boot targets

xemu supports four kinds of boot:

TargetPrivilege entryFirmwareGuest payload
am-testsM-modenonebare-metal test kernel
xv6M-modexv6 bootstrapxv6 kernel + ramdisk
LinuxM-modeOpenSBI v1.3.1Linux 6.1.44 + initramfs
DebianM-modeOpenSBI + bootlin kernelLinux + ext4 rootfs via VirtIO-blk

All targets share the same machine layout (RAM at 0x8000_0000, ACLINT at 0x0200_0000, PLIC at 0x0C00_0000, UART0 at 0x1000_0000). The differences are in what gets loaded and whether a firmware layer is present.

See the individual pages for each:

Common environment variables

VarDefaultEffect
DEBUGny routes UART to a PTY (requires screen attach) and enables extra logging
LOGinfotrace / debug / info — controls xlogger verbosity
X_HARTS1Number of guest harts (single-threaded cooperative scheduler)
DIFFTEST01 enables per-instruction comparison against QEMU / Spike

Use make run (or the per-target aliases like make linux) — not target/release/xdb directly. The Makefiles wire up X_FILE, boot layout, and DTB compilation for you.