1 内核模块文件存在格式
ELF格式:Executable and Linkable Format
2 export_symbol内核实现
单一linux内核加载方式是静态映射(即静态编译),如果有独立存在的内核模块,需要给单一linux内核导入、而独立存在的内核模块不可避免需要调用内核设备基础设施(函数或底层接口),因为linux单一内核是静态编译,独立存在的内核模块是动态导入,将导致调用内核模块时,内核模块会调用内核设备基础设施,找不到基础设施对应的函数(因为没导入,对应的基础设施函数没有随内核模块一并导入),export_symbol就是干这个,将内核模块会用到的符号(基础设备、函数)导入
3 模块加载过程
在用户空间可通过insmod命令向内核空间安装一个内核模块
调用方式为 insmod demodev.ko,会先将文件内容读到用户空间的内存,再调用系统调用sys_init_module让内核处理模块加载流程