禁用非必要内核模块可减少内存占用、缩短启动时间并降低攻击面,关键是启动早期阻止自动加载;通过lsmod、lspci -k、lsusb -t识别无关模块(如btusb、uvcvideo),用blacklist和install /bin/true在/etc/modprobe.d/中永久禁用,并更新initramfs。

禁用非必要内核模块能减少内存占用、缩短启动时间,并降低潜在攻击面。关键不在于删模块,而是在系统启动早期阻止其自动加载。
确认哪些模块实际被加载
运行 lsmod 查看当前已加载的模块列表,结合 lspci -k 或 lsusb -t 确认硬件设备所依赖的驱动。重点关注名称含 btusb、r8169(旧网卡)、uvcvideo(未接摄像头时)、firewire、ipw2200 等明显与当前硬件无关的模块。注意:不要禁用显卡(如 i915、amdgpu)、存储(ahci、nvme)或基础网络(e1000e)等核心模块。
通过黑名单永久禁用(推荐)
在 /etc/modprobe.d/ 下新建配置文件(如 blacklist-unnecessary.conf),每行写一条 blacklist 模块名。例如:
- blacklist btusb
- blacklist uvcvideo
- blacklist firewire_ohci
保存后执行 sudo update-initramfs -u(Debian/Ubuntu)或 sudo dracut --force(RHEL/Fedora),确保 initramfs 更新生效。重启后用 lsmod | grep 模块名 验证是否未加载。
阻止模块被 udev 或 systemd 自动触发
某些模块由硬件事件(如插入 USB 设备)触发,仅黑名单可能不够。可添加 install 模块名 /bin/true 到同一 modprobe 配置文件中,强制覆盖模块安装行为。例如:
- install btusb /bin/true
- install rtsx_usb_ms /bin/true
该方式比 blacklist 更彻底,适用于常被热插拔唤醒的模块。
检查并清理初始化脚本中的显式加载
搜索传统初始化脚本中可能存在的 modprobe 调用:
grep -r "modprobe.*模块名" /etc/init.d/ /etc/rc.local /etc/modules
若发现手动加载非必要模块的语句,直接注释或删除。同时检查 /etc/modules 文件,移除不需要的模块名(每行一个),它会在启动时被 modprobe 顺序加载。










