设为首页 加入收藏

TOP

Ubuntu 10.10构建内核树
2014-11-24 08:17:49 来源: 作者: 【 】 浏览:1
Tags:Ubuntu 10.10 构建 内核

驱动程序和用户程序可不一样,它是作为一个模块连接到内核模块来运行的,运行在内核空间里面。


所以要运行我们自己构造的模块,需要自己的系统已经配置好内核树,然后把目标模块和内核树连接起来运行!


可以查看一下自己的电脑有没有配置内核树,可以到 /lib/modules/2.6.35-22-generic目录下面,看看有没有build这个文件夹,如果有,说明你已经有内核树了,如果没有,就自己构建内核树吧。


内核树构建过程


安装编译内核所需要的软件(也可不装,除非你要用 make menuconfig,用make oldconfig不要)


sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot


下载内核源码


先查看linux内核版本:$uname -r


最后用apt-get install linux-source-2.6.35下载之。解压缩源码包,进入解压后的源码目录。


可是我试了,搜不到,但是还是可以直接用上面的apt-get 命令下载的,但是我下载,也可以直接到这个网址下源代码,这里面有各个版本的内核,从1.0到2.6的,都有。


http://www.at.kernel.org/pub/linux/kernel/


在编译之前我们需要Ubuntu原来内核的一个配置文件,这是我/usr/src目录下的文件预览:ls -al


drwxr-xr-x 4 root root 4096 2010-09-04 21:31 fglrx-8.723.1
drwxr-xr-x 24 root root 4096 2010-09-04 20:35 linux-headers-2.6.35-22
drwxr-xr-x 7 root root 4096 2010-09-04 20:35 linux-headers-2.6.35-22-generic
drwxr-xr-x 25 root root 4096 2010-09-16 21:39 linux-source-2.6.35
-rw-r--r-- 1 root root 65846876 2010-09-01 22:41 linux-source-2.6.35.tar.bz2


现在我们需要/boot目录下的config-2.6.35-22-generic文件,我们把它拷贝到我们刚下好解压的目录,也就是linux-source-2.6.35


sudo cp /boot/config-2.6.35-22-generic /usr/src/linux-source-2.6.35/.config


接下来切换到root用户
sudo -i


cd /usr/src/linux-source-2.6.35


make menuconfig或者直接make oldconfig(无需拷贝.config)


终端会弹出一个配置界面


最后有两项:load a alternative kernel configuration...
save a alternative configuration...
选择load a kernel configuration保存,然后在选择save akernel configuration再保存退出,并退出配置环境。


接下来我们就要开始编译了。


#cd /usr/src/linux-source-2.6.35
#make
记住一定要是管理员帐号运行,这个过程很久,如果你的cpu是双核的可以在make后面加个参数,make -j4.


#make bzImage 执行结束后,可以看到在当前目录下生成了一个新的文件: vmlinux, 其属性为-rwxr-xr-x。


下面就要编译模块了,但是编译模块时可能会出现如下问题
编译问题(ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
解决方法:


在/usr/src/linux-source-2.6.35/ubuntu/omnibook/Makefile 中


ifeq ($(KERNELRELEASE),)


# Support for direct Makefile invocation


的前面增加:
PWD=$(shell pwd)


也就是在ifeq的上一行增加。


然后再编译模块


#make modules /* 编译 模块 */


#make modules_install 这条命令能在/lib/modules目录下产生一个目录


如果一切顺利,编译过程中不出现什么错误的话,接下来我们就可以开始linux模块的helloworld了。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇《Beginning Linux programming 4.. 下一篇Android 监听文件和目录的创建删..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)