这2天心血来潮,又“温习”了下以前快速瞄了些章节的《linxu设备驱动程序》。原来也是心血来潮买了这本书,传说中的LDD!
以前看都只是走马观花,没有实践过书中的任何例子,书中甚多的词汇也没弄明白是怎么回事!
在书中反复提到了一个词“内核树”,到网上google了下,也明白了些许,在此不赘述,直接切入主题,怎么建立linux内核树!
链接1中的文章给了很大的帮助,可以从中窥见大致流程,但实际上可能比这个更简单些!
在vmware中新安装了ubuntu10.1,unname -r看了下内核版本是2.6.32.24。
由于在vmware中安装ubuntu后,无法通过无线网络链接网络,也没有兴趣去弄懂为什么了,在硬盘上另外一个盘中安装的真实linux环境是可以正常链接网络的。
链接2中简介的阐述了怎么升级2.6的内核,奈何无法上网,所以到链接3下载了内核2.6.32.1,参照链接2或者1中提供的方法,编译安装完成!需要提及的是,在定制内核的时候我的环境中只能使用make oldconfig,以为没有响应的库,也懒得升级安装了,毕竟我只是想先建立内核树而已!
参照链接1中提供的驱动模块例子,在insmode hello.ko的时候却出现了问题,报错format不正确,在网上查了N多资料,无奈懂的东西有限,有些东西也看不明白;回想一下我下载的内核是2.6.32.1的,会不会是内核版本低于原来的版本不对引起的呢?
有了这么一个思路,像是抓住了一跟救命稻草,说干就干,立马下载了2.6.32.24,害得我又编译了N久,我是晚上睡觉前编译的,后直接呼啦睡觉,所以具体时间也不晓得了,不过通过makefile的命令应该可以看编译了多久!这里就不追究用了多少时间了吧,反正都在梦中跟MM约会呢!
一切顺利,但是重新编译hello驱动模块后,在insmode的时候仍然出现了这个问题!内心沮丧啊!
后来发现我的/lib/modules目录下有2个目录,分别是“2.6.32-24-generic”和”2.6.32-24“,我在参照链接3的时候,makefile修改如下
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.32-24/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
|
而后我修改如下重新编译:
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.32-24-generic/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install |
编译完成后,手动加载内核成功!至此内核树建立成功!
1:http://www.cublog.cn/u2/81217/showart_1330300.html
2:
3:
阅读(597) | 评论(1) | 转发(0) |