【问题标题】:Detect virtualization in bash在 bash 中检测虚拟化
【发布时间】:2014-03-12 14:58:25
【问题描述】:

我的 bash 脚本中的一个命令将取决于服务器的虚拟化(XEN 或 OpenVZ 或 KVM )。如何检查 bash 中使用了哪些?

【问题讨论】:

    标签: bash virtualization kvm xen openvz


    【解决方案1】:

    有一个非常有用的脚本imvirt 可以处理 Xen、OpenVZ、VMware、VirtualBox、KVM 和许多其他的。它在 Debian 中以软件包形式提供,或者来自 imvirt web site

    $ imvirt
    Xen PV 4.1
    

    【讨论】:

    • @user2650277 - 该网站提到了一个独立包,其中包括所有 Perl 依赖项。那应该在 CentOS 上运行。
    • 我做了yum install imvirt,不幸的是,imvirt 命令在我的系统上显示错误。似乎无法检测到我在 KVM 上
    【解决方案2】:

    我发现了一个能够检测虚拟化的小型 shell 脚本,它可以处理 Xen、OpenVZ、KVM、Parallels、Vmware 等等

    virt-what

    使用 yum 安装非常简单

    这是我系统上的输出

    $ virt-what
    kvm 
    

    【讨论】:

      【解决方案3】:

      如果要检测 xen 的主机 (dom0),请检查

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

      如果要在 VM 中检测,
      你需要在VM中执行cpuid指令,original_eax=1。
      如果生成的 ecx 的 MSB 设置为 ((ecx & 0x80000000) != 0),那么您在 VM 下。
      这是假设您的管理程序支持viridian interface。 Xen 可以。
      cpuid 软件包可轻松用于许多 Linux 发行版。我敢肯定 Windows 端口也将可用。否则,代码对你来说很简单……

      【讨论】:

      • 所以只是为了确认,你想检测 dom0 是否在OpenVz 下。对吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2010-09-14
      相关资源
      最近更新 更多