Easy way to determine virtualization technology
Clash Royale CLAN TAG#URR8PPP
up vote
102
down vote
favorite
I have command line access to a Linux machine which may or may not be virtualized. I want to determine what kind of virtualization technology it runs on, if any (VMWare, VirtualBox, KVM, OpenVZ, Xen, ). This isn't a hostile environment: I'm not trying to work against a VM that is trying to disguise itself, I'm diagnosing a flaky server that I know little about.
More precisely, I'm helping someone diagnose the issue, I'm not sitting at the helm. So I have to convey instructions like âÂÂcopy-paste this commandâ and not âÂÂpoke around /proc
somewhereâÂÂ. Ideally, it would be something like lshw
: an easily-installable (if not preinstalled) command that does the poking around and prints out relevant information.
What's the easiest way of determining what virtualization technology this system may be a guest of? I'd appreciate if proposals mentioned which technologies (including bare hardware) can be conclusively detected and which can be conclusively eliminated. I'm mostly interested in Linux, but if it also works for other unices that's nice.
linux command-line virtual-machine virtualization
add a comment |Â
up vote
102
down vote
favorite
I have command line access to a Linux machine which may or may not be virtualized. I want to determine what kind of virtualization technology it runs on, if any (VMWare, VirtualBox, KVM, OpenVZ, Xen, ). This isn't a hostile environment: I'm not trying to work against a VM that is trying to disguise itself, I'm diagnosing a flaky server that I know little about.
More precisely, I'm helping someone diagnose the issue, I'm not sitting at the helm. So I have to convey instructions like âÂÂcopy-paste this commandâ and not âÂÂpoke around /proc
somewhereâÂÂ. Ideally, it would be something like lshw
: an easily-installable (if not preinstalled) command that does the poking around and prints out relevant information.
What's the easiest way of determining what virtualization technology this system may be a guest of? I'd appreciate if proposals mentioned which technologies (including bare hardware) can be conclusively detected and which can be conclusively eliminated. I'm mostly interested in Linux, but if it also works for other unices that's nice.
linux command-line virtual-machine virtualization
add a comment |Â
up vote
102
down vote
favorite
up vote
102
down vote
favorite
I have command line access to a Linux machine which may or may not be virtualized. I want to determine what kind of virtualization technology it runs on, if any (VMWare, VirtualBox, KVM, OpenVZ, Xen, ). This isn't a hostile environment: I'm not trying to work against a VM that is trying to disguise itself, I'm diagnosing a flaky server that I know little about.
More precisely, I'm helping someone diagnose the issue, I'm not sitting at the helm. So I have to convey instructions like âÂÂcopy-paste this commandâ and not âÂÂpoke around /proc
somewhereâÂÂ. Ideally, it would be something like lshw
: an easily-installable (if not preinstalled) command that does the poking around and prints out relevant information.
What's the easiest way of determining what virtualization technology this system may be a guest of? I'd appreciate if proposals mentioned which technologies (including bare hardware) can be conclusively detected and which can be conclusively eliminated. I'm mostly interested in Linux, but if it also works for other unices that's nice.
linux command-line virtual-machine virtualization
I have command line access to a Linux machine which may or may not be virtualized. I want to determine what kind of virtualization technology it runs on, if any (VMWare, VirtualBox, KVM, OpenVZ, Xen, ). This isn't a hostile environment: I'm not trying to work against a VM that is trying to disguise itself, I'm diagnosing a flaky server that I know little about.
More precisely, I'm helping someone diagnose the issue, I'm not sitting at the helm. So I have to convey instructions like âÂÂcopy-paste this commandâ and not âÂÂpoke around /proc
somewhereâÂÂ. Ideally, it would be something like lshw
: an easily-installable (if not preinstalled) command that does the poking around and prints out relevant information.
What's the easiest way of determining what virtualization technology this system may be a guest of? I'd appreciate if proposals mentioned which technologies (including bare hardware) can be conclusively detected and which can be conclusively eliminated. I'm mostly interested in Linux, but if it also works for other unices that's nice.
linux command-line virtual-machine virtualization
linux command-line virtual-machine virtualization
asked Sep 6 '13 at 20:56
Gilles
508k12010051534
508k12010051534
add a comment |Â
add a comment |Â
12 Answers
12
active
oldest
votes
up vote
121
down vote
accepted
dmidecode -s system-product-name
I have tested on Vmware Workstation, VirtualBox, QEMU with KVM, standalone QEMU with Ubuntu as the guest OS. Others have added additional platforms that they're familiar with as well.
Virtualization technologies
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual PlatformVirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBoxQemu with KVM
root@router:~# dmidecode -s system-product-name
KVMQemu (emulated)
root@router:~# dmidecode -s system-product-name
BochsMicrosoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual MachineVirtuozzo
root@router:~# dmidecode
/dev/mem: Permission deniedXen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
On bare metal, this returns an identification of the computer or motherboard model.
/dev/disk/by-id
If you don't have the rights to run dmidecode
then you can use:
Virtualization Technology: QEMU
ls -1 /dev/disk/by-id/
Output
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
References
- How to detect virtualization at dmo.ca
5
Hyper-V returns a nearly worthlessVirtual Machine
fordmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.
â Zoredache
Sep 6 '13 at 23:39
1
Open VZ check for/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.
â erm3nda
Jan 21 '15 at 2:37
Bothdmidecode
and/dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:35
2
with qemu 2.5.0 (at least),dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string isStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
returns the far less generic stringQEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.
â Mark
Feb 26 '16 at 22:46
 |Â
