ubuntu重启禁止加载内核模块

在 Ubuntu 下可以通过 modprobe 黑名单机制 来实现。

1. 临时禁用(只对当前会话有效)

1
2
sudo rmmod <模块名>       # 卸载已加载的内核模块
sudo modprobe -r <模块名> # 卸载依赖处理

但重启后还是会再次加载。

2. 永久禁用(推荐)

Ubuntu 用的是 modprobe 配置。方法:

步骤:

  1. 新建一个 blacklist 配置文件:

    1
    sudo nano /etc/modprobe.d/blacklist-local.conf
  2. 添加需要屏蔽的模块,例如:

    1
    2
    blacklist nouveau
    blacklist r8169

    blacklist <模块名> 表示禁止自动加载。

  3. 如果模块会被 initramfs 提前加载(比如显卡/网卡驱动),还需要 rebuild initramfs:

    1
    sudo update-initramfs -u

    否则黑名单不会生效。

  4. 重启验证:

    1
    lsmod | grep <模块名>

3. 彻底禁止(强制)

有的模块即使 blacklisted,还会被手动加载。可以 硬性屏蔽

方法一:install 空命令

/etc/modprobe.d/blacklist-local.conf 里写:

1
install <模块名> /bin/true

这样即使有人执行 modprobe <模块名>,也会什么都不做。

方法二:内核参数

某些驱动(如 nouveau)可以直接在内核启动参数中禁用:
编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 里加:

1
modprobe.blacklist=nouveau,r8169

更新 grub:

1
sudo update-grub

🔥 总结:

  • 只禁止自动加载blacklist
  • 连手动加载都禁install <mod> /bin/true
  • 内核启动时就禁modprobe.blacklist= 内核参数