CentOS modprobe.d:深入解析模块自动加载机制

什么是modprobe.d?
modprobe.d是Linux内核中一个重要的目录,用于存放模块加载和卸载的脚本文件,它主要包含以下两个部分:
- pre-install:在模块安装前执行脚本,可以用于检查依赖关系、修改内核参数等。
- post-install:在模块安装后执行脚本,可以用于设置模块参数、创建文件系统等。
modprobe.d的作用
自动加载模块:当系统启动或运行时,modprobe.d中的脚本会自动加载所需的模块,从而提高系统的性能和稳定性。
管理模块参数:通过修改modprobe.d中的脚本,可以方便地设置模块的参数,满足不同场景下的需求。
简化安装过程:通过modprobe.d,用户可以简化模块的安装过程,无需手动加载模块。
集中管理模块:将模块的加载和卸载脚本集中存放于modprobe.d目录下,方便管理和维护。
CentOS中modprobe.d的配置方法
创建modprobe.d目录

在CentOS系统中,默认情况下modprobe.d目录位于/lib/modules/$(uname -r)/extra/,如果该目录不存在,需要手动创建。
sudo mkdir -p /lib/modules/$(uname -r)/extra/ 添加脚本文件
在modprobe.d目录下,创建一个以“00-”开头的脚本文件,例如00-netcard.sh,该文件用于加载网络模块。
sudo nano /lib/modules/$(uname -r)/extra/00-netcard.sh 编辑脚本内容
在脚本文件中,使用以下命令加载网络模块:
modprobe eth0 设置执行权限
为了使脚本文件在启动时自动执行,需要设置执行权限。
sudo chmod +x /lib/modules/$(uname -r)/extra/00-netcard.sh 添加到rc.local
将脚本文件添加到rc.local文件中,使其在系统启动时自动执行。

sudo nano /etc/rc.local 在rc.local文件中,添加以下内容:
/lib/modules/$(uname -r)/extra/00-netcard.sh
exit 0 modprobe.d脚本示例
以下是一个简单的modprobe.d脚本示例,用于加载网卡模块并设置其参数。
#!/bin/bash
# 加载网卡模块
modprobe eth0
# 设置网卡参数
echo "192.168.1.1" > /etc/hostname
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.eth0.netmask = 255.255.255.0" >> /etc/sysctl.conf
echo "net.ipv4.conf.eth0.gateway = 192.168.1.1" >> /etc/sysctl.conf
# 重启网络服务
service network restart FAQs
Q1:如何在CentOS中查看已加载的模块?
A1:使用以下命令查看已加载的模块:
lsmod Q2:如何卸载模块?
A2:卸载模块需要先将其从系统中卸载,然后使用rmmod命令卸载。
rmmod 模块名称 
