编译安装新内核
步骤:


1、下载到新的版本的内核

内核官方网站http://kernel.org/,在这里有各种版本的内核!直到现在内核的最新版本为3.2.7

2、配置新的内核,选定要使用的功能或模块,前面说到Linux采用的是单内核的设计模式,所以有些驱动或功能可以直接编译进内核,有些则可以编译为模块,而这些就是在这里进行配置的。

2.1 解压到特定目录下:/usr/src/
#tar xvf linux-2.6.28.10.tar.gz -C /usr/src/

#cd /usr/src/

这里我要编译的内核版本是2.6.28.10

2.2 这里还要将解压出来的目录linux-2.6.28.10创建一个linux软链接,一是约定俗成,二是方便以后我们以后在编译新内核,当然这里如果不想创建链接,也可以将其重命名为linux
法1:#ln -sv linux-2.6.28.10 linux    ---为linux-2.6.28.10创建软连接linux
法2:
#mv linux-2.6.28.10 linux        ---将linux-2.6.28.10重命名为linux

2.3 配置编译环境
#yum grouplist        ---查看Development Libraries,Development Tools这两个包组是否都安装,如果Development Libraries已经安装,Development Tools并未安装,但是此时Development Tools大部分都已经安装,因为Development Libraries安装时依赖于Development Tools,但如果Development Tools已经安装,Development Libraries并未安装,这时则需要安装Development Libraries

#yum groupinstall nogpgcheck "Development Libraries" -y 
       ---不验证签名信息直接回复y进行安装

2.4 配置内核(驱动、功能、支持...)
#cd /usr/src/linux
法1:(make menuconfig        ---打开配置选项菜单)
当打开时这里都是一些默认的选项,并不是完全根据我们的计算机的硬件配置所进行的配置,而这里大概有3000多项,稍微有一点选择错误,就有可能导致我们的内核编译失败,所以我们可以使用redhat之前给我们的预设的配置文件".config"
#cp /boot/config-2.6.18-164.el5 ./.config    ---将之前的内核配置文件config-2.6.18-164.el5复制到当前目录下并且重命名为.config
#make menuconfig    ---在Redhat给我们预设的配置基础上在做稍微的修改,是不是方便多了
注:在menuconfig中[]:表示不启用此项  [*]:表示直接编译进内核  [M]:表示编译为模块

法2:(#make xconfig     ---打开图形界面进行选择配置)
注:使用xconfig需要安装KDE Software Development,但是安装依赖于X Software Development,所以使用
#yum groupinstall nogpgcheck "KDE Software Development" -y
#make xconfig


法3:(#make gconfig)
注:使用gconfig需要安装GNOME Software Development,所以先
#yum groupinstall nogpgcheck "GNOME Software Development" -y
#make gconfig


法4(#make config)    ---这个将会遍历所有的配置选项,3000多项,你懂的,遍历下来很痛苦的,呵呵。

所以我们一般常用的就是法1、法2、法3

3、编译新内核
编译新内核这个过程是很漫长的,短则30分钟长则1个半小时,时间的长短,取决于所要编译的内核模块多少和机器的性能。
这里一般我们经常都是远程登录到Linux上,所以当我们这在编译内核时突然远程链接断开了,那么就前功尽弃了,还得重新来过,所以为了防止这种情况发生,我们使用screen
#which screen
如果存在screen
#screen            ---进入屏幕
#make           
---编译

如果不存在screen
#yum install screen
#screen            ---进入屏幕
#make           
---编译

注:Ctrl+a,d 离开屏幕
#screen -ls        ---查看打开的screen列表,每一个screen都有一个screenid
#screen -r screenid   
---打开指定的screen


4、安装
#make modules_install    ---安装模块
#make install   



扩展:
一、在已经编译过的内核源码基础重新编译:
#make clean        ---清理之前编译的选项
#make mrproper

上面的两个命令执行后.config会被删除
三、仅编译某个目录中的源代码:
#make SUBDIR=arch/
四、仅编译某个目录中的模块
#makke M=drivers/net/