内核模块编写入门


基本步骤

步骤一:在源码路径下创建你的模块的文件夹:

步骤二:然后在这个文件夹下编写你的文件:

步骤三:具体内容包括头文件、LICENSE、模块的初始化和退出函数:

对于初始化和结束销毁,笔者的理解是module_init和module_exit才是真正指明模块初始化和销毁的函数的,而__init关键字只是通知编译器,我这个函数具有初始化的功能,里边分配的空间在执行完之后是可以释放的。

步骤四:修改Makefile:

先看gpt给的Makefile:

笔者跟进到这个路径下一看,发现build其实是一个指向目录的软链接,其实就是要内核源码所在的路径:

由于我们写的内核模块不是给自己用的,因此要给出当前源码的路径:

步骤五:编译

然后就在我们写这个内核模块的路径下编译:

最后可以看到生成了noise.ko这个文件:

我们就可以在事先编译好的内核中以root权限insmod、rmmod分别加载和卸载这个内核模块了:😊

参考

https://github.com/ljrcore/linuxmooc/blob/master/%E7%B2%BE%E5%BD%A9%E6%96%87%E7%AB%A0/%E6%96%B0%E6%89%8B%E4%B8%8A%E8%B7%AF%EF%BC%9A%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E5%85%A5%E9%97%A8.md

https://zhuanlan.zhihu.com/p/420194002


文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录