2014-03-12 63 views
3

我的bash腳本中的一條命令將取決於服務器(XEN或OpenVZ或KVM)的虛擬化。我如何檢查這些中的哪些在bash中正在使用?在bash中檢測虛擬化

回答

3

我發現了一個小的shell腳本,它能夠檢測虛擬化,它處理的Xen,OpenVZ是KVM,Parallels的,VMware和許多更

virt-what

安裝使用yum是非常直截了當

這裏是我的系統上的輸出

$ virt-what 
kvm 
0

如果你想檢測的Xen主機(dom0中),檢查

[ "$(cat /proc/xen/capabilities)" == "control_d" ] 

如果你想在虛擬機檢測,
你需要在虛擬機上執行cpuid指令,與original_eax = 1。
如果生成的ecx的最高有效位設置爲((ecx & 0x80000000) != 0),那麼您處於虛擬機下。
這是假設您的管理程序支持viridian interface。 Xen的確如此。
cpuid軟件包很容易用於許多Linux發行版。我相信Windows端口也可用。否則,代碼是非常簡單的,你寫...

+0

Xen的檢測是明確的,但'OpenVz' – user2650277

+0

所以只是爲了確認,你想檢測dom0是否在'OpenVz'下。對? – anishsane

+0

我從來沒有使用'OpenVz' ...所以不能真正檢查它.. – anishsane

3

有一個非常有用的腳本0123'處理Xen,OpenVZ,VMware,VirtualBox,KVM,和許多其他人。它可以作爲Debian中的軟件包或imvirt web site提供。

$ imvirt 
Xen PV 4.1 
+0

不錯......我認爲它也必須爲centos :) – user2650277

+0

@ user2650277 - 網站提到了一個獨立的包,包括所有的Perl依賴關係。這應該在CentOS上運行。 –

+0

我做過'yum install imvirt',不幸的是imvirt命令在我的系統上顯示錯誤。它似乎無法檢測到我在KVM上 – user2650277