如何禁用不必要的内核模块的加载。内核 3.2.4
答案1
笔记:列入黑名单不行对于内置于内核映像中的模块(即不是通过单独的
.ko
文件加载的)。禁用此类模块的唯一方法是通过内核参数(如果可用)或重新编译内核。
只需打开/etc/modprobe.d/blacklist
文件并使用以下语法添加驱动程序名称:
blacklist driver-name
编辑:自 12.10(12.04?)以来的版本中,该文件是/etc/modprobe.d/blacklist.conf
重新启动计算机并使用 lsmod 命令显示 Linux 内核中模块的状态
笔记:这是您想要的黑名单驱动程序的名称。例如,如果您想禁用 NIC 卡驱动程序,您可以在终端中driver-name
使用命令命令找到 LAN 卡的内核驱动程序名称。 例如,我的输出是: lspci -v
........ ........ 6:00.0 以太网控制器:Broadcom Corporation NetLink BCM5906M 快速以太网 PCI Express(rev 02) 子系统:联想设备 3861 标志:总线主控、快速设备、延迟 0、IRQ 46 位于 b8000000 的内存(64 位,不可预取)[size=64K] 扩展 ROM 处于 [已禁用] 功能: 正在使用的内核驱动程序:tg3 内核模块:tg3 ........ ........
在这里,我看到驱动程序是tg3
。所以您需要tg3
在 的位置写入(或您的驱动程序)driver-name
。
可以找到大量信息这里。
答案2
您还可以在启动时使用语法在 grub 命令行(linux 行)中暂时将它们列入黑名单
module_to_blacklist.blacklist=yes
答案3
在 Ubuntu 16.04 LTS 中将模块列入黑名单的另一种方法是将以下行添加到内核命令行:
modprobe.blacklist=MODULE_NAME
使用 /etc/modprobe 系统是最好的方法,但是这是一种替代方法,可以在启动时通过在紧急情况下编辑 GRUB 命令行来使用。
也可以通过编辑 /etc/default/grub 并添加变量来使此设置永久生效GRUB_CMDLINE_LINUX_DEFAULT
。例如,在我的 /etc/default/grub 中,我有:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"
然后我运行update-grub2
,然后update-initramfs -u
。重新启动后,您将不再需要该模块,只要启动后没有任何东西加载它即可。
此方法也适用于 EL 变体(RHEL、CentOS、SciLinux),但您必须使用该发行版的方法来更新 grub 和 initrd。
(试图将 nouveau 列入黑名单的人请注意:请确保不要通过运行来加载 X systemctl set-default multi-user.target
,否则当 X 启动时它将再次加载 nouveau!)
答案4
这些解决方案均不适用于 i915.ko 的 16.04 LTS。
我发现的(肮脏的)解决方案是重命名
/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so
不幸的是,外部 VGA 屏幕不再被识别:{