可以通过以下几种方式实现驱动模块的动态加载:
1. 使用insmod
命令手动加载:
在命令行终端输入insmod
命令,后面跟上驱动模块的路径。例如,如果你的驱动模块名为mydriver.ko
,你可以使用以下命令加载模块:
sudo insmod /path/to/mydriver.ko
如果加载成功,你可以通过lsmod
命令查看已加载的模块列表。
2. 使用modprobe
命令加载:
modprobe
命令会自动处理模块的依赖关系。只需要指定要加载的模块名称,无需指定路径。例如,要加载mydriver
模块,可以使用以下命令:
sudo modprobe mydriver
在使用modprobe
之前,需要确保模块已经安装到系统的模块目录(通常为
/lib/modules/$(uname -r)/kernel/drivers/
)中。
3. 设置udev
规则自动加载:
udev
是Linux系统中设备管理的子系统,可以通过编写udev
规则文件实现设备插入时自动加载对应的驱动模块。首先需要创建一个新的udev
规则文件,例如/etc/udev/rules.d/99-mydriver.rules
,并在文件中添加以下内容(以加载名为mydriver
的模块为例):
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", RUN+="/sbin/modprobe mydriver"
其中xxxx
和yyyy
分别替换为你的设备的厂商ID和产品ID。保存文件后,需要重新启动udev
服务:
sudo udevadm control --reload-rules
sudo udevadm trigger
这样,在系统检测到符合规则的设备插入时,会自动加载mydriver
模块。注意:卸载模块时,可以使用rmmod
或modprobe -r
命令。例如,卸载mydriver
模块:sudo rmmod mydriver
注意:卸载模块时,可以使用
rmmod
或modprobe -r
命令。
例如,卸载mydriver
模块:
sudo rmmod mydriver