Řešení 1:
hostnamectl
je váš přítel (vyžaduje systemd
).
Několik příkladů:
Laptop bez virtualizace
$ 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
Řešení 2:
Pokud vám hostitel virtuálního počítače nelže, lze to obecně zjistit kontrolou „hardwaru“, který host virtuálního počítače vidí.
Nejjednodušší je pravděpodobně použít program jako virt-what, který provede analýzu za vás. Zde slepě předpokládám, že mimochodem provozujete nějakou distribuci založenou na Linuxu.
Možná by také stálo za to podívat se na puppet's facter, který také používá podobné techniky k určení, v jakém prostředí virtuálního počítače běží.
Nebo se můžete zeptat kohokoliv, od koho si pronajímáte VPS? :-)
Řešení 3:
Použijte virt-what
příkaz k určení typu virtualizační technologie, kterou systém používá.
Viz:http://people.redhat.com/~rjones/virt-what/
Řešení 4:
Systemd zahrnuje systemd-detect-virt
Řešení 5:
Debian přichází s tímto malým balíčkem pro detekci typu virtualizace:
$ sudo apt-get install virt-what
$ virt-what
a trochu větší kvůli závislostem na Perlu:
$ sudo apt-get install imvirt
$ imvirt