Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38499
  • 博文数量: 17
  • 博客积分: 1445
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 18:15
文章分类

全部博文(17)

文章存档

2012年(1)

2010年(4)

2009年(8)

2008年(4)

我的朋友
最近访客

分类: LINUX

2010-10-09 23:10:20

     这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) |
给主人留下些什么吧!~~

chinaunix网友2010-10-11 17:46:35

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com