Desirable method
lshw
This command produces the following output on vairous VM technology guests.
$ sudo lshw -class system
Output
KVM
mungr
description: Computer
product: KVM
vendor: Red Hat
width: 64 bits
capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32
VMWare
partedmagic
description: Computer
product: VMware Virtual Platform ()
vendor: VMware, Inc.
version: None
serial: VMware-56 4d 94 a0 53 e3 f3 c6-f9 a6 eb 1a 89 70 04 57
width: 32 bits
capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp
Scripting
If you're on Ubuntu/Debian there's the package open-vm-tools
can be installed. It provides vmware-checkvm
. It returns only a a digit. A 0
means it's a VM, a 1
means it's a physical system.
Less desirable methods
If it's KVM the /proc/scsi/scsi
and ethtool
options show up as follows:
SCSI
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: QEMU Model: QEMU DVD-ROM Rev: 0.9.
Type: CD-ROM ANSI SCSI revision: 05
ethtool
$ ethtool -i eth0
driver: virtio_net
version:
firmware-version:
bus-info: virtio0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
The virtio_net is part of KVM. The /proc/scsi/scsi
tells you that you're in a VM, and that you're most likely KVM.
dmesg
Using the following commands grep
'ing through dmesg
log.
$ sudo dmesg | grep -i virtual
VMWare
VMware vmxnet virtual NIC driver
Vendor: VMware Model: Virtual disk Rev: 1.0
hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
QEmu or KVM
If the "-cpu host"
option has not been used, QEmu and KVM will identify themselves as:
CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
otherwise, the host's CPU information will be used both in dmesg
, or in /proc/cpuinfo
. However, you should see something like:
[ 0.000000] Booting paravirtualized kernel on KVM
In newer kernels that understand that they're running under paravirtualization.
Microsoft VirtualPC
hda: Virtual HD, ATA DISK drive
hdc: Virtual CD, ATAPI CD/DVD-ROM drive
Xen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1
Virtuozzo
# method #1
$ sudo dmesg
(returns no output)
# method #2
$ sudo cat /var/log/dmesg
(returns no output)
# method #3
$ sudo ls -al /proc/vz
veinfo veinfo_redir veredir vestat vzaquota vzdata
References