show 2 more comments
up vote
27
down vote
If the container is running systemd
:
$ systemd-detect-virt
lxc
See also:
- systemd-detect-virt(1)
- Detecting Virtualization
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It outputkvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!
â snetch
Oct 19 '16 at 20:00
add a comment |Â
up vote
25
down vote
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 vsyscall32Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32VMWare
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 driveQEmu 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 driveXen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1Virtuozzo
# 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
- dmo.ca/ blog/ How to detect virtualization
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported bylshw -class system
anddmidecode
is exactly what I was hoping to find.
â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm thelshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.
â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
 |Â
show 1 more comment
up vote
13
down vote
The virt-what
script seems to cover most cases well...
I do like the disclaimer from the authors:
Most of the time, using this program is the wrong thing to do. Instead you should detect the specific features you actually want to use.
It's appeared on my EL5 and EL6 systems for the past few years as part of default installations. Ubuntu has it, and the source is available as well.
The facts detected by the script are listed here, but can easily be extended for edge cases.
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
add a comment |Â
up vote
12
down vote
isVMware() [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]];
isXen () [[ $(dmidecode -s system-manufacturer) = 'Xen' ]];
isKVM () [[ $(dmidecode -s system-product-name) = 'KVM' ]];
isVBox () [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]];
isVM ()
Those are the tests we use at my company.
add a comment |Â
up vote
7
down vote
If you get the person you're helping to install facter
, you can do
facter virtual
No root access needed.
Debian Guest on Debian host:
[user@guest]$ facter virtual
virtualbox
I can't vouch for how well this would work with Xen/KVM/Qemu...
add a comment |Â
up vote
7
down vote
In "recent" linux kernels, the kernel detects the hypervisor for you and prints a message that is easily available with dmesg
. This will tell you simply:
dmesg | grep "Hypervisor detected"
For example:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
As for what "recent" means, I am unclear which kernel version it was officially released in, but the commit that introduced this feature in the code base was on May 7, 2010. See here.
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:44
add a comment |Â
up vote
4
down vote
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
add a comment |Â
up vote
3
down vote
For VirtualBox, you could lspci | grep -i virtualbox
, that gives:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Alternatively, dmidecode -s system-product-name
(as @Rahul Patil suggests) is even more direct to the point (but needs root):
$ sudo dmidecode -s system-product-name
VirtualBox
For non-KVM QEMU, dmidecode -s system-product-name
confusingly returns Bochs, but dmesg | grep -i qemu
works (the storage devices that QEMU emulates usually have the name QEMU HARDDISK
, QEMU DVD-ROM
etc...).
add a comment |Â
up vote
3
down vote
Sometimes it's tricky :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
add a comment |Â
up vote
1
down vote
Apparently virtualization comes in several parts - in my case QEMU, Bochs and KVM (then Ubuntu 14.04). I found the easiest way to discover the hypervisor in use was:
sudo apt-get install virt-what
sudo virt-what
which in my case returned simply kvm
which was the basic information I was looking for (also the OP I think), because it tells me what I am allowed to do (e.g. run ipset to block a DDoS attack) and how resources are shared between VMs.
In addition I tried
sudo dmidecode -s system-product-name
and
sudo lshw -class system
neither of which mention KVM but they did both inform me that my hardware emulation was provided by Bochs
which I confess I hadn't even heard of, but a quick search turned up interesting information (http://en.wikipedia.org/wiki/Bochs). The lshw command is slightly more informative than dmidecode (e.g. telling me it's 64-bit).
The other answers didn't really tell me anything useful - facter virtual
just returned physical
and ls -1 /dev/disk/by-id/
returned ata-QEMU_DVD-ROM_QM00003
which shows QEMU is involved but I don't have access to the emulated DVD-ROM anyway.
add a comment |Â
up vote
1
down vote
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt
As usual run:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
add a comment |Â
12 Answers
12
active
oldest
votes
12 Answers
12
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
121
down vote
accepted
dmidecode -s system-product-name
I have tested on Vmware Workstation, VirtualBox, QEMU with KVM, standalone QEMU with Ubuntu as the guest OS. Others have added additional platforms that they're familiar with as well.
Virtualization technologies
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual PlatformVirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBoxQemu with KVM
root@router:~# dmidecode -s system-product-name
KVMQemu (emulated)
root@router:~# dmidecode -s system-product-name
BochsMicrosoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual MachineVirtuozzo
root@router:~# dmidecode
/dev/mem: Permission deniedXen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
On bare metal, this returns an identification of the computer or motherboard model.
/dev/disk/by-id
If you don't have the rights to run dmidecode
then you can use:
Virtualization Technology: QEMU
ls -1 /dev/disk/by-id/
Output
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
References
- How to detect virtualization at dmo.ca
5
Hyper-V returns a nearly worthlessVirtual Machine
fordmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.
â Zoredache
Sep 6 '13 at 23:39
1
Open VZ check for/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.
â erm3nda
Jan 21 '15 at 2:37
Bothdmidecode
and/dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:35
2
with qemu 2.5.0 (at least),dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string isStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
returns the far less generic stringQEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.
â Mark
Feb 26 '16 at 22:46
 |Â
