检查是否在 Centos 7 上启用了没有 sudo 的虚拟化?

Ser*_*gey 4 linux virtualization virtualbox centos centos7

我需要检查是否在 Centos 7 上启用了没有 sudo 的虚拟化。

我找到了检查虚拟化是否启用的命令,但它需要 sudo。

sudo modprobe msr
sudo rdmsr 0x3a
Run Code Online (Sandbox Code Playgroud)

对于 Ubuntu,存在实用程序 cpu-checker,它可以检查是否在没有 sudo 的情况下启用了虚拟化。

kvm-ok
Run Code Online (Sandbox Code Playgroud)

Centos 7 上是否存在与 cpu-checker 类似的实用程序?

Mar*_*ler 6

第一的:

kvm-okrdmsr 0x3a做完全不同的事情。

kvm-ok,根据它的手册页只是解析/proc/cpuinfo指示 CPU 中虚拟化技术的 CPU 标志(然后检查是否加载了必要的模块,同时rdmsr读取 CPU 的特殊模型特定寄存器。

因此,kvm-ok不会做任何您需要 root 权限的事情,而rdmsr不能工作,因为您的进程不必上下文来查询这些寄存器。

rdmsr 0x3a可以使用一些技巧来确定是否在英特尔酷睿 iX 或更高版本的 XEON 处理器上启用了 VT 技术;对于高性能虚拟化,这是必要的,但还不够

因此,我会说继续做kvm-ok手动操作。

检查第一个 CPUvmxsvm 标志

grep flags /proc/cpuinfo|head -n1|grep -Eo '(vmx|svm)'
Run Code Online (Sandbox Code Playgroud)

并验证 kvm 模型已加载:

lsmod | grep '^kvm'
Run Code Online (Sandbox Code Playgroud)

事实上,如果您实际上需要查询特定于模型的寄存器(例如,由于某种原因,即使在 UEFI 设置中禁用了 VT,该vmx标志仍然存在),最简单的方法当然是使用sudo 指定rdmsr要由您选择的用户(我们称之为)完全使用参数运行的程序,无需密码(请参阅,或您的):0x3adaemonuserman sudoers/usr/share/doc/sudo/examples/sudoers

daemonuser ALL = NOPASSWD: /path/to/rdmsr 0x3a
Run Code Online (Sandbox Code Playgroud)