mdpc Asked: 2009-09-16 15:21:22 +0800 CST2009-09-16 15:21:22 +0800 CST 2009-09-16 15:21:22 +0800 CST VMware Linux 服务器——你怎么知道你是虚拟机还是真正的硬件? 772 一个有趣的问题。我已登录到 Linux(很可能是 SuSE)主机。有什么方法可以让我以编程方式告诉我我是否是 VM 主机? 还假设未安装 vmtools。 linux 14 个回答 Voted Best Answer Greg Cain 2011-06-11T11:24:22+08:002011-06-11T11:24:22+08:00 使用标准 Linux 工具检查系统上的硬件。 cat /proc/scsi/scsi 或者 ethtool -i eth0 或者 dmidecode | grep -i vmware 如果这些命令的输出显示制造商名称为“VMWare”的硬件,则说明您使用的是 VMWare 虚拟机。由于系统配置和工具不同,此处提供了多个命令。 user155575 2013-01-23T11:14:35+08:002013-01-23T11:14:35+08:00 facter virtual xenu 表示它是虚拟机。如果它返回“物理”,则相反(不是虚拟机),例如: facter virtual Physical Zoredache 2009-09-16T15:37:04+08:002009-09-16T15:37:04+08:00 环顾四周,您可能会有所了解/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 Raynet 2009-09-16T16:34:01+08:002009-09-16T16:34:01+08:00 有一个方便的应用程序可能会有所帮助,称为virt-what。我没有将它与 VMWare 一起使用,但它确实与 Qemu 一起工作得很好。 staticsan 2009-09-16T15:38:27+08:002009-09-16T15:38:27+08:00 一些虚拟环境用一些有说服力的名字来命名他们的一些虚拟设备,例如,VirtualBox 展示了一个自称为“VirtualBox 显示适配器”的显卡。但是寻找那些将您与特定的虚拟机联系起来,并且可能是一个狭窄的版本范围。 您的代码可能会看到它可以设置什么样的虚拟化。如果这完全失败,您可能在虚拟机中。但是您可能很容易处于没有任何支持 VM 的硬件的盒子上。 Bill Weiss 2009-09-19T12:25:09+08:002009-09-19T12:25:09+08:00 有很多代码可以检测您是否在虚拟机中。从红色药丸开始,然后从那里搜索。 Offensive Computing 的这篇论文也是一本不错的读物。 那是如果上面那些简单的方法都不起作用:) gabo34 2014-04-11T10:43:21+08:002014-04-11T10:43:21+08:00 对于 Linux,您键入dmesg |grep DMI: 虚拟主机输出 [root@myhost ~]# dmesg |grep DMI 存在 DMI 2.3。 DMI:Microsoft Corporation 虚拟机/虚拟机,BIOS 090006 05/23/2012 [root@myhost ~]# dmesg |grep -i virtual DMI:Microsoft Corporation 虚拟机/虚拟机,BIOS 090006 05/23/2012 在裸机上引导半虚拟化内核 输入:Macintosh 鼠标按钮模拟为 /devices/virtual/input/input1 scsi 0:0:0:0:直接访问 Msft 虚拟磁盘 1.0 PQ:0 ANSI:4 输入:Microsoft Vmbus HID-compliant Mouse as /devices/virtual/input/input4 对于物理主机示例 [root@backdev1 ~]# dmesg |grep DMI DMI 2.5 存在。 DMI:IBM System x3650 M3 -[7945AC1]-/90Y4784,BIOS -[D6E153AUS-1.12]- 06/30/2011 Zypher 2009-09-16T16:18:02+08:002009-09-16T16:18:02+08:00 你也可以在这里搜索你的mac地址的第一部分,看看它是否被列为分配给任何虚拟化公司。 Heath 2009-09-19T10:55:48+08:002009-09-19T10:55:48+08:00 虚拟设备也将通过 /proc 中的 lspci 和/或磁盘设备信息显示: lspci | grep -i vmware grep -i vmware /proc/scsi/scsi /proc/ide/*/model Mike S 2015-02-21T12:05:52+08:002015-02-21T12:05:52+08:00 在 Linux 中,系统信息显示在 /sys/devices/virtual/dmi/id/ 中。请在此处查看我的答案以获取方便的脚本,以向您显示所有可用信息。 不需要根。
使用标准 Linux 工具检查系统上的硬件。
或者
或者
如果这些命令的输出显示制造商名称为“VMWare”的硬件,则说明您使用的是 VMWare 虚拟机。由于系统配置和工具不同,此处提供了多个命令。
表示它是虚拟机。如果它返回“物理”,则相反(不是虚拟机),例如:
环顾四周,您可能会有所了解
/sys
。例如/sys/class/dmi/id/sys_vendor
,值为VMware, Inc.
。如果已安装,您可以使用lshw。该命令
lshw -class system
在我的系统上返回:有一个方便的应用程序可能会有所帮助,称为virt-what。我没有将它与 VMWare 一起使用,但它确实与 Qemu 一起工作得很好。
一些虚拟环境用一些有说服力的名字来命名他们的一些虚拟设备,例如,VirtualBox 展示了一个自称为“VirtualBox 显示适配器”的显卡。但是寻找那些将您与特定的虚拟机联系起来,并且可能是一个狭窄的版本范围。
您的代码可能会看到它可以设置什么样的虚拟化。如果这完全失败,您可能在虚拟机中。但是您可能很容易处于没有任何支持 VM 的硬件的盒子上。
有很多代码可以检测您是否在虚拟机中。从红色药丸开始,然后从那里搜索。 Offensive Computing 的这篇论文也是一本不错的读物。
那是如果上面那些简单的方法都不起作用:)
对于 Linux,您键入
dmesg |grep DMI
:虚拟主机输出
对于物理主机示例
你也可以在这里搜索你的mac地址的第一部分,看看它是否被列为分配给任何虚拟化公司。
虚拟设备也将通过 /proc 中的 lspci 和/或磁盘设备信息显示:
在 Linux 中,系统信息显示在 /sys/devices/virtual/dmi/id/ 中。请在此处查看我的答案以获取方便的脚本,以向您显示所有可用信息。
不需要根。