添加内核模块

添加内核模块需要用到insmod命令或modprobe命令。

通过执行insmod命令把生成的mymod.ko模块添加进来。


insmod mymod.ko


使用dmesg命令,可以看到例子模块mymod.ko的输出内容。


dmesg|tail

mymod:init


作为模块初始化函数mymod_init()所调用的printk()的输出内容会在最后一行显示。使用lsmod可以显示目前添加到内核中的模块列表。


lsmod

Module Size Used by

mymod 1482 0


可以看到,mymod行存在,模块已添加。

要将已添加的模块从内核空间删除时,可以使用rmmod命令。


rmmod mymod


执行rmmod命令后,模块将从内核空间内删除,使用lsmod命令就不会再输出mymod行。

此外,使用dmesg命令还可以看到终止模块的处理中printk()输出的信息mymod:exit。


dmesg|tail

mymod:exit


下面针对模块参数作一些介绍。在添加模块后,就会在/sys/module下生成对应的目录和文件。


ls/sys/module/mymod/

holders initstate notes parameters refcnt sections srcversion


可以确认在parameters下生成的模块mymod中所定义的参数sec。


ls-l/sys/module/mymod/parameters/sec

-rw-r—r—.1 root root 4096 May 15 06:34/sys/module/mymod/parameters/sec


其内容应当是初始值5。


cat/sys/module/mymod/parameters/sec

5


模块参数可以在使用insmod添加模块时对值进行指定。


insmod mymod.ko sec=10


进行上述操作后,添加mymod.ko时模块参数sec就为10,默认间隔5秒的超时变成间隔10秒。