1、自己定制编译的内核运行更快(具有更少的代码)
2、系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
3、不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
4、将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 |
下载需要的kernel版本 | |
下载需要的内核更新工具版本 | |
#下载2.6对USB设备的支持 |
mkinitrd-*.i386.rpm
lvm2-*.el5.i386.rpm
device-mapper-*.el5.i386.rpm |
rpm -ivh --nodeps mkinitrd-*.i386.rpm
rpm -ivh --nodeps lvm2-*.el5.i386.rpm
rpm -ivh --nodeps device-mapper-*.el5.i386.rpm |
--nodeps |
不检查包的依赖关系 |
--force |
如果不能安装在加上强制安装选项 |
make moveold
make all install
./generate-modprobe.conf /etc/modprobe.conf |
[root@zzh /]# yum install ncurses* |
如果没有这个文件不能开启图像界面 |
[root@zzh /]# rm -rf /usr/src/linux/ |
删除linux目录,如果之前内核没有升级过这个目录是没有的 |
[root@zzh /]# ln -s /usr/src/linux-2.6.31.1/ /usr/src/linux |
做个软连接 |
# rm -rf /usr/include/asm /usr/include/linux /usr/include/scsi
# ln -s /usr/src/linux/include/asm-i386 /usr/include/asm
# ln -s /usr/src/linux/include/linux /usr/include/linux
# ln -s /usr/src/linux/include/scsi /usr/include/scsi |
define __FD_SETSIZE 65535
define INR_OPEN 65535
define NR_FILE 65535
define NR_RESERVED_FILES 128 |
[root@zzh linux]# make mrproper |
确保源代码目录下没有不正确的.o文件以及文件的互相依赖 |
[root@zzh linux]# make menuconfig |
进入/usr/src/linux/目录配置内核选项 |
Y-将该功能编译进内核
N-不将该功能编译进内核
M-将该功能编译成可以在需要时动态插入到内核中的模块 | ||||||
模块支持
Enable loadable module support --->
虚拟接口支持
Device Drivers --->
Block devices --->
磁盘支持
Device Drivers --->
Multiple devices driver support (RAID and LVM) --->
对应网卡支持
Device Drivers --->
Network device support --->
Ethernet (10 or 100Mbit) --->
文件系统
File systems --->
NTFD支持
File systems --->
DOS/FAT/NT Filesystems --->
|
more /usr/src/linux/.config |
可以查看指定的模块是否已被选中 |
make dep |
建立编译时所需的从属文件,注意:内核从未编译过此步可跳过 |
make clean |
清除内核编译的目标文件,注意:如果内核从未编译过此步可跳过 |
make -jn |
数字n是多进程编译,加快编译速度,注意: 此命令已完成make bzImage及make modules的工作 |
make modules |
编译可加载模块 |
make modules_install |
安装可加载模块 |
make install |
安装新内核 |
[root@zzh /]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.31.1
[root@zzh /]# cp /usr/src/linux/System.map /boot/System.map-2.6.31.1
[root@zzh /]# ln –s /boot/vmlinuz-2.6.31.1 /boot/vmlinuz
[root@zzh /]# ln –s /boot/System.map-2.6.31.1 /boot/System.map |
# new-kernel-pkg --mkinitrd --depmod --install 2.6.31.1 |
在/boot目录下执行以下命令 |
[root@zzh /]# df |
查看根分区对应的实际的分区 |
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.31.1)
root (hd0,0)
kernel /vmlinuz-2.6.31.1 ro root=/dev/hda3 rhgb quiet
initrd /initrd-2.6.31.1.img |