VMware publishes no complete list of the keys of a .vmx file. These are the keys
that libvirt's VMX reader and writer (src/vmx/vmx.c, read in full for this page: its
header comment maps each libvirt setting to a key) and VMware's knowledge-base articles name, with
what they say about them. In the names, N and M are numbers: scsi0:1 is
controller 0, unit 1. Values are quoted strings; boolean values are written true or
TRUE (libvirt reads them without regard to case).
General
| Key | Meaning |
|---|---|
.encoding | The character set of the file; UTF-8 when absent (see syntax). |
config.version | The configuration format version; libvirt requires 8. |
virtualHW.version | The virtual hardware version. libvirt's list: 4 ESX 3.5, 7 ESX 4.0, 8 ESX 5.0, 9 ESX 5.1, 10 ESX 5.5, 11 ESX 6.0, 13 ESX 6.5, 14 ESX 6.7, 17 ESX 7.0; libvirt requires 4 or higher, and treats 13 and over as having a super-wide SCSI bus. |
guestOS | The guest operating system identifier. A value ending -64 is 64-bit x86 for libvirt. |
displayName | The machine's name; |XX and %XX escapes are hexadecimal character codes. |
annotation | The machine's description; |XX escapes apply. |
uuid.bios, vc.uuid | The BIOS UUID, and the vCenter UUID (libvirt uses the first when the second is absent). uuid.action is noted by libvirt as not handled. |
vm.genid, vm.genidX | The two halves of the VM generation ID. |
firmware | efi for UEFI (libvirt reads no other value); BIOS when absent. |
uefi.secureBoot.enabled | Secure Boot on or off. |
nvram | The name of the .nvram file. |
vtpm.present | A virtual TPM 2.0; libvirt notes it needs hardware version 14 and EFI firmware. |
smbios.reflecthost | Shows the host's SMBIOS data to the guest (default false). |
Memory and processors
| Key | Meaning |
|---|---|
memsize | Memory in megabytes: a multiple of 4, default 32 (libvirt). |
sched.mem.max, sched.mem.minsize | The memory limit and reservation in megabytes (unlimited and 0 when absent). |
numvcpus | Virtual CPUs: at least 1, default 1. |
cpuid.coresPerSocket | Cores per virtual socket. |
sched.cpu.affinity | all or a comma-separated list of host CPU numbers, at least numvcpus of them. |
sched.cpu.shares | low, normal, high or a number; libvirt maps the words to 500, 1000 and 2000 shares per virtual CPU. |
Controllers, disks, CD-ROM and floppy drives
Controllers are scsi0 to scsi3 (units 0 to 6 and 8 to 15), sata0 to
sata3 (units 0 to 29), ide0 and ide1 (units 0 and 1) and
nvme0 to nvme3 (namespaces 0 to 14, from VMware's configuration maximums as
libvirt cites them); the floppy drives are floppy0 and floppy1.
| Key | Meaning |
|---|---|
scsiN.present, sataN.present, nvmeN.present | The controller exists (default false). |
scsiN.virtualDev | The SCSI controller model: buslogic, lsilogic, lsisas1068 or pvscsi (libvirt's list); the default depends on guestOS. SATA and NVMe controllers take the same key. |
scsiN:M.present, sataN:M, ideN:M, nvmeN:M | A device exists at this position (default false). |
….startConnected | Connected at power-on (default true). |
….fileName | The backing: a .vmdk disk, an .iso image, or a host device such as /dev/scd0. |
….deviceType | scsi-hardDisk, ata-hardDisk, cdrom-image (an image) or atapi-cdrom (a host device). |
….mode | How the disk treats changes: persistent (default), undoable, independent-persistent or independent-nonpersistent. |
….writeThrough | Write-through caching (default false). |
ideN:M.clientDevice | The device is the client's (default false). |
floppyN.present, .startConnected, .clientDevice | The drive exists (default true), is connected at power-on (default true), is the client's (default false). |
floppyN.fileType, .fileName | file (a .flp image) or device, and its path. |
Network adapters
Adapters are ethernet0 to ethernet9.
| Key | Meaning |
|---|---|
ethernetN.present, .startConnected | The adapter exists (default false), is connected at power-on (default true). |
.virtualDev, .features | The adapter model (the default depends on guestOS); vmxnet with features 15 is the enhanced vmxnet2. |
.connectionType | bridged (default), hostonly, nat or custom (with .vnet naming the virtual network). |
.networkName | The network the adapter joins. |
.addressType | generated (default; address in .generatedAddress), static (address in .address) or vpx (assigned by vCenter). libvirt's comments give the prefixes: 00:0c:29 generated; 00:50:56:00:00:00 to 3f:ff:ff static; 00:50:56:80:00:00 to bf:ff:ff vpx; 00:05:69 from old ESX 1.5. |
.checkMACAddress | Set false when a static address is outside the VMware prefixes. |
.pciSlotNumber, .dvs.* | The PCI slot, and distributed virtual switch settings (switch id, port id, connection id). |
Ports, shared folders, display and bridges
| Key | Meaning |
|---|---|
serialN (0 to 3), parallelN (0 to 2) | .present, .startConnected, .fileType (device, file, pipe or network for serial; device or file for parallel) and .fileName (a path, or a URL such as telnet://0.0.0.0:42001); .pipe.endPoint and .network.endPoint are client or server; .vspc, .tryNoRxLoss, .yieldOnMsrRead and parallel .bidirectional are settings libvirt cannot represent. |
isolation.tools.hgfs.disable, sharedFolder.maxNum, sharedFolderN.* | Shared folders: .present, .enabled, .expiration (never), .readAccess, .writeAccess, .hostPath, .guestName. |
svga.vramSize | Video memory in bytes. |
sound.present, .startConnected, .autodetect, .fileName | The sound card; -1 is the default device. |
RemoteDisplay.vnc.enabled, .port, .ip, .keymap, .password | The VNC remote display; ports 5900 to 5964. |
pciBridgeN.present, .virtualDev, .functions, vmci0.present | PCI bridges (libvirt writes 0 and 4 to 7, type pcieRootPort, 8 functions) and the VM communication interface, for hardware version 7 and later. |
Not documented
Any other key is not described by a source read: VMware's tools write many more (power, tools, snapshot and migration settings). The viewer shows such a key as written and labels it "not described".