Skip to main content

Get started

FEMU runs on an x86-64 Linux host with KVM. You build it once, make a guest image, and boot the guest with an emulated NVMe device attached. Reserve RAM for the guest, the DRAM-backed SSD, and its metadata.

Choose your first result​

GoalStart withCheck
Test a device interfaceThe mode guide for that interfaceIdentify data, command status, returned data, and state transitions
Compare a policyA configuration recipe and fixed workloadCounter deltas and latency across otherwise identical runs
Evaluate an applicationApplication workload preparation after the raw-device baselineData placement, cache state, and application results paired with device counters
Understand or extend the modelThe developer pathA source trace and focused regression test
Start contributing without a guestYour first model testThree new boundary assertions and a passing standalone test
Teach storage systemsTeach with FEMUActivity prerequisites, validation status, and assessment checkpoints

For a laptop or multi-device experiment, check the host resource guide before selecting capacity. A standalone NAND test needs no guest; the documented full-system path needs an x86-64 Linux host with working KVM. Matching a real SSD's performance also requires calibration, beyond successful device enumeration.

Build, boot and verify​

The FEMU Manual carries the supported path, guest-tested at the commit it documents. Follow it in order:

  1. Requirements: host OS, KVM, memory, and the guest kernel each mode needs.
  2. Build FEMU: dependencies, femu-compile.sh, and the errors a first build hits.
  3. Guest image: make-guest-image.sh builds a guest with a serial console, SSH and the NVMe tools.
  4. Quick start: boot a guest with a BlackBox SSD and check what it sees.

Then work through the tutorials, starting with your first SSD and garbage collection and WAF. Each one prints the output you should see at every step.

For a laptop or a multi-device experiment, size the host first with the host resource guide. If a launch fails, the console stays blank, or the namespace is missing, see setup troubleshooting and the manual's troubleshooting FAQ.

Run and inspect an experiment​

Use your first experiment on the expendable FEMU namespace. Guest-observed latency includes model timing and host/emulator execution overhead. Payload bytes are held in host DRAM, not a persistent SSD image; a new emulator process starts with a fresh device.

Continue with the mode guides, the design notes, and counter interpretation.