VMware Linux Server——你怎么知道你是虚拟机还是真正的硬件?

mdp*_*dpc 47 virtualization linux

一个有趣的问题。我已经登录到 Linux(很可能是 SuSE)主机。有什么方法可以通过编程方式告诉我我是不是 VM 主机?

还假设未安装 vmtools。

小智 29

使用标准 Linux 工具检查系统上的硬件。

cat /proc/scsi/scsi
Run Code Online (Sandbox Code Playgroud)

或者

ethtool -i eth0
Run Code Online (Sandbox Code Playgroud)

或者

dmidecode | grep -i vmware
Run Code Online (Sandbox Code Playgroud)

如果这些命令的输出显示制造商名称为“VMWare”的硬件,则您使用的是 VMWare VM。由于系统配置和工具不同,这里提供了多个命令。

  • 你能解释一下这些命令的作用,而不是只提供模糊的命令吗? (12认同)

小智 13

facter virtual 
xenu
Run Code Online (Sandbox Code Playgroud)

表示它是一个虚拟机。如果它返回“物理”,则相反(不是虚拟机),例如:

facter virtual
Physical
Run Code Online (Sandbox Code Playgroud)


Zor*_*che 11

您或许可以通过在 下查看来了解和了解/sys。例如/sys/class/dmi/id/sys_vendor,值为VMware, Inc.

如果已安装,您可以使用lshw。该命令lshw -class system在我的系统上返回此信息:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
Run Code Online (Sandbox Code Playgroud)


Ray*_*net 11

有一个方便的应用程序可能会有所帮助,称为virt-what。我没有将它与 VMWare 一起使用,但它与 Qemu 一起使用得很好。


sta*_*san 6

一些虚拟环境将它们的一些虚拟设备命名为有点明显的名称,例如,VirtualBox 展示了一个自称为“VirtualBox 显示适配器”的图形卡。但是,寻找那些将您与特定 VM 以及可能范围狭窄的版本联系起来的人。

您的代码可能会看到它可以设置什么样的虚拟化。如果完全失败,则您可能在虚拟机中。但是您可能很容易在一个没有任何支持 VM 的硬件的机器上。