Skip to content

Virtualization

Detection

whatsthis attempts to identify the system's virtualization platforms based on the result of the CPU identification instruction known as cpuid.

The instruction was created to provide a mechanism for programmers to obtain the system's CPU model. Virtualization providers will set this string to provide a mechanism to determine what virtualization platform a system is running on.

Bug

As cpuid is only available on x86-64, virtualization support in aarch64 is currently non-existent. When running on aarch64, the function will always return an empty string and therefore never detect any virtualization platform correctly.

Supported

Below is a table of the currently known virtualization platforms and their corresponding advertised vendor ID found from cpuid:

Platform Vendor ID
bhyve bhyve bhyve
hyper-v Microsoft Hv
kvm KVMKVMKVM
parallels lrpepyh vr
qemu TCGTCGTCGTCG
vmware VMwareVMware
xen XenVMMXenVMM

Note

Using cpuid on these platforms provides a good first heuristic when attempting to determine the platform. However, there are cases where these platforms have additional product offerings and using the cpuid alone is not enough. Please feel free to file an issue if you come across one of these scenarios.

Other

Other virtualization detection software like virt-what or imvirt have detection for other additional platforms. For the initial development of the app, platforms were limited to those that could easily be tested. The are some additional virtualization platforms that could be added at a later date:

  • acrn
  • bochs
  • qnx
  • lkvm
  • uml
  • virtual box