一、下载内核

https://www.kernel.org/pub/linux/kernel/

二、开始编译内核

   首先是先进入到解压后的内核目录。

2.1

   一般来讲,我们拿到新内核之后,应该执行清理残余配置的步骤。

make mrproper
make clean

2.2

   编辑Makefile文件,简单的做些自定义。

ERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
EXTRAVERSION = -shanks.1.x86_64
#这样修改之后,你的内核名称(uname -r)就会是2.6.32-shanks.1.x86_64

2.3

   make menuconfig

2.4


make -jn all
#对于一台测试机而言,n可以等于cpu个数的2倍

2.5

make modules_install

2.6    


cd /boot
cp /usr/src/linux-2.6.32/arch/x86/boot/bzImage vmlinuz-2.6.32-shanks.1.x86_64
cp /usr/src/linux-2.6.32/.config config-2.6.32-shanks.1.x86_64
#centos6之后,你可以用dracut来代替mkinitrd
dracut -f -v -H -k '/lib/modules/2.6.32-shanks.1.x86_64/' initramfs-2.6.32-shanks.1.x86_64.img 2.6.32-shanks.1.x86_64

2.7

   vi /boot/grub/grub.conf


#在原有配置的基础上,复制出4行配置,之后做修改:
#只要修改title、kernel、initrd三行。
#示例:
title CentOS (2.6.32-shanks.1.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-shanks.1.x86_64 ro root=/dev/mapper/vg_livedvd-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_livedvd/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_livedvd/lv_swap  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-shanks.1.x86_64.img
#最后,记得看下default这行配置,如果你新内核的4行配置是所有title中的第一个,那么default后面的值应该是0

2.6、2.7这两步可以用make install替代,但需要手动修改kernel的启动顺序

三、重启