在根目录下进入/usr/src/linux-2.*****的某个版本进行这次的实验,在进入其下drivers目录,ls查看,可以看到Makefile 和Kconfig 。mkdir 自己随意取目录名,如:mkdir litest(新增一目录),在里面创建一些文件,因为我们此次只是为让大家了解这里面的Makefile和Kconfig和内核驱动的联系,没有涉及真正编译文件,所以对于目录里的文件我们这里不谈。首先在litest必须下touch Makefile Kcongfig ,其它文件可以根据需要创建,方便后面举例,我们touch test.o test_queque.o test_client.o。Makefile相当文件管理器,通俗些就是文件的仓库,Kconfig配置文件,通俗讲就是给用户提供的选择信息,而用户所选的信息会保存在内核目录下的.config中,这是个隐藏文件,ls -a才能看到,如果你还看不到,那是你现在用的这台机子还没有过这样的体验操作。红色字和黄色字文件名相同,但是可以看到他们的从属关系,Makefile是内层的,Makefile 是外层的,Kconfig文件同理。如果还没懂,nothing,再给你个nice的说法,就好像皇帝身边的太监是大内所有太监的总管一样,只要这个小太监信息在我这报备了,我就管得着你。
这里拿Makefile来说,我们修改外层是为了让drivers的下Makefile 有litest的信息,跟Makefile建立了层次关系,就相当钩子挂了网上,这一提才能整体都起来的道理,使得外层能够统一管理和查看, Kconfig同理。以上是让我们对Makefile和Kconfig有逻辑上的认识,下面的我们就开始完成想法。
tips:
s1. 在drivers/Kconfig中增加语句:
source ”drivers/litest/Kconfig”
s2.修改drivers/Makefile中增加语句:
obj-$(CONFIG_liTEST)+=litest/
s3.在litest/Kconfig中增加语句:
menu "litest Driver"
comment "Test Driver"
config TEST
bool "test support"
config TEST_USER
tristate "test user-space interface"
depends on TEST
endmenu
s4.在litest/Makefile中增加语句:
obj-$(CONFIG_TEST ) +=test.o test_queque.o test_client.o //执行与否取决config TEST
中TEST 的值
obj-$(CONFIG_TEST_USER ) +=test_ioctl.o //执行与否取决config TEST_USER中
TEST_USER的值
备注:bool有Y 或 N两种选择;tristate有 Y, M, N三种选择。而后者config TEST_USER是依赖于前者 config TEST存在的,当前者为N时,后者不再出现,也不会再有三种选择。
操作完成,在内核目录下sudo make menuconfig进入图形化界面,查找Device Drivers一项点击进入,看到litest了吗?退出后选YES保存,在内核目录下vim .config打开,键入/litest 你便会找到litest Driver了。
删除你的作品也很简单,首先在drivers目录下删除整个目录rm -r litest,其次删除你在drivers下Makefile和Kconfig之前添加的东西,就OK了,所以你不必担心它会对你的内核产生任何的不良反应。