show 2 more comments
up vote
121
down vote
accepted
dmidecode -s system-product-name
I have tested on Vmware Workstation, VirtualBox, QEMU with KVM, standalone QEMU with Ubuntu as the guest OS. Others have added additional platforms that they're familiar with as well.
Virtualization technologies
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual PlatformVirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBoxQemu with KVM
root@router:~# dmidecode -s system-product-name
KVMQemu (emulated)
root@router:~# dmidecode -s system-product-name
BochsMicrosoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual MachineVirtuozzo
root@router:~# dmidecode
/dev/mem: Permission deniedXen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
On bare metal, this returns an identification of the computer or motherboard model.
/dev/disk/by-id
If you don't have the rights to run dmidecode
then you can use:
Virtualization Technology: QEMU
ls -1 /dev/disk/by-id/
Output
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
References
- How to detect virtualization at dmo.ca
5
Hyper-V returns a nearly worthlessVirtual Machine
fordmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.
â Zoredache
Sep 6 '13 at 23:39
1
Open VZ check for/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.
â erm3nda
Jan 21 '15 at 2:37
Bothdmidecode
and/dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:35
2
with qemu 2.5.0 (at least),dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string isStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
returns the far less generic stringQEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.
â Mark
Feb 26 '16 at 22:46
 |Â
show 2 more comments
up vote
121
down vote
accepted
up vote
121
down vote
accepted
dmidecode -s system-product-name
I have tested on Vmware Workstation, VirtualBox, QEMU with KVM, standalone QEMU with Ubuntu as the guest OS. Others have added additional platforms that they're familiar with as well.
Virtualization technologies
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual PlatformVirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBoxQemu with KVM
root@router:~# dmidecode -s system-product-name
KVMQemu (emulated)
root@router:~# dmidecode -s system-product-name
BochsMicrosoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual MachineVirtuozzo
root@router:~# dmidecode
/dev/mem: Permission deniedXen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
On bare metal, this returns an identification of the computer or motherboard model.
/dev/disk/by-id
If you don't have the rights to run dmidecode
then you can use:
Virtualization Technology: QEMU
ls -1 /dev/disk/by-id/
Output
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
References
- How to detect virtualization at dmo.ca
dmidecode -s system-product-name
I have tested on Vmware Workstation, VirtualBox, QEMU with KVM, standalone QEMU with Ubuntu as the guest OS. Others have added additional platforms that they're familiar with as well.
Virtualization technologies
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual PlatformVirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBoxQemu with KVM
root@router:~# dmidecode -s system-product-name
KVMQemu (emulated)
root@router:~# dmidecode -s system-product-name
BochsMicrosoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual MachineVirtuozzo
root@router:~# dmidecode
/dev/mem: Permission deniedXen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
On bare metal, this returns an identification of the computer or motherboard model.
/dev/disk/by-id
If you don't have the rights to run dmidecode
then you can use:
Virtualization Technology: QEMU
ls -1 /dev/disk/by-id/
Output
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
References
- How to detect virtualization at dmo.ca
edited Jun 1 '17 at 20:20
kenorb
7,611364100
7,611364100
answered Sep 6 '13 at 21:18
Rahul Patil
14.2k185882
14.2k185882
5
Hyper-V returns a nearly worthlessVirtual Machine
fordmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.
â Zoredache
Sep 6 '13 at 23:39
1
Open VZ check for/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.
â erm3nda
Jan 21 '15 at 2:37
Bothdmidecode
and/dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:35
2
with qemu 2.5.0 (at least),dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string isStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
returns the far less generic stringQEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.
â Mark
Feb 26 '16 at 22:46
 |Â
