我需要确定我的Python脚本何时在Xen虚拟机中运行.VM将运行Linux.
我在平台模块中找不到任何明显的东西.我能得到的最接近的是platform.platform()中'xen'的外观
>>> platform.platform()
'Linux-2.6.18-194.el5xen-x86_64-with-redhat-5.5-Final'
Run Code Online (Sandbox Code Playgroud)
确定这个的最佳方法是什么?
谢谢.
小智 7
仅供参考,如果是半虚拟VM,则应该有/ proc/xen/capabilities文件.如果它的内容是"control_d"那么,你在dom0下运行,你正在运行domU.
不要依赖内核版本.如果使用自定义内核或不同内核版本编译VM,或者甚至是现代PV-ops内核(其中没有"xen"字符串,与REDHAT的内核不同),那么您的代码将无法运行.
另一方面,还有其他漂亮的技巧.cpuid指令就是这样一个例子.我不知道如何在python中做到这一点,但是如果你将eax设置为1并调用cpuid,那么ECX的第31位将得到答案.如果设置,则表示您正在运行虚拟机管理程序.否则,你不是.但这仅适用于64位平台.
Blu*_*ers -1
import re, platform
def is_xen():
return bool(re.search('xen', platform.platform()))
Run Code Online (Sandbox Code Playgroud)