解決策 1:
hostnamectl
あなたの友達です(systemd
が必要です) ).
いくつかの例:
仮想化されていないラップトップ
$ 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
ゼン
$ 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
解決策 2:
VM ホストが嘘をついていない限り、VM ゲストが認識している「ハードウェア」を調べることで、通常は把握できます。
おそらく最も簡単なのは、解析を行う virt-what のようなプログラムを使用することです。ここでは、何らかの Linux ベースのディストリビューションを実行していると盲目的に想定しています。
puppet's factor も検討する価値があるかもしれません。これも同様の手法を使用して、どのような種類の VM 環境で実行されているかを判断しています。
または、たまたま VPS を借りている人に聞いてもらえますか? :-)
解決策 3:
virt-what
を使用 コマンドを実行して、システムが使用している仮想化テクノロジのタイプを特定します。
参照:http://people.redhat.com/~rjones/virt-what/
解決策 4:
Systemd には systemd-detect-virt が含まれています
解決策 5:
Debian には、仮想化タイプを検出するためのこの小さなパッケージが付属しています:
$ sudo apt-get install virt-what
$ virt-what
Perl の依存関係のために少し大きくなります:
$ sudo apt-get install imvirt
$ imvirt