show 2 more comments
5
Hyper-V returns a nearly worthlessVirtual Machine
fordmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.
â Zoredache
Sep 6 '13 at 23:39
1
Open VZ check for/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.
â erm3nda
Jan 21 '15 at 2:37
Bothdmidecode
and/dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:35
2
with qemu 2.5.0 (at least),dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string isStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
returns the far less generic stringQEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.
â Mark
Feb 26 '16 at 22:46
5
5
Hyper-V returns a nearly worthless
Virtual Machine
for dmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.â Zoredache
Sep 6 '13 at 23:39
Hyper-V returns a nearly worthless
Virtual Machine
for dmidecode -s system-product-name
. There is nothing obvious under /dev/disk/by-id either. facter appears to detect hyperv by looking at the lspci output.â Zoredache
Sep 6 '13 at 23:39
1
1
Open VZ check for
/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
Open VZ check for
/proc/user_beancounters
â exussum
Sep 7 '13 at 12:45
+1 for
/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.â erm3nda
Jan 21 '15 at 2:37
+1 for
/proc/user_beancounters
over OpenVZ wich is likely on cheap VPS's as example.â erm3nda
Jan 21 '15 at 2:37
Both
dmidecode
and /dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572â Martin Bramwell
Jan 23 '16 at 17:35
Both
dmidecode
and /dev/disk/by-id
solutions fail in a Docker container. See unix.stackexchange.com/a/257207/106572â Martin Bramwell
Jan 23 '16 at 17:35
2
2
with qemu 2.5.0 (at least),
dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string is Standard PC (i440FX + PIIX, 1996)
. dmidecode -s system-manufacturer
returns the far less generic string QEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.â Mark
Feb 26 '16 at 22:46
with qemu 2.5.0 (at least),
dmidecode -s system-product-name
returns a generic hardware description instead of the "KVM" or "Bochs" shown above. For me, this string is Standard PC (i440FX + PIIX, 1996)
. dmidecode -s system-manufacturer
returns the far less generic string QEMU
. Since qemu allows DMI data to be provided, I suspect dmidecode is relatively easy to fool - no matter the field being read.â Mark
Feb 26 '16 at 22:46
 |Â
show 2 more comments
up vote
27
down vote
If the container is running systemd
:
$ systemd-detect-virt
lxc
See also:
- systemd-detect-virt(1)
- Detecting Virtualization
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It outputkvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!
â snetch
Oct 19 '16 at 20:00
add a comment |Â
up vote
27
down vote
If the container is running systemd
:
$ systemd-detect-virt
lxc
See also:
- systemd-detect-virt(1)
- Detecting Virtualization
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It outputkvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!
â snetch
Oct 19 '16 at 20:00
add a comment |Â
up vote
27
down vote
up vote
27
down vote
If the container is running systemd
:
$ systemd-detect-virt
lxc
See also:
- systemd-detect-virt(1)
- Detecting Virtualization
If the container is running systemd
:
$ systemd-detect-virt
lxc
See also:
- systemd-detect-virt(1)
- Detecting Virtualization
edited Sep 1 '15 at 13:19
Evgeny Vereshchagin
3,06242134
3,06242134
answered Sep 20 '14 at 15:49
starfry
2,89312645
2,89312645
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It outputkvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!
â snetch
Oct 19 '16 at 20:00
add a comment |Â
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It outputkvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!
â snetch
Oct 19 '16 at 20:00
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
This works for openvz as well.
â lepe
Jun 8 '16 at 3:23
It output
kvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!â snetch
Oct 19 '16 at 20:00
It output
kvm
for Google Compute Engine, which is what I was trying to figure out. Thanks!â snetch
Oct 19 '16 at 20:00
add a comment |Â
up vote
25
down vote
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 vsyscall32Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32VMWare
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 driveQEmu 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 driveXen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1Virtuozzo
# 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
- dmo.ca/ blog/ How to detect virtualization
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported bylshw -class system
anddmidecode
is exactly what I was hoping to find.
â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm thelshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.
â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
 |Â
