免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1014 | 回复: 0
打印 上一主题 下一主题

Linux 内核编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-27 11:26 |只看该作者 |倒序浏览
如何编译Linux内核? 相信你会得到很多种不同的答案,而我在写此文章之前,总是获得一些编译错误的结果。
如何你总是遇到编译错误或者失败,其实很多情况下是你下载的内核版本的问题,就是在高版本GCC中编译低版本的内核,造成编译失败。如果你对编译内核一悉莫展,在网上Google到很多种编译方法,但都失败的情话。倒不如看看内核的README文档,或者在内核目录下运行make help。它将会告诉许多你所不知的秘密。
1. Linux系统编译内核的通用方法
内核代码中的README文件对编译过程有非常 详细介绍,下而介绍的方法是Linux内核通用的编译方法,它是Makefile文件已定义好的编译过程。
  1) 下载源代码(以2.6.28为例)
  wget  
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.1.tar.gz
  2) 解压,并把它放到/usr/src/目录下
   gzip -d linux-2.6.28.1.tar.gz
   tar -xvf linux-2.6.28.1.tar
  mv -rf linux-2.6.28.1 /usr/src
  3) 在/usr/src/建立一个软链接到linux-2.6.28.1目录  
  cd /usr/src
  ln -s linux-2.6.28.1 linux
4) 清理源代码(如果是之前已生成一些中间文件可运行此命令,否则不必了)
   make mrproper
5) 生成config文件
  cp /boot/config-`uname -r` ./.config
  make menuconfig
  在make menuconfig的配置界面中,先选择Load config file, 把该才拷贝的文件加载进来再进行修改,修改完成后,直接选Exit,然后在提示中选择保当前配置文件。
6) 编译
make
7)  安装模块
  make modules_install
该命令会把模块及相关文件放到目录/lib/modules/2.6.18.1/下,并不会与当前内核产生冲突,除非内核版本是一样的。
  8)安装内核
  make install
该命令会把内核相关文件(bzImage, initrd.img,System.map .config)放到/boot/目录下,文件名均带有内核版本名,与其它版本相关区别。
如果系统安装了LILO,它会自己把该内核的启动加进来。如果是grub程序,那要看情况而定。我在Fodera系统中,它会自动添加该启动项到/boot/grup/menu.lst文件中,而在Ubuntu中则不会,需要手动添加。添加完也,即可重启进行新内核。
2. Ubuntu内核编译方法。
      上面介如的通常方法适合于所有的Linux系统,Ubuntu也不例外。Ubuntu同样提供了编译内核的方法。而且方法非常简单,把上述第6)和7)步换成下面这一命令即可。
  make-kpkg --initrd --append-to-version  kernel_image kernel_headers
  其中是你给内核名字在版本号的基础上加上你指定的字符串,如果你打算直接使用内核版本号作为内核名字,则把--append-to-version和它的参数从命令行中去掉。个人建议你不要使用该选项,因为内核名字就是uname -r的运行结果,使得有时编译新的模块程序时,uname -r 和 make kernelrelease结果不一致。
该命运行完毕后,生成两个deb包,其它一个是内核和模块的包;另一个是头文件的deb包。如果不需要,可在命令行上把kernel_header去掉。
安装内核变异常简单,只需安装一个生成的内核映象的deb包。使用如下命令:
dpkg - i  linux-image-2.6.28.1_2.6.28.1-10.00.Custom_i386.deb
安装完后,所有的事情也就完成了,连/boot/grub/menu.lst的启动菜单项都修改好了,你所要做的事情就是重启系统而已。
  使用这种方法的好处是不言而喻的:你只需要在一台Ubuntu上编译好一个较新的内核,就可以在整个实验室中升级,何乐而不为呢?
3. Fodera 内核编译方法
   很抱歉,目前还未有找到很准确的Fodera内核编译方法,后面会补上。但这里介绍的方法仍然适后Fodera系统,那就是象Ubuntu一样,把内核编译成为一个rpm包。而且非常简单,只需把上面的第6)和7)步换成下面的命令:
  make rpm-pkg
运行完后,内核rpm包位于目录/usr/src/rpm/RPMS/i386/kernel-2.6.28.1.i386.rpm下,使用rpm -i kernel-2.6.28.1.i386.rpm命令即可安装。
安装rpm完成后,请检查/boot/grup/menu.lst文件是否有新内核的启动,若否请手工添加。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63937/showart_1979274.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP