# CLI

> Note: The following list is not exhaustive, and may be out of date. The most
> up to date reference is always the code itself.
>
> For a full list of command line arguments that can be passed to OpenVMM, run
> `cargo run -- --help`.

* `--processors <COUNT>`: The number of processors. Defaults to 1.
* `--memory <SIZE>`: The VM's memory size. Defaults to 1GB.
* `--hv`: Exposes Hyper-V enlightenments and VMBus support.
* `--uefi`: Boot using `mu_msvm` UEFI
* `--pcat`: Boot using the Microsoft Hyper-V PCAT BIOS
* `--disk file:<DISK>`: Exposes a single disk over VMBus. You must also pass `--hv`. The `DISK` argument can be:
  * A flat binary disk image
  * A VHD file with an extension of .vhd (Windows host only)
  * A VHDX file with an extension of .vhdx (Windows host only)
* `--nic`: Exposes a NIC using the Consomme user-mode NAT.
* `--virtio-console`: Enables a virtio serial device (via the MMIO transport) for Linux console access instead of COM1.
* `--virtio-console-pci`: Uses the PCI transport for the virtio serial console.
* `--gfx`: Enable a graphical console over VNC (see below)
* `--virtio-9p`: Expose a virtio 9p file system. Uses the format `tag:root_path`, e.g. `myfs:C:\\`.
  The file system can be mounted in a Linux guest using `mount -t 9p  -o trans=virtio tag /mnt/point`.
  You can specify this argument multiple times to create multiple file systems.
* `--virtio-fs`: Expose a virtio-fs file system. The format is the same as `--virtio-9p`. The
  file system can be mounted in a Linux guest using `mount -t virtiofs tag /mnt/point`.
  You can specify this argument multiple times to create multiple file systems.

And serial devices can each be configured to be relayed to different endpoints:

* `--com1/com2/virtio-serial <none|console|stderr|listen=PATH>`
    * `none`: Serial output is dropped.
    * `console`: Serial input is read and output is written to the console.
    * `stderr`: Serial output is written to stderr.
    * `listen=PATH`: A named pipe (on Windows) or Unix socket (on Linux) is set
      up to listen on the given path. Serial input and output is relayed to this
      pipe/socket.