show 1 more comment
up vote
25
down vote
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 vsyscall32Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32VMWare
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 driveQEmu 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 driveXen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1Virtuozzo
# 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
- dmo.ca/ blog/ How to detect virtualization
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported bylshw -class system
anddmidecode
is exactly what I was hoping to find.
â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm thelshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.
â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
 |Â
show 1 more comment
up vote
25
down vote
up vote
25
down vote
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 vsyscall32Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32VMWare
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 driveQEmu 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 driveXen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1Virtuozzo
# 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
- dmo.ca/ blog/ How to detect virtualization
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 vsyscall32Virtual Box
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32VMWare
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 driveQEmu 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 driveXen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1Virtuozzo
# 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
- dmo.ca/ blog/ How to detect virtualization
edited Sep 7 '13 at 1:58
answered Sep 6 '13 at 22:51
slmâ¦
238k65489662
238k65489662
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported bylshw -class system
anddmidecode
is exactly what I was hoping to find.
â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm thelshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.
â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
 |Â
show 1 more comment
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported bylshw -class system
anddmidecode
is exactly what I was hoping to find.
â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm thelshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.
â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported by
lshw -class system
and dmidecode
is exactly what I was hoping to find.â Gilles
Sep 6 '13 at 22:58
That kind of poking around drivers is what I hoped to avoid: it'll be different for every VM technology and dependent on the settings. The product name reported by
lshw -class system
and dmidecode
is exactly what I was hoping to find.â Gilles
Sep 6 '13 at 22:58
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm the
lshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.â slmâ¦
Sep 6 '13 at 23:08
@Gilles - yeah I didn't mean for you to actual use them, only to capture the methods. I'm bringing up a Virtual Box and VMWare instances now to confirm the
lshw
output as well for those platforms. Give me a couple of minutes and I'll update the A.â slmâ¦
Sep 6 '13 at 23:08
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
@Gilles - looks like lshw can do the job as well for all the technologies. I've moved the answers to the bottom of the answer that weren't what you were looking so that others won't have to skip past them.
â slmâ¦
Sep 7 '13 at 1:22
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
dmesg fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:43
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
@Martin - and that's why it's in the less desirable section of my answer. I typically write answers that are all inclusive, showing a variety of methods.
â slmâ¦
Jan 23 '16 at 17:55
 |Â
