virt-what is a shell script which can be used to detect if the program
is running in a virtual machine.
virt-what supports a very large number of different hypervisor types,
including common open source hypervisors (KVM, Xen, QEMU, VirtualBox),
mainframe systems like IBM Systemz, LPAR, z/VM, hardware partitioning
schemes like Hitachi Virtage, proprietary hypervisors like VMWare,
Microsoft Hyper-V and much more.
仅供参考,如果它是一个准虚拟虚拟机,那么应该有一个/proc/xen/capabilities文件。如果它的内容是“control\d”,那么您运行的是dom0-else,您运行的是domU。
不要依赖内核版本。如果VM是用一个定制的内核或者不同的内核版本或者甚至是一个现代的PV-ops内核(不像REDHAT的内核,它没有“xen”字符串),那么您的代码就不能工作了。在
另一方面,还有其他妙招。cpuid指令就是这样一个例子。我不知道如何在python中实现,但是如果您将eax设置为1并调用cpuid,ECX的第31位将得到答案。如果已设置,则表示您正在运行hypervisor。否则,你就不是了。但这只适用于64位平台。在
你能相信
platform.platform()
吗?我不知道。如果你可以,而且每次都有效:有不止一种方法可以做到这一点。你想追随哪一个取决于你自己。看看这个问题here在SO上,它只回答这个问题。现在您的任务是在Python中实现这一点,这可能涉及调用一些外部进程并检查输出。有可能吗?对。在
什么是:http://people.redhat.com/~rjones/virt-what/
相关问题 更多 >
编程相关推荐