dmidecode -s system-product-name
Ho testato su Vmware Workstation, VirtualBox, QEMU con KVM, QEMU autonomo con Ubuntu come sistema operativo guest. Anche altri hanno aggiunto altre piattaforme con cui hanno familiarità.
Tecnologie di virtualizzazione
-
Workstation VMware
[email protected]:~# dmidecode -s system-product-name VMware Virtual Platform
-
Scatola virtuale
[email protected]:~# dmidecode -s system-product-name VirtualBox
-
Qemu con KVM
[email protected]:~# dmidecode -s system-product-name KVM
-
Qemu (emulato)
[email protected]:~# dmidecode -s system-product-name Bochs
-
MicrosoftVirtualPC
[email protected]:~# dmidecode | egrep -i 'manufacturer|product' Manufacturer: Microsoft Corporation Product Name: Virtual Machine
-
Virtuozzi
[email protected]:~# dmidecode /dev/mem: Permission denied
-
Xen
[email protected]:~# dmidecode | grep -i domU Product Name: HVM domU
Su bare metal, restituisce un'identificazione del modello del computer o della scheda madre.
/dev/disk/by-id
Se non hai i diritti per eseguire dmidecode
allora puoi usare:
Tecnologia di virtualizzazione:QEMU
ls -1 /dev/disk/by-id/
Uscita
[[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
Riferimenti
- Come rilevare la virtualizzazione su dmo.ca
Se il contenitore sta eseguendo systemd
:
$ systemd-detect-virt
lxc
Su KVM per esempio restituisce:
kvm
e su un host non virtualizzato:
none
Vedi anche:
- systemd-detect-virt(1)
- Rilevamento della virtualizzazione
Metodo desiderabile
lshw
Questo comando produce il seguente output su vari ospiti di tecnologia VM.
$ sudo lshw -class system
Uscita
-
KVM
mungr description: Computer product: KVM vendor: Red Hat width: 64 bits capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
-
Scatola virtuale
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
Se sei su Ubuntu/Debian c'è il pacchetto open-vm-tools
può essere installato. Fornisce vmware-checkvm
. Restituisce solo una cifra. Un 0
significa che è una VM, un 1
significa che è un sistema fisico.
Metodi meno desiderabili
Se è KVM, /proc/scsi/scsi
e ethtool
opzioni vengono visualizzate come segue:
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
ettool
$ 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 fa parte di KVM. Il /proc/scsi/scsi
ti dice che sei in una VM, e che molto probabilmente sei KVM.
dmesg
Utilizzando i seguenti comandi 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 o KVM
Se
"-cpu host"
l'opzione non è stata utilizzata, QEmu e KVM si identificheranno come:CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
in caso contrario, le informazioni sulla CPU dell'host verranno utilizzate sia in
dmesg
o in/proc/cpuinfo
. Tuttavia, dovresti vedere qualcosa come:[ 0.000000] Booting paravirtualized kernel on KVM
Nei kernel più recenti che capiscono di essere in esecuzione sotto la paravirtualizzazione.
-
MicrosoftVirtualPC
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
-
Virtuozzi
# 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
Riferimenti
- dmo.ca/ blog/ Come rilevare la virtualizzazione