modprobe
会读取/etc/modprobe.d/
下的配置文件/lib/modules/$(uname -r)/
目录下的模块依赖关系# 安装模块到内核模块目录
sudo make modules_install
# 手动加载模块
sudo modprobe <module_name>
# 查看已加载模块
lsmod | grep <module_name>
模块未找到:
/lib/modules/$(uname -r)/extra/
depmod -a
更新模块依赖关系依赖问题:
modinfo <module_name>
检查模块依赖版本不匹配:
# 创建配置文件
echo "<module_name>" | sudo tee /etc/modules-load.d/<module_name>.conf
# 设置权限
sudo chmod 644 /etc/modules-load.d/<module_name>.conf
# 在/etc/modprobe.d/中创建配置文件
echo "options <module_name> <param1>=<value1> <param2>=<value2>" | sudo tee /etc/modprobe.d/<module_name>.conf
# 创建服务配置文件
echo "<module_name>" | sudo tee /etc/modules-load.d/<module_name>.conf
# 启用服务
sudo systemctl enable systemd-modules-load
查看启动日志:
journalctl -b | grep <module_name>
dmesg | grep <module_name>
测试加载:
sudo systemctl restart systemd-modules-load
特性 | modprobe手动加载 | 系统启动自动加载 |
---|---|---|
执行时机 | 用户手动执行 | 系统启动早期阶段 |
依赖处理 | 自动处理依赖 | 依赖需提前可用 |
调试便利性 | 直接可见输出 | 需要查看系统日志 |
参数配置 | 命令行传递 | 通过/etc/modprobe.d/配置 |
权限要求 | 需要root | 需要root配置 |
错误恢复 | 即时反馈 | 需排查启动日志 |
开发阶段:
dmesg -wH
实时查看内核日志生产部署:
/etc/modules-load.d/
实现自动加载/etc/modprobe.d/
配置模块参数版本管理:
# 安装DKMS
sudo apt install dkms
# 注册模块到DKMS
sudo dkms add -m <module_name> -v <version>
# 构建并安装
sudo dkms build -m <module_name> -v <version>
sudo dkms install -m <module_name> -v <version>
错误处理:
/etc/rc.local
中添加备用加载逻辑通过以上方法,可以确保OOT驱动在不同场景下可靠加载,满足开发和部署需求。