insmod的工作[转]
《LINUX设备驱动程序》
insmod 实际上它依赖于定义在kernel/module.c中的一个系统调用。函数sys_init_module给模块分配内核内存(函数vmalloc负责内存分配)以便装载模块。然后该系统调用将模块正文复制到内核区域,并且通过内核符号表解析模块中的内核引用,最后调用模块的初始化函数。
insmod:
sys_init_module(分配内存)-->copy模块代码到内核空间-->解析符号引用-->module_init(XXXX)
modprobe是处理层叠模块的一个实用工具。它的功能在很大程度上和insmod类似,但是它除了装入指定模块外还同时装入指定模块所依赖的其他模块。
因此,在使用insmod命令往kernel中装载自己的.ok时候,如果未成功,并且没有输出任何信息"死机"的时候,可以在module_init(XXXX)的XXXX初始化函数中,加入一些printk,用于调试insmod.