Ecosystem
A general-purpose KVM test harness for kernel modules. Write tests in Lua, run them against real VMs. No mocks, no simulations — real kernels, real syscalls, real results.
-- Test that a syscall returns the expected value
local vm = provium.create("peios-kacs")
vm:boot({ memory = "512M", cpus = 2 })
-- Call a custom KACS syscall
local result = vm:syscall(1100, 0, 0)
assert(result.ret == 0, "kacs_get_token_info failed")
-- Execute a command inside the VM
local out = vm:exec("idn whoami")
assert(out.stdout:match("SYSTEM"), "expected SYSTEM identity")
Provium is a Go binary with an embedded Lua scripting engine. Tests are Lua scripts that control VMs through a high-level API. Communication between the host and guest happens over vsock — no guest networking required.
Lua test → provium (Go, host) → QEMU/KVM → agent (C, guest) → commands
↑
vsock connection
Tests run against actual QEMU/KVM virtual machines with real kernels. No simulation layer between your tests and the code being tested.
Write tests in Lua — readable, expressive, and fast to iterate on. No recompilation needed between test runs.
Call syscalls directly from Lua. Test custom kernel interfaces, ioctls, and module behaviour without writing C test harnesses.
Write files into the guest and read them back. Inject configuration, binaries, or test data without modifying the VM image.
Cache booted VM state with fixtures. Subsequent tests resume from a snapshot instead of cold-booting — dramatically faster test suites.
Provium is a general-purpose tool. Test any kernel module, any Linux distribution, any boot configuration. Peios uses it; you can too.
Test your module's syscalls, ioctls, and behaviour against real kernels with Lua scripts instead of C test programs.
Probe kernel interfaces, test access control boundaries, and verify security properties in isolated VMs that can be destroyed and recreated instantly.
Run kernel-level integration tests in CI. Boot a VM, run tests, check results, tear it down — all from a single binary with no dependencies beyond QEMU.