基本步骤
步骤一:在源码路径下创建你的模块的文件夹:
步骤二:然后在这个文件夹下编写你的文件:
步骤三:具体内容包括头文件、LICENSE、模块的初始化和退出函数:
对于初始化和结束销毁,笔者的理解是module_init和module_exit才是真正指明模块初始化和销毁的函数的,而__init关键字只是通知编译器,我这个函数具有初始化的功能,里边分配的空间在执行完之后是可以释放的。
步骤四:修改Makefile:
先看gpt给的Makefile:
笔者跟进到这个路径下一看,发现build其实是一个指向目录的软链接,其实就是要内核源码所在的路径:
由于我们写的内核模块不是给自己用的,因此要给出当前源码的路径:
步骤五:编译
然后就在我们写这个内核模块的路径下编译:
最后可以看到生成了noise.ko这个文件:
我们就可以在事先编译好的内核中以root权限insmod、rmmod分别加载和卸载这个内核模块了:😊