git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
# rvf-launch
|
|
|
|
QEMU microVM launcher for RVF cognitive containers.
|
|
|
|
## What It Does
|
|
|
|
`rvf-launch` boots an `.rvf` file as a standalone Linux microservice inside a QEMU microVM. It extracts the embedded kernel from `KERNEL_SEG`, launches QEMU with virtio I/O, and provides a programmatic API for lifecycle management.
|
|
|
|
## Features
|
|
|
|
| Feature | Description |
|
|
|---------|-------------|
|
|
| **Launcher** | Full QEMU process management with automatic cleanup |
|
|
| **KVM/TCG detection** | Auto-selects KVM acceleration when available, falls back to TCG |
|
|
| **QMP protocol** | Real QEMU Machine Protocol client for graceful shutdown |
|
|
| **Kernel extraction** | Reads KERNEL_SEG from `.rvf` files for boot |
|
|
| **Port forwarding** | Automatic virtio-net with API and optional SSH ports |
|
|
|
|
## Usage
|
|
|
|
```rust
|
|
use rvf_launch::{Launcher, LaunchConfig};
|
|
use std::time::Duration;
|
|
|
|
let config = LaunchConfig {
|
|
rvf_path: "appliance.rvf".into(),
|
|
memory_mb: 128,
|
|
vcpus: 2,
|
|
api_port: 8080,
|
|
ssh_port: Some(2222),
|
|
enable_kvm: true,
|
|
..Default::default()
|
|
};
|
|
|
|
let mut vm = Launcher::launch(&config)?;
|
|
vm.wait_ready(Duration::from_secs(30))?;
|
|
|
|
// Query vectors through the VM
|
|
let results = vm.query(&query_vector, 10)?;
|
|
|
|
// Graceful shutdown via QMP
|
|
vm.shutdown()?;
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- QEMU installed (`qemu-system-x86_64` or `qemu-system-aarch64`)
|
|
- KVM optional (falls back to TCG emulation)
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
cargo test -p rvf-launch # 8 tests
|
|
```
|
|
|
|
## License
|
|
|
|
MIT OR Apache-2.0
|