1 将第三方内核模块(talk模块)打进内核
1.1 预备知识
开头我们已经知道如何写一个最简单的内核talk模块,并且简单介绍了内核模块灵活的动态可加载技术,但是往往内核会将许多重要的核心模块默认集成在内核中,让内核启动时自动随着内核的加载而加载,这就涉及到了我们如何将自己开发的第三方模块打入内核,对于一些嵌入式系统,它们往往是只读的,不允许你事后(linux启动后)再往系统里动态加载内核模块,此时将模块直接打入内核,然后将编译好的内核发布给嵌入式的机器,这就没有问题了,我们接下来还是以talk模块为例实战一下。
进入解压后的内核源码目录,可以看到,每个目录下都有两个文件Makefile和Kconfig。分布各目录的Kconfig文件构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。
在执行make menuconfig时,会从Kconfig中读出菜单,用户选择后保存到.config文的内核配置文件中。在编译内核时,Makefile会调用这个.config文件,得知用户的选择。说明:上面内容说明,Kconfig就是对应的内核的配置菜单。如果想添加新的模块到内核源码中,需要修改Kconfig,如果想新加的模块被编译,还需要修改Makefile。因此,新加一个模块到内核源码,需要修改这两种文件。
1.2 将模块打入内核
将talk目录拷入drivers目录下,修改drivers目录下的Kconfig与Makefile将talk