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
| Goal | Start with | Check |
|---|---|---|
| Test a device interface | The mode guide for that interface | Identify data, command status, returned data, and state transitions |
| Compare a policy | A configuration recipe and fixed workload | Counter deltas and latency across otherwise identical runs |
| Evaluate an application | Application workload preparation after the raw-device baseline | Data placement, cache state, and application results paired with device counters |
| Understand or extend the model | The developer path | A source trace and focused regression test |
| Start contributing without a guest | Your first model test | Three new boundary assertions and a passing standalone test |
| Teach storage systems | Teach with FEMU | Activity 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:
- Requirements: host OS, KVM, memory, and the guest kernel each mode needs.
- Build FEMU: dependencies,
femu-compile.sh, and the errors a first build hits. - Guest image:
make-guest-image.shbuilds a guest with a serial console, SSH and the NVMe tools. - 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.