我需要确定我的 Python 脚本何时在 Xen 虚拟机中运行。 VM 将运行 Linux。
我在平台模块中找不到任何明显的东西。我能得到的最接近的是 platform.platform() 中“xen”的出现
>>> platform.platform()
'Linux-2.6.18-194.el5xen-x86_64-with-redhat-5.5-Final'
确定这一点的最佳方法是什么?
谢谢。
最佳答案
仅供引用,如果它是半虚拟 VM,则应该有一个/proc/xen/capabilities 文件。如果它的内容是“control_d”,那么,你在 dom0 下运行,否则,你在 domU 上运行。
不要依赖内核版本。如果 VM 是使用自定义内核或不同内核版本甚至是现代 PV-ops 内核(其中没有“xen”字符串,与 REDHAT 的内核不同)编译的,那么您的代码将无法工作。
另一方面,还有其他巧妙的技巧。 cpuid 指令就是这样一个例子。我不知道如何在 python 中执行此操作,但如果将 eax 设置为 1 并调用 cpuid,则 ECX 的第 31 位会有答案。如果已设置,则您正在运行管理程序。否则,你不是。但这仅适用于 64 位平台。
关于python - 如何在 Python 脚本中检测 Xen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338768/