Skip to main content

VmConfig

Struct VmConfig 

Source
pub struct VmConfig {
Show 18 fields pub name: String, pub namespace: String, pub kernel: PathBuf, pub initramfs: Option<PathBuf>, pub root_disk: Option<PathBuf>, pub data_disk: Option<PathBuf>, pub seed_iso: Option<PathBuf>, pub cpus: usize, pub memory_mb: usize, pub networks: Vec<NetworkAttachment>, pub shared_dirs: Vec<SharedDir>, pub serial_log: PathBuf, pub cmdline: Option<String>, pub netns: Option<String>, pub vsock: bool, pub machine_id: Option<Vec<u8>>, pub efi_variable_store: Option<PathBuf>, pub rosetta: bool,
}
Expand description

Everything needed to boot a VM.

Two boot modes are supported:

Initramfs boot (fast, stateless): Set kernel + initramfs + cmdline + shared_dirs. Leave root_disk and seed_iso as None. Config delivered via VirtioFS shared directories. The initramfs IS the root filesystem (unpacked into RAM by the kernel).

Cloud-init boot (traditional, disk-based): Set kernel + root_disk + seed_iso. Cloud-init reads its config from the seed ISO (NoCloud datasource). Requires a base disk image.

Fields§

§name: String

Unique name for this VM.

§namespace: String

Namespace (logical grouping, e.g., stack name).

§kernel: PathBuf

Path to the kernel image.

§initramfs: Option<PathBuf>

Path to initramfs (required for initramfs boot, optional for cloud-init boot).

§root_disk: Option<PathBuf>

Path to the root disk image (None for stateless initramfs boot).

§data_disk: Option<PathBuf>

Path to additional data disk (optional).

§seed_iso: Option<PathBuf>

Path to cloud-init seed ISO (None for initramfs boot with VirtioFS config).

§cpus: usize

Number of vCPUs.

§memory_mb: usize

Memory in megabytes.

§networks: Vec<NetworkAttachment>

Network attachments (L2 switch ports or TAP devices).

§shared_dirs: Vec<SharedDir>

Shared directories (host → guest via VirtioFS).

§serial_log: PathBuf

Path to serial console log file.

§cmdline: Option<String>

Kernel command line arguments (optional — platform-specific defaults used if None).

§netns: Option<String>

Linux network namespace to run the VM in (optional). When set, the VMM process is spawned inside ip netns exec <netns>.

§vsock: bool

Enable vsock device for host-guest communication.

§machine_id: Option<Vec<u8>>

Persistent machine identifier (opaque bytes, driver-specific).

§efi_variable_store: Option<PathBuf>

Path to EFI variable store for UEFI boot (optional).

§rosetta: bool

Enable Rosetta translation layer (macOS only, Apple Silicon).

Implementations§

Source§

impl VmConfig

Source

pub fn validate(&self) -> Result<(), VmError>

Validate configuration invariants.

Trait Implementations§

Source§

impl Clone for VmConfig

Source§

fn clone(&self) -> VmConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for VmConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more