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

jmv*_*dal 9 linux virtual-machine

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

modprobe -r kvm_intel
modprobe -r kvm
Run Code Online (Sandbox Code Playgroud)

否则我会出错。这很好用。

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

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

qua*_*ote 6

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

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

选项 1:黑名单

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

blacklist kvm_intel
blacklist kvm
Run Code Online (Sandbox Code Playgroud)

选项 2:卸载

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

modprobe -r kvm_intel
modprobe -r kvm
Run Code Online (Sandbox Code Playgroud)

选项 3:禁用(新)

以上两种方法都会阻止模块在启动时加载,但不会阻止它们稍后加载到内核中。要完全禁用该模块,请使用这些行——同样,它们可以放在一个modules.conf文件中,/etc/modprobe.d/disabled或类似的:

install kvm_intel /bin/true
install kvm /bin/true
Run Code Online (Sandbox Code Playgroud)

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


pat*_*non 2

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