pub fn init(
driver_type: Option<DriverType>,
init_params: Option<DriverInitParams>
) -> Result<Box<dyn Introspectable>, MicrovmiError>
Expand description
libmicrovmi initialization entrypoint
This function will initialize a libmicrovmi driver and call the hypervisor VMI API.
It returns a Box<dyn Introspectable>
trait object, which implements the Introspectable trait.
For complete documentation on driver init params, please check DriverInitParams struct.
§Arguments
driver_type
: optional driver type to initialize. If None, all compiled drivers will be initialized one by one. The first that succeeds will be returned.init_params
: optional driver initialization parameters
§Examples
use microvmi::init;
// 1 - attempt to init all drivers, without any init parameters
let drv = init(None, None);
// 2 - add parameters: vm_name
// a `vm_name` parameter is required for multiple drivers: Xen, KVM, VirtualBox
use microvmi::api::params::{DriverInitParams, CommonInitParams};
let init_params = DriverInitParams {
common: Some(CommonInitParams { vm_name: String::from("windows10")}),
..Default::default()
};
let drv = init(None, Some(init_params));
// 3 - add parameters: KVM specific params
// KVM requires an additional unix socket to be specified
// and specify the KVM driver only
use microvmi::api::params::KVMInitParams;
use microvmi::api::DriverType;
let init_params = DriverInitParams {
common: Some(CommonInitParams { vm_name: String::from("windows10")}),
kvm: Some(KVMInitParams::UnixSocket {path: String::from("/tmp/introspector")}),
..Default::default()
};
let drv = init(Some(DriverType::KVM), Some(init_params));