如何永久禁用 Linux 中的 kvm 模块?

如何永久禁用 Linux 中的 kvm 模块?

为了让 virtualbox 在 Linux 中工作,我必须以 root 身份运行以下命令:

modprobe -r kvm_intel
modprobe -r kvm

否则会出现错误。效果很好。

唯一的问题是每次机器重启时我都必须重新运行这两个命令。

有没有办法永久禁用这两个内核模块?

答案1

如果您根本不打算使用 kvm,为什么不直接删除qemu-system-[ARCH]提供它的 rpm。此外,fedora 包含一个文件/etc/sysconfig/modules/kvm.modules,该文件告诉系统在处理器中检测到虚拟化扩展时加载 kvm 模块。修改/etc/sysconfig/modules/kvm.modules或完全删除它也应该可以解决问题,但删除该软件包似乎是最好的解决方案。

答案2

更新:对于 Fedora,将blacklist下面选项 1 中的行保存到 /etc/modprobe.d/ 下的文件中,例如/etc/modprobe.d/blacklist。文件的名称并不重要;目录中的所有文件都会在启动期间进行处理。

如果您确定永远不需要动态加载这些模块,则选项 3 可能更为可取。

选项 1:黑名单

许多发行版使用模块黑名单来禁止模块加载。通常可以通过将这些行添加到您的发行版或类似发行版中来实现modules.conf。您可以尝试阅读man modules.conf或谷歌搜索特定发行版的说明。

blacklist kvm_intel
blacklist kvm

选项 2:卸载

另一种方法是将以下几行添加到您的rc.local脚本中(或其他系统启动时脚本,最好不是与包相关的脚本):

modprobe -r kvm_intel
modprobe -r kvm

选项 3:禁用(新)

以上两种方法都会阻止模块在启动时加载,但不会阻止它们稍后加载到内核中。完全禁用模块,使用这些行 - 再次,它们可以进入modules.conf文件,或/etc/modprobe.d/disabled类似文件:

install kvm_intel /bin/true
install kvm /bin/true

这样做的目的是告诉系统/bin/true在请求这些模块时运行。程序除了返回 true 之外不执行任何操作,因此任何加载都“成功”,但模块实际上从未加载过。要重新启用使用此技术禁用的驱动程序,请注释掉这些行并重新启动。

相关内容