show 1 more comment
up vote
13
down vote
The virt-what
script seems to cover most cases well...
I do like the disclaimer from the authors:
Most of the time, using this program is the wrong thing to do. Instead you should detect the specific features you actually want to use.
It's appeared on my EL5 and EL6 systems for the past few years as part of default installations. Ubuntu has it, and the source is available as well.
The facts detected by the script are listed here, but can easily be extended for edge cases.
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
add a comment |Â
up vote
13
down vote
The virt-what
script seems to cover most cases well...
I do like the disclaimer from the authors:
Most of the time, using this program is the wrong thing to do. Instead you should detect the specific features you actually want to use.
It's appeared on my EL5 and EL6 systems for the past few years as part of default installations. Ubuntu has it, and the source is available as well.
The facts detected by the script are listed here, but can easily be extended for edge cases.
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
add a comment |Â
up vote
13
down vote
up vote
13
down vote
The virt-what
script seems to cover most cases well...
I do like the disclaimer from the authors:
Most of the time, using this program is the wrong thing to do. Instead you should detect the specific features you actually want to use.
It's appeared on my EL5 and EL6 systems for the past few years as part of default installations. Ubuntu has it, and the source is available as well.
The facts detected by the script are listed here, but can easily be extended for edge cases.
The virt-what
script seems to cover most cases well...
I do like the disclaimer from the authors:
Most of the time, using this program is the wrong thing to do. Instead you should detect the specific features you actually want to use.
It's appeared on my EL5 and EL6 systems for the past few years as part of default installations. Ubuntu has it, and the source is available as well.
The facts detected by the script are listed here, but can easily be extended for edge cases.
edited Mar 23 '14 at 14:35
answered Mar 23 '14 at 8:32
ewwhite
1,278814
1,278814
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
add a comment |Â
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
Link? Which systems does it recognize?
â Gilles
Mar 23 '14 at 13:50
1
1
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
@Gilles Edited: But the script generally detects KVM, Xen, QEMU, VirtualBox, Parallels, OpenVZ, IBM System Z, LPAR, z/VM, Hitachi Virtage, VMWare, Microsoft Hyper-V. Hmm... should LXC be included?
â ewwhite
Mar 23 '14 at 14:34
LXC is included now.
â ewwhite
May 4 '15 at 13:24
LXC is included now.
â ewwhite
May 4 '15 at 13:24
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
As of January 2016, it fails with Docker. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:26
add a comment |Â
up vote
12
down vote
isVMware() [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]];
isXen () [[ $(dmidecode -s system-manufacturer) = 'Xen' ]];
isKVM () [[ $(dmidecode -s system-product-name) = 'KVM' ]];
isVBox () [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]];
isVM ()
Those are the tests we use at my company.
add a comment |Â
up vote
12
down vote
isVMware() [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]];
isXen () [[ $(dmidecode -s system-manufacturer) = 'Xen' ]];
isKVM () [[ $(dmidecode -s system-product-name) = 'KVM' ]];
isVBox () [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]];
isVM ()
Those are the tests we use at my company.
add a comment |Â
up vote
12
down vote
up vote
12
down vote
isVMware() [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]];
isXen () [[ $(dmidecode -s system-manufacturer) = 'Xen' ]];
isKVM () [[ $(dmidecode -s system-product-name) = 'KVM' ]];
isVBox () [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]];
isVM ()
Those are the tests we use at my company.
isVMware() [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]];
isXen () [[ $(dmidecode -s system-manufacturer) = 'Xen' ]];
isKVM () [[ $(dmidecode -s system-product-name) = 'KVM' ]];
isVBox () [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]];
isVM ()
Those are the tests we use at my company.
answered Sep 6 '13 at 23:00
John Kugelman
1,5941917
1,5941917
add a comment |Â
add a comment |Â
up vote
7
down vote
If you get the person you're helping to install facter
, you can do
facter virtual
No root access needed.
Debian Guest on Debian host:
[user@guest]$ facter virtual
virtualbox
I can't vouch for how well this would work with Xen/KVM/Qemu...
add a comment |Â
up vote
7
down vote
If you get the person you're helping to install facter
, you can do
facter virtual
No root access needed.
Debian Guest on Debian host:
[user@guest]$ facter virtual
virtualbox
I can't vouch for how well this would work with Xen/KVM/Qemu...
add a comment |Â
up vote
7
down vote
up vote
7
down vote
If you get the person you're helping to install facter
, you can do
facter virtual
No root access needed.
Debian Guest on Debian host:
[user@guest]$ facter virtual
virtualbox
I can't vouch for how well this would work with Xen/KVM/Qemu...
If you get the person you're helping to install facter
, you can do
facter virtual
No root access needed.
Debian Guest on Debian host:
[user@guest]$ facter virtual
virtualbox
I can't vouch for how well this would work with Xen/KVM/Qemu...
answered Sep 6 '13 at 21:31
Joseph R.
27.1k368111
27.1k368111
add a comment |Â
add a comment |Â
up vote
7
down vote
In "recent" linux kernels, the kernel detects the hypervisor for you and prints a message that is easily available with dmesg
. This will tell you simply:
dmesg | grep "Hypervisor detected"
For example:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
As for what "recent" means, I am unclear which kernel version it was officially released in, but the commit that introduced this feature in the code base was on May 7, 2010. See here.
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:44
add a comment |Â
up vote
7
down vote
In "recent" linux kernels, the kernel detects the hypervisor for you and prints a message that is easily available with dmesg
. This will tell you simply:
dmesg | grep "Hypervisor detected"
For example:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
As for what "recent" means, I am unclear which kernel version it was officially released in, but the commit that introduced this feature in the code base was on May 7, 2010. See here.
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:44
add a comment |Â
up vote
7
down vote
up vote
7
down vote
In "recent" linux kernels, the kernel detects the hypervisor for you and prints a message that is easily available with dmesg
. This will tell you simply:
dmesg | grep "Hypervisor detected"
For example:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
As for what "recent" means, I am unclear which kernel version it was officially released in, but the commit that introduced this feature in the code base was on May 7, 2010. See here.
In "recent" linux kernels, the kernel detects the hypervisor for you and prints a message that is easily available with dmesg
. This will tell you simply:
dmesg | grep "Hypervisor detected"
For example:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
As for what "recent" means, I am unclear which kernel version it was officially released in, but the commit that introduced this feature in the code base was on May 7, 2010. See here.
answered Jan 22 '15 at 18:37
Russ
40859
40859
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:44
add a comment |Â
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572
â Martin Bramwell
Jan 23 '16 at 17:44
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572â Martin Bramwell
Jan 23 '16 at 17:44
dmesg
fills a fixed size ring buffer with all kinds of stuff. It is completely inappropriate for this task. See unix.stackexchange.com/a/257207/106572â Martin Bramwell
Jan 23 '16 at 17:44
add a comment |Â
up vote
4
down vote
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
add a comment |Â
up vote
4
down vote
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
add a comment |Â
up vote
4
down vote
up vote
4
down vote
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
answered Mar 15 '17 at 6:34
Derick
411
411
add a comment |Â
add a comment |Â
up vote
3
down vote
For VirtualBox, you could lspci | grep -i virtualbox
, that gives:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Alternatively, dmidecode -s system-product-name
(as @Rahul Patil suggests) is even more direct to the point (but needs root):
$ sudo dmidecode -s system-product-name
VirtualBox
For non-KVM QEMU, dmidecode -s system-product-name
confusingly returns Bochs, but dmesg | grep -i qemu
works (the storage devices that QEMU emulates usually have the name QEMU HARDDISK
, QEMU DVD-ROM
etc...).
add a comment |Â
up vote
3
down vote
For VirtualBox, you could lspci | grep -i virtualbox
, that gives:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Alternatively, dmidecode -s system-product-name
(as @Rahul Patil suggests) is even more direct to the point (but needs root):
$ sudo dmidecode -s system-product-name
VirtualBox
For non-KVM QEMU, dmidecode -s system-product-name
confusingly returns Bochs, but dmesg | grep -i qemu
works (the storage devices that QEMU emulates usually have the name QEMU HARDDISK
, QEMU DVD-ROM
etc...).
add a comment |Â
up vote
3
down vote
up vote
3
down vote
For VirtualBox, you could lspci | grep -i virtualbox
, that gives:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Alternatively, dmidecode -s system-product-name
(as @Rahul Patil suggests) is even more direct to the point (but needs root):
$ sudo dmidecode -s system-product-name
VirtualBox
For non-KVM QEMU, dmidecode -s system-product-name
confusingly returns Bochs, but dmesg | grep -i qemu
works (the storage devices that QEMU emulates usually have the name QEMU HARDDISK
, QEMU DVD-ROM
etc...).
For VirtualBox, you could lspci | grep -i virtualbox
, that gives:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Alternatively, dmidecode -s system-product-name
(as @Rahul Patil suggests) is even more direct to the point (but needs root):
$ sudo dmidecode -s system-product-name
VirtualBox
For non-KVM QEMU, dmidecode -s system-product-name
confusingly returns Bochs, but dmesg | grep -i qemu
works (the storage devices that QEMU emulates usually have the name QEMU HARDDISK
, QEMU DVD-ROM
etc...).
edited Sep 6 '13 at 23:10
answered Sep 6 '13 at 21:23
Renan
14.2k65274
14.2k65274
add a comment |Â
add a comment |Â
up vote
3
down vote
Sometimes it's tricky :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
add a comment |Â
up vote
3
down vote
Sometimes it's tricky :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
add a comment |Â
up vote
3
down vote
up vote
3
down vote
Sometimes it's tricky :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
Sometimes it's tricky :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
answered Oct 10 '13 at 10:47
jan.polnicky
311
311
add a comment |Â
add a comment |Â
up vote
1
down vote
Apparently virtualization comes in several parts - in my case QEMU, Bochs and KVM (then Ubuntu 14.04). I found the easiest way to discover the hypervisor in use was:
sudo apt-get install virt-what
sudo virt-what
which in my case returned simply kvm
which was the basic information I was looking for (also the OP I think), because it tells me what I am allowed to do (e.g. run ipset to block a DDoS attack) and how resources are shared between VMs.
In addition I tried
sudo dmidecode -s system-product-name
and
sudo lshw -class system
neither of which mention KVM but they did both inform me that my hardware emulation was provided by Bochs
which I confess I hadn't even heard of, but a quick search turned up interesting information (http://en.wikipedia.org/wiki/Bochs). The lshw command is slightly more informative than dmidecode (e.g. telling me it's 64-bit).
The other answers didn't really tell me anything useful - facter virtual
just returned physical
and ls -1 /dev/disk/by-id/
returned ata-QEMU_DVD-ROM_QM00003
which shows QEMU is involved but I don't have access to the emulated DVD-ROM anyway.
add a comment |Â
up vote
1
down vote
Apparently virtualization comes in several parts - in my case QEMU, Bochs and KVM (then Ubuntu 14.04). I found the easiest way to discover the hypervisor in use was:
sudo apt-get install virt-what
sudo virt-what
which in my case returned simply kvm
which was the basic information I was looking for (also the OP I think), because it tells me what I am allowed to do (e.g. run ipset to block a DDoS attack) and how resources are shared between VMs.
In addition I tried
sudo dmidecode -s system-product-name
and
sudo lshw -class system
neither of which mention KVM but they did both inform me that my hardware emulation was provided by Bochs
which I confess I hadn't even heard of, but a quick search turned up interesting information (http://en.wikipedia.org/wiki/Bochs). The lshw command is slightly more informative than dmidecode (e.g. telling me it's 64-bit).
The other answers didn't really tell me anything useful - facter virtual
just returned physical
and ls -1 /dev/disk/by-id/
returned ata-QEMU_DVD-ROM_QM00003
which shows QEMU is involved but I don't have access to the emulated DVD-ROM anyway.
add a comment |Â
up vote
1
down vote
up vote
1
down vote
Apparently virtualization comes in several parts - in my case QEMU, Bochs and KVM (then Ubuntu 14.04). I found the easiest way to discover the hypervisor in use was:
sudo apt-get install virt-what
sudo virt-what
which in my case returned simply kvm
which was the basic information I was looking for (also the OP I think), because it tells me what I am allowed to do (e.g. run ipset to block a DDoS attack) and how resources are shared between VMs.
In addition I tried
sudo dmidecode -s system-product-name
and
sudo lshw -class system
neither of which mention KVM but they did both inform me that my hardware emulation was provided by Bochs
which I confess I hadn't even heard of, but a quick search turned up interesting information (http://en.wikipedia.org/wiki/Bochs). The lshw command is slightly more informative than dmidecode (e.g. telling me it's 64-bit).
The other answers didn't really tell me anything useful - facter virtual
just returned physical
and ls -1 /dev/disk/by-id/
returned ata-QEMU_DVD-ROM_QM00003
which shows QEMU is involved but I don't have access to the emulated DVD-ROM anyway.
Apparently virtualization comes in several parts - in my case QEMU, Bochs and KVM (then Ubuntu 14.04). I found the easiest way to discover the hypervisor in use was:
sudo apt-get install virt-what
sudo virt-what
which in my case returned simply kvm
which was the basic information I was looking for (also the OP I think), because it tells me what I am allowed to do (e.g. run ipset to block a DDoS attack) and how resources are shared between VMs.
In addition I tried
sudo dmidecode -s system-product-name
and
sudo lshw -class system
neither of which mention KVM but they did both inform me that my hardware emulation was provided by Bochs
which I confess I hadn't even heard of, but a quick search turned up interesting information (http://en.wikipedia.org/wiki/Bochs). The lshw command is slightly more informative than dmidecode (e.g. telling me it's 64-bit).
The other answers didn't really tell me anything useful - facter virtual
just returned physical
and ls -1 /dev/disk/by-id/
returned ata-QEMU_DVD-ROM_QM00003
which shows QEMU is involved but I don't have access to the emulated DVD-ROM anyway.
answered Jan 16 '15 at 17:36
Phil McKerracher
1112
1112
add a comment |Â
add a comment |Â
up vote
1
down vote
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt
As usual run:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
add a comment |Â
up vote
1
down vote
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt
As usual run:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
add a comment |Â
up vote
1
down vote
up vote
1
down vote
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt
As usual run:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt
As usual run:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
answered Aug 2 '15 at 21:01
gavenkoa
23939
23939
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
add a comment |Â
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
You beat me to imvirt, and I did not known virt-what. would you detail the output of both as previous answers to improve your post?
â Rui F Ribeiro
Mar 15 '17 at 7:04
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f89714%2feasy-way-to-determine-virtualization-technology%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password