一、加载模块
通过 insmod 命令可以往正在运行中的内核插入某些模块而无需重启系统。用法:
# insmod [选项] 模块 [符号名称=值]
一般情况下,如果一个模块的版本与所运行的内核不一致,模块将无法插入系统。就算
是同一版本内核编译得到,如果内核配置文件不同,也有可能无法插入。使用-f 选项强制插
入后,可能会出现运行不正确的情况。
插入和卸载模块需要 root 权限。插入模块比较简单,如需要往系统插入 beep.ko 驱动模
块,可用:
[root@zlg beep]# insmod beepdrv.ko
有些驱动/模块可以接受外部参数,在插入模块的时候为相应的符号赋值。一个模块/驱
动能否接受外部参数,能够接受几个外部参数,取决于模块/驱动的具体实现,符号以及赋
值请参考相应模块/驱动的说明。这是一个范例,pcm-8032a.ko 模块能接收 irq 和 addr 两个
符号参数,插入模块的时候指定:
# insmod pcm-8032a.ko irq=3 addr=0x300
二、查看系统已经加载的模块
使用lsmod命令进行查看
lsmod 命令结果实际上就是列出/proc/modules 的内容
三、卸载驱动模块
使用rmmod命令
# rmmod [选项] 模块
假定系统的 beep.ko 不再需要,卸载命令:
[root@zlg beep]# rmmod beepdrv.ko
四、自动处理可加载模块
modprobe 命令集加载/卸载功能于一身,并且可以自动解决模块的依赖关系,将某模块所依赖的其它模块全部加载。
用法:
# modprobe [选项] 模块 [符号=值]
modprobe 处理模块时忽略模块的路径,这要求系统模块和驱动是按照 make
modues_install 方式安装的,即模块必须放在/lib/modules/$(uname -r)
目录下,并且有正确的
/lib/modules/$(uname -r)/modules.dep
文件,modprobe 根据该文件来寻找和解决依赖关系。