This chapter describes emulated devices in crosvm. These devices work like hardware for the guest.
Here is a (non-comprehensive) list of emulated devices provided by crosvm.
CMOS/RTC - Used to get the current calendar time.i8042 - Used by the guest kernel to exit crosvm.serial - x86 I/O port driven serial devices that print to stdout and take input from stdin.balloon - Allows the host to reclaim the guest's memories.block - Basic read/write block device.console - Input and outputs on console.fs - Shares file systems over the FUSE protocol.gpu - Graphics adapter.input - Creates virtual human interface devices such as keyboards.iommu - Emulates an IOMMU device to manage DMA from endpoints in the guest.net - Device to interface the host and guest networks.p9 - Shares file systems over the 9P protocol.pmem - Persistent memory.rng - Entropy source used to seed guest OS's entropy pool.scsi - SCSI device.snd - Encodes and decodes audio streams.tpm - Creates a TPM (Trusted Platform Module) device backed by vTPM daemon.video - Allows the guest to leverage the host's video capabilities.wayland - Allows the guest to use the host's Wayland socket.vsock - Enables use of virtual sockets for the guest.vhost-user - VirtIO devices which offloads the device implementation to another process through the vhost-user protocol:A hotplug-capable device can be added as a PCI device to the guest. To enable hotplug, compile crosvm with feature flag pci-hotplug:
cargo build --features=pci-hotplug #additional parameters
When starting the VM, specify the number of slots with --pci-hotplug-slots option. Additionally, specify a control socket specified with -s option for sending hotplug commands.
For example, to run a VM with 3 PCI hotplug slots and control socket:
VM_SOCKET=/run/crosvm.socket crosvm run \ -s ${VM_SOCKET} \ --pci-hotplug-slots 3 # usual crosvm args
Currently, only network devices are supported.