Struct openvmm_entry::Options
source · pub struct Options {Show 89 fields
pub processors: u32,
pub memory: u64,
pub shared_memory: bool,
pub prefetch: bool,
pub paused: bool,
pub kernel: OptionalPathBuf,
pub initrd: OptionalPathBuf,
pub cmdline: Vec<String>,
pub hv: bool,
pub vtl2: bool,
pub get: bool,
pub get_vmgs: Option<DiskCliKind>,
pub no_alias_map: bool,
pub vtl2_emulates_apic: bool,
pub isolation: Option<IsolationCli>,
pub vsock_path: Option<String>,
pub vtl2_vsock_path: Option<String>,
pub late_map_vtl0_policy: Vtl0LateMapPolicyCli,
pub no_enlightenments: bool,
pub user_mode_apic: bool,
pub disk: Vec<DiskCli>,
pub nvme: Vec<DiskCli>,
pub scsi_sub_channels: u16,
pub nic: bool,
pub net: Vec<NicConfigCli>,
pub kernel_vmnic: Vec<String>,
pub gfx: bool,
pub vtl2_gfx: bool,
pub vnc: bool,
pub vnc_port: u16,
pub apic_id_offset: u32,
pub vps_per_socket: Option<u32>,
pub smt: SmtConfigCli,
pub x2apic: X2ApicConfig,
pub virtio_console: bool,
pub virtio_console_pci: bool,
pub com1: Option<SerialConfigCli>,
pub com2: Option<SerialConfigCli>,
pub com3: Option<SerialConfigCli>,
pub com4: Option<SerialConfigCli>,
pub virtio_serial: Option<SerialConfigCli>,
pub vmbus_com1_serial: Option<SerialConfigCli>,
pub vmbus_com2_serial: Option<SerialConfigCli>,
pub debugcon: Option<DebugconSerialConfigCli>,
pub uefi: bool,
pub uefi_firmware: OptionalPathBuf,
pub uefi_debug: bool,
pub uefi_enable_memory_protections: bool,
pub pcat_boot_order: Option<PcatBootOrderCli>,
pub pcat: bool,
pub pcat_firmware: Option<PathBuf>,
pub igvm: Option<PathBuf>,
pub igvm_vtl2_relocation_type: Vtl2BaseAddressType,
pub virtio_9p: Vec<(String, String)>,
pub virtio_9p_debug: bool,
pub virtio_fs: Vec<(String, String)>,
pub virtio_fs_shmem: Vec<(String, String)>,
pub virtio_fs_bus: VirtioBus,
pub virtio_pmem: Option<String>,
pub virtio_net: Vec<NicConfigCli>,
pub log_file: Option<PathBuf>,
pub ttrpc: Option<PathBuf>,
pub grpc: Option<PathBuf>,
pub single_process: bool,
pub disable_frontpage: bool,
pub tpm: bool,
pub internal_worker: Option<Option<String>>,
pub vmbus_redirect: bool,
pub vmbus_max_version: Option<u32>,
pub vmgs_file: Option<PathBuf>,
pub vga_firmware: Option<PathBuf>,
pub secure_boot: bool,
pub secure_boot_template: Option<SecureBootTemplateCli>,
pub custom_uefi_json: Option<PathBuf>,
pub relay_console_path: Option<PathBuf>,
pub gdb: Option<u16>,
pub mana: Vec<NicConfigCli>,
pub hypervisor: Option<Hypervisor>,
pub custom_dsdt: Option<PathBuf>,
pub ide: Vec<IdeDiskCli>,
pub floppy: Vec<FloppyDiskCli>,
pub guest_watchdog: bool,
pub underhill_dump_path: Option<PathBuf>,
pub halt_on_reset: bool,
pub write_saved_state_proto: Option<PathBuf>,
pub imc: Option<PathBuf>,
pub mcr: bool,
pub battery: bool,
pub uefi_console_mode: Option<UefiConsoleModeCli>,
}
Expand description
OpenVMM virtual machine monitor.
This is not yet a stable interface and may change radically between versions.
Fields§
§processors: u32
processor count
memory: u64
guest RAM size
use shared memory segment
prefetch: bool
prefetch guest RAM
paused: bool
start in paused state
kernel: OptionalPathBuf
kernel image (when using linux direct boot)
initrd: OptionalPathBuf
initrd image (when using linux direct boot)
cmdline: Vec<String>
extra kernel command line args
hv: bool
enable HV#1 capabilities
vtl2: bool
enable vtl2 - only supported in WHP and simulated without hypervisor support currently
Currently implies –get.
get: bool
Add GET and related devices for using the OpenHCL paravisor to the highest enabled VTL.
get_vmgs: Option<DiskCliKind>
The disk to use for the GET VMGS.
If this is not provided, then a 4MB RAM disk will be used.
no_alias_map: bool
disable the VTL0 alias map presented to VTL2 by default
vtl2_emulates_apic: bool
The vtl2 paravisor has an APIC emulator, so do not emulate lower VTL APICs on the host.
isolation: Option<IsolationCli>
enable isolation emulation
vsock_path: Option<String>
the hybrid vsock listener path
vtl2_vsock_path: Option<String>
the VTL2 hybrid vsock listener path
late_map_vtl0_policy: Vtl0LateMapPolicyCli
the late map vtl0 ram access policy when vtl2 is enabled
no_enlightenments: bool
disable in-hypervisor enlightenment implementation (where possible)
user_mode_apic: bool
disable the in-hypervisor APIC and use the user-mode one (where possible)
disk: Vec<DiskCli>
attach a disk (can be passed multiple times)
nvme: Vec<DiskCli>
attach a disk via an NVMe controller
scsi_sub_channels: u16
number of sub-channels for the SCSI controller
nic: bool
expose a virtual NIC
net: Vec<NicConfigCli>
expose a virtual NIC with the given backend (consomme | dio | tap | none)
Prefix with uh:
to add this NIC via Mana emulation through Underhill,
or vtl2:
to assign this NIC to VTL2.
kernel_vmnic: Vec<String>
expose a virtual NIC using the Windows kernel-mode vmswitch.
Specify the switch ID or “default” for the default switch.
gfx: bool
expose a graphics device
vtl2_gfx: bool
support a graphics device in vtl2
vnc: bool
listen for vnc connections. implied by gfx.
vnc_port: u16
VNC port number
apic_id_offset: u32
set the APIC ID offset, for testing APIC IDs that don’t match VP index
vps_per_socket: Option<u32>
the maximum number of VPs per socket
smt: SmtConfigCli
enable or disable SMT (hyperthreading) (auto | force | off)
x2apic: X2ApicConfig
configure x2apic (auto | supported | off | on)
virtio_console: bool
use virtio console
virtio_console_pci: bool
use virtio console enumerated via VPCI
com1: Option<SerialConfigCli>
COM1 binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
com2: Option<SerialConfigCli>
COM2 binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
com3: Option<SerialConfigCli>
COM3 binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
com4: Option<SerialConfigCli>
COM4 binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
virtio_serial: Option<SerialConfigCli>
virtio serial binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
vmbus_com1_serial: Option<SerialConfigCli>
vmbus com1 serial binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
vmbus_com2_serial: Option<SerialConfigCli>
vmbus com2 serial binding (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none)
debugcon: Option<DebugconSerialConfigCli>
debugcon binding (port:serial, where port is a u16, and serial is (console | stderr | listen=<path> | listen=tcp:<ip>:<port> | term[=<program>] | none))
uefi: bool
boot UEFI firmware
uefi_firmware: OptionalPathBuf
UEFI firmware file
uefi_debug: bool
enable UEFI debugging on COM1
uefi_enable_memory_protections: bool
enable memory protections in UEFI
pcat_boot_order: Option<PcatBootOrderCli>
set PCAT boot order as comma-separated string of boot device types (e.g: floppy,hdd,optical,net).
If less than 4 entries are added, entries are added according to their default boot order (optical,hdd,net,floppy)
e.g: passing “floppy,optical” will result in a boot order equivalent to “floppy,optical,hdd,net”.
Passing duplicate types is an error.
pcat: bool
Boot with PCAT BIOS firmware and piix4 devices
pcat_firmware: Option<PathBuf>
PCAT firmware file
igvm: Option<PathBuf>
boot IGVM file
igvm_vtl2_relocation_type: Vtl2BaseAddressType
specify igvm vtl2 relocation type (absolute=<addr>, disable, auto=<filesize,or memory size>, vtl2=<filesize,or memory size>,)
virtio_9p: Vec<(String, String)>
add a virtio_9p device (e.g. myfs:C:)
virtio_9p_debug: bool
output debug info from the 9p server
virtio_fs: Vec<(String, String)>
add a virtio_fs device (e.g. myfs:C:)
virtio_fs_shmem: Vec<(String, String)>
add a virtio_fs device for sharing memory (e.g. myfs:\SectionDirectoryPath)
virtio_fs_bus: VirtioBus
add a virtio_fs device under either the PCI or MMIO bus, or whatever the hypervisor supports (pci | mmio | auto)
virtio_pmem: Option<String>
virtio PMEM device
virtio_net: Vec<NicConfigCli>
expose a virtio network with the given backend (dio | vmnic | tap | none)
Prefix with uh:
to add this NIC via Mana emulation through Underhill,
or vtl2:
to assign this NIC to VTL2.
log_file: Option<PathBuf>
send log output from the worker process to a file instead of stderr. the file will be overwritten.
ttrpc: Option<PathBuf>
run as a ttrpc server on the specified Unix socket
grpc: Option<PathBuf>
run as a grpc server on the specified Unix socket
single_process: bool
do not launch child processes
disable_frontpage: bool
instead of showing the frontpage the VM will shutdown instead
tpm: bool
add a vtpm device
internal_worker: Option<Option<String>>
the mesh worker host name.
Used internally for debugging and diagnostics.
vmbus_redirect: bool
redirect the VTL 0 vmbus control plane to a proxy in VTL 2.
vmbus_max_version: Option<u32>
limit the maximum protocol version allowed by vmbus; used for testing purposes
vmgs_file: Option<PathBuf>
path to vmgs file. if no file is provided, fallback to in-memory vmgs implementation
vga_firmware: Option<PathBuf>
VGA firmware file
secure_boot: bool
enable secure boot
secure_boot_template: Option<SecureBootTemplateCli>
use secure boot template
custom_uefi_json: Option<PathBuf>
custom uefi nvram json file
relay_console_path: Option<PathBuf>
the path to a named pipe (Windows) or Unix socket (Linux) to relay to the connected tty.
This is a hidden argument used internally.
gdb: Option<u16>
enable in-hypervisor gdb debugger
mana: Vec<NicConfigCli>
enable emulated MANA devices with the given network backend (see –net)
hypervisor: Option<Hypervisor>
use a specific hypervisor interface
custom_dsdt: Option<PathBuf>
(dev utility) boot linux using a custom (raw) DSDT table.
This is a very niche utility, and it’s unlikely you’ll need to use it.
e.g: this flag helped bring up certain Hyper-V Generation 1 legacy devices without needing to port the associated ACPI code into HvLite’s DSDT builder.
ide: Vec<IdeDiskCli>
attach an ide drive (can be passed multiple times)
Each ide controller has two channels. Each channel can have up to two attachments.
If the s
flag is not passed then the drive will we be attached to the
primary ide channel if space is available. If two attachments have already
been added to the primary channel then the drive will be attached to the
secondary channel.
floppy: Vec<FloppyDiskCli>
attach a floppy drive (should be able to be passed multiple times). VM must be generation 1 (no UEFI)
guest_watchdog: bool
enable guest watchdog device
underhill_dump_path: Option<PathBuf>
enable Underhill’s guest crash dump device, targeting the specified path
halt_on_reset: bool
halt the VM when the guest requests a reset, instead of resetting it
write_saved_state_proto: Option<PathBuf>
write saved state .proto files to the specified path
imc: Option<PathBuf>
specify the IMC hive file for booting Windows
mcr: bool
Expose MCR device
battery: bool
expose a battery device
uefi_console_mode: Option<UefiConsoleModeCli>
set the uefi console mode
Trait Implementations§
source§impl Args for Options
impl Args for Options
source§fn group_id() -> Option<Id>
fn group_id() -> Option<Id>
ArgGroup::id
][crate::ArgGroup::id] for this set of argumentssource§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
source§impl FromArgMatches for Options
impl FromArgMatches for Options
source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches
to self
.source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches
to self
.source§impl Parser for Options
impl Parser for Options
§fn parse_from<I, T>(itr: I) -> Self
fn parse_from<I, T>(itr: I) -> Self
§fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
§fn update_from<I, T>(&mut self, itr: I)
fn update_from<I, T>(&mut self, itr: I)
§fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
Auto Trait Implementations§
impl Freeze for Options
impl RefUnwindSafe for Options
impl Send for Options
impl Sync for Options
impl Unpin for Options
impl UnwindSafe for Options
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.