Compile linux kernel source

转载 2007年09月12日 16:17:00
转自http://www.gbunix.com/bbs/index.php
 
Linux编译内核
 
准备工作

通常要运行的第一个命令是:
#cd /usr/src/linux;make mrproper

该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖

配置

接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。
配置内核可以根据需要与爱好使用下面命令中的一个:

#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令.



在繁杂的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。与编译有关的命令有如下几个:
#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a

第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;
第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;
第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,
它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。
建议大家使用make bzImage命令。
后面三个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,
make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。
严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。


更新

经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:

#cp /usr/src/linux/System.map /boot/System.map-2.4.0test8
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.0test8

以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:

#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.0test8 vmlinuz
#ln -s System.map-2.4.0test8 System.map

#shutdown -r now

正常启动.您的机器现在就使用你的新内核了.

下面是RH 推荐的编译方式. 注意edit Makefile
老话新说,RedHat 公司 推荐编译内核方法
本文部分取自于RH300(RHCE Rapid Track Course)课本.
本文假定你用的是Redhat 7.2,用grub 管理启动.准备编译7.2 自带的内核
cd /usr/src/linux-2.4
make mrproper
edit Makefile 文件
把EXTRAVERSION= 改成有你特色的文字, 比如:
EXTRAVERSION=-10me
make menuconfig or make xconfig
make dep
make bzImage
make modules
make modules_install
cp System.map /boot/System.map-2.4.7-10me
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10me
new-kernel-pkg --install --mkinitrd --depmod 2.4.7-10me
 
 
 

相关文章推荐

Howto Compile and Install Linux Kernel 3.3rc / 3.2 / 3.1 / 3.0 in Ubuntu 11.10, 11.04, 10.10 and 10.

Here in this post I will explain how to compile and install Linux Kernel 3.0 and Linux Kernel 3.1 in...

ubuntu环境下编译内核详解(linux kernel compile)

声明:本文是个人参考网上有关资料,编译2.6.25内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。 本文放在本人的blog上面:http://hi.baidu.com/ffbp89/ ...
  • is2120
  • is2120
  • 2011年03月17日 12:24
  • 835

ZZ:Jem's Guide: How to compile and install a new Linux kernel Configure, build, and install

DISCLAIMER: USE AT YOUR OWN RISK. EVERY COMPUTER SYSTEM IS DIFFERENT, AND WHAT WORKED FOR ME MAY NOT...

HOWTO_Compile Linux kernel Documentation for manpages

对每一个linux内核或者驱动开发者来说,内核自带的Documentation目录无疑是一个权威的参考资料和学习资料. 编写驱动或者修改内核的时候,可能需要用到kernel api,我们也想能够像l...
  • sudolee
  • sudolee
  • 2011年05月16日 14:51
  • 824

How to: Compile Linux kernel 2.6

How to: Compile Linux kernel 2.6 by nixcraft on September 29, 2005 · 131 comments http://www.cyb...

Compile the mainline Linux kernel for Ubuntu

Original: http://blog.avirtualhome.com/compile-mainline-kernel-ubuntu/ This article will ...
  • msquare
  • msquare
  • 2012年10月22日 13:02
  • 952

Linux kernel compile--linux-3.18.8编译过程

linux-3.18.8内核编译过程

(编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU

译者序 作为第一篇翻译文档,一方面对于翻译经验不足、措辞不当,另一方面对于linux我也是初学者,很多东西尚处于待学阶段,而翻译此文的动机就是我要学习如何跨平台进行文件系统的编译,所以翻译的结果肯定有...
  • mountzf
  • mountzf
  • 2016年06月17日 19:43
  • 1235

HowTo use the CDT to navigate Linux kernel source

HowTo use the CDT to navigate Linux kernel source Here are some steps that I've found to ge...

Linux kernel source code part 6

  • 2011年04月28日 22:10
  • 11.95MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Compile linux kernel source
举报原因:
原因补充:

(最多只允许输入30个字)