python - 如何在 Python 脚本中检测 Xen?

标签 python xen

我需要确定我的 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/

相关文章:

linux - Xen HVM domU VNC 不刷新屏幕

python - 如何使用带通配符的 win32gui FindWindow

python - Cython 将字符串作为字节传递给 C

python - 如何销毁放置在 if 条件中的按钮小部件? Tkinter

bash - 在 bash 中检测虚拟化

linux - xen 使用命令行创建新虚拟机

python - 嵌套列表的基本 Python 操作

python - Maya Python 更新属性

virtualization - 如何确定 xen DomU 是 HVM 还是 PV

cloud - 为什么centos6.0去掉了对xen的支持