在Centos 7上不使用sudo检查虚拟化是否启用?

4

我需要在Centos 7上检查虚拟化是否启用,但不需要使用sudo。

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

sudo modprobe msr
sudo rdmsr 0x3a

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

kvm-ok

在Centos 7上是否存在类似于cpu-checker的实用工具?


“kvm-ok”是一个shell脚本,还依赖于“rdmsr”二进制文件来检查特定CPU寄存器。该脚本在Linux系统中具有良好的可移植性。我想你可以将其复制到CentOS系统中。 - SebMa
1个回答

6

首先:

kvm-okrdmsr 0x3a 完全是两个不同的东西。

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

因此,kvm-ok 不需要 root 权限,而 rdmsr 无法工作,因为您的进程没有上下文来查询这些寄存器。

rdmsr 0x3a 可以通过一些技巧,在 Intel Core iX 或更高版本的 XEON 处理器上确定 VT 技术是否已启用;对于高效的虚拟化,这是必要的,但并非充分的

因此,我建议手动执行 kvm-ok 所做的操作。

检查第一个 CPU 的 vmxsvm 标志

grep flags /proc/cpuinfo|head -n1|grep -Eo '(vmx|svm)'

并确认已加载KVM模型:

lsmod | grep '^kvm'

如果你确实需要查询该特定模型的寄存器(例如,因为某种原因,即使在UEFI设置中禁用VT,vmx标志仍然存在),最简单的方法肯定是使用sudo的权限来指定程序rdmsr恰好使用0x3a参数运行由你选择的用户(我们称之为daemonuser)而不需要输入密码(请参见man sudoers或你的/usr/share/doc/sudo/examples/sudoers)。
daemonuser ALL = NOPASSWD: /path/to/rdmsr 0x3a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接