设为首页 加入收藏

TOP

Ubuntu下编译Linux内核2.6.36-rc4
2014-11-24 03:29:33 来源: 作者: 【 】 浏览:0
Tags:Ubuntu 编译 Linux 内核 2.6.36-rc4

其实啥都不懂,因为师兄吩咐做一个小任务,需要先编译内核,所以就百度谷歌了一堆编译内核的文章,然后就开始了人生的第一次内核打补丁和编译Linux内核。


首先声明下面所使用的命令,如果不是root用户登录,需要在前面加sudo


1.下载最新Linux内核源码http://www.kernel.org/,我下了2.6.36-rc4版本


2.解压到/usr/src下


tar -jxvf linux-2.6.36-rc4.tar.bz2


为方便后续操作,将解压后的文件夹名字改为linux-kernel


mv linux-2.6.36-rc4 linux-kernel


3.安装所需的软件包:


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


4.配置内核


cd linux-kernel


make menuconfig


终端会弹出一个配置界面


注意主菜单最后有两项:load a kernel configuration...


save a kernel configuration...


先选第一项load ....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保 存,最后退出配置界面。


Ubuntu下编译Linux内核2.6.36-rc4


Ubuntu下编译Linux内核2.6.36-rc4


5.给内核源代码打补丁(可选)


(我的补丁是师兄自己改的一个,所以出现的问题等,大家情况不一样,可以直接跳过此部分,另外有人是将打补丁放在配置内核之前的,我不知道两者是否顺序随便的)


cd /usr/src/linux-kernel


patch -p1 < ../cpufreq_stat.patch (或者patch -p1 -i ../cpufreq_stat.patch)


不过我打了补丁有错误,一个类似于“Hunk #3 FAILED at 2387”之类的消息。网上说这意味着不能正确地打上这个补丁,并且patch程序也不能模糊地通过。这将产生一个导致patch失败的.rej文件并且产生一个.orig文件把一些不能改变的原始内容显示给你。


不知道是不是这个原因导致的,师兄的补丁是这样产生的,他修改了2.6.32版本的cpufreq_stats.c,然后生成了一个patch,但是我的是2.6.36版本内核。不知道是不是这个原因,反正后来我用meld工具比较了师兄的2.6.32版本修改后的cpufreq_stats.c和2.6.36版本的cpufreq_stats.c文件,发现除了师兄修改部分,其他就查一个头文件包含,所以就加了那一行,直接替换了cpufreq_stats.c。


6.编译


执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行)


执行:sudo make (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度)


(编译的时候出错了,说是宏cputime64_add应该有两个参数,但实际只给了一个,原来是师兄把两个参数之间的逗号写错成了加号,修改后,重新编译)


(目前正在编译中。。很慢。。不知道结果如何,未完待续)


【然后:sudo make install


再:sudo make modules (编译模块)


再:sudo make modules_install (安装模块)


最后创建 initrd文件:


mkinitramfs -o /boot/initrd.img-2.6.36】


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇加载Linux单体内核的笔记 下一篇英利嵌入式Linux工控主板支持ISO7..

评论

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

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)