dmidecode -s system-product-name
He probado en Vmware Workstation, VirtualBox, QEMU con KVM, QEMU independiente con Ubuntu como sistema operativo invitado. Otros han agregado plataformas adicionales con las que también están familiarizados.
Tecnologías de virtualización
-
Estación de trabajo VMware
[email protected]:~# dmidecode -s system-product-name VMware Virtual Platform
-
Caja virtual
[email protected]:~# dmidecode -s system-product-name VirtualBox
-
Qemu con KVM
[email protected]:~# dmidecode -s system-product-name KVM
-
Qemu (emulado)
[email protected]:~# dmidecode -s system-product-name Bochs
-
PC virtual de Microsoft
[email protected]:~# dmidecode | egrep -i 'manufacturer|product' Manufacturer: Microsoft Corporation Product Name: Virtual Machine
-
Virtuoso
[email protected]:~# dmidecode /dev/mem: Permission denied
-
Xen
[email protected]:~# dmidecode | grep -i domU Product Name: HVM domU
En bare metal, esto devuelve una identificación de la computadora o el modelo de placa base.
/dev/disk/by-id
Si no tiene los derechos para ejecutar dmidecode
entonces puedes usar:
Tecnología de virtualización:QEMU
ls -1 /dev/disk/by-id/
Salida
[[email protected] ~]# 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
Referencias
- Cómo detectar la virtualización en dmo.ca
Si el contenedor está ejecutando systemd
:
$ systemd-detect-virt
lxc
En KVM, por ejemplo, devuelve:
kvm
y en un host no virtualizado:
none
Véase también:
- systemd-detectar-virt(1)
- Detección de virtualización
Método deseable
lshw
Este comando produce el siguiente resultado en varios invitados de tecnología VM.
$ sudo lshw -class system
Salida
-
KVM
mungr description: Computer product: KVM vendor: Red Hat width: 64 bits capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
-
Caja Virtual
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
Secuencias de comandos
Si está en Ubuntu/Debian, existe el paquete open-vm-tools
se puede instalar. Proporciona vmware-checkvm
. Devuelve solo un dígito. Un 0
significa que es una máquina virtual, un 1
significa que es un sistema físico.
Métodos menos deseables
Si es KVM el /proc/scsi/scsi
y ethtool
las opciones se muestran de la siguiente manera:
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
herramienta ética
$ 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
virtio_net es parte de KVM. El /proc/scsi/scsi
te dice que estás en una VM y que probablemente seas KVM.
dmesg
Usando los siguientes comandos grep
pasando por dmesg
registro.
$ 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 o KVM
Si el
"-cpu host"
no se ha utilizado la opción, QEmu y KVM se identificarán como:CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
de lo contrario, la información de la CPU del host se usará tanto en
dmesg
, o en/proc/cpuinfo
. Sin embargo, debería ver algo como:[ 0.000000] Booting paravirtualized kernel on KVM
En kernels más nuevos que entienden que se están ejecutando bajo paravirtualización.
-
PC virtual de Microsoft
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
-
Virtuoso
# 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
Referencias
- dmo.ca/ blog/ Cómo detectar la virtualización