CentOS 内核裁剪
1.下载系统对应内核版本
https://www.kernel.org/pub/linux/kernel/
?
2.将本机内核配置文件拷贝至新下载的内核包中
# tar -zxvf linux-2.6.32.tar.gz
# cd linux-2.6.32
# cp /boot/config-2.6.32-279.el6.x86_64 .config
?
3.使用make menuconfig进行内核裁剪(此处实例为去掉USB模组)
# make menuconfig?
选择Device Drivers “回车”
?
选择USB support 按"空格"取消支持
?
按两下"Esc"退出一层配置(退出两次)
选择“Yes”保存配置
?
4.编译安装裁剪后的内核文件
# make
# make bzImage
# make modules
# make modules_install
# make install
若最后一步make install后出错ERROR: modinfo: could not find module ***?
查看/boot下关键文件的日期
# ls -l /boot/total 38775
-rw-r--r--. 1 root root 101820 Jun 22 2012 config-2.6.32-279.el6.x86_64
drwxr-xr-x. 3 root root 1024 Nov 8 10:06 efi
drwxr-xr-x. 2 root root 1024 Nov 11 18:58 grub
-rw-r--r--. 1 root root 16186595 Nov 8 10:09 initramfs-2.6.32-279.el6.x86_64.img
-rw-r--r--. 1 root root 11369936 Nov 11 18:58 initramfs-2.6.32.img
drwx------. 2 root root 12288 Nov 8 09:30 lost+found
-rw-r--r--. 1 root root 179157 Jun 22 2012 symvers-2.6.32-279.el6.x86_64.gz
lrwxrwxrwx. 1 root root 23 Nov 11 18:57 System.map -> /boot/System.map-2.6.32
-rw-r--r--. 1 root root 2056341 Nov 11 18:57 System.map-2.6.32
-rw-r--r--. 1 root root 2341856 Jun 22 2012 System.map-2.6.32-279.el6.x86_64
lrwxrwxrwx. 1 root root 20 Nov 11 18:57 vmlinuz -> /boot/vmlinuz-2.6.32
-rw-r--r--. 1 root root 3451632 Nov 11 18:57 vmlinuz-2.6.32
-rwxr-xr-x. 1 root root 3986608 Jun 22 2012 vmlinuz-2.6.32-279.el6.x86_64
均为编译安装前后不久的时间即可忽略
?
5.更改启动内核
# vi /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:? You have a /boot partition.? This means that
#????????? all kernel and initrd paths are relative to /boot/, eg.
#????????? root (hd0,0)
#????????? kernel /vmlinuz-version ro root=/dev/mapper/vg_kernerl-lv_root
#????????? initrd /initrd-[generic-]version.img
#boot=/dev/xvda
default=0 #此处更改为0即为默认使用title01(2.6.32)内核启动程序,更改为1即为默认使用title02(2.6.32-279.el6.x86_64)内核启动程序.
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32)
??????? root (hd0,0)
??????? kernel /vmlinuz-2.6.32 ro root=/dev/mapper/vg_kernerl-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_LVM_LV=vg_kernerl/lv_swap? KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_kernerl/lv_root rd_NO_DM rhgb quiet
??????? initrd /initramfs-2.6.32.img
title CentOS (2.6.32-279.el6.x86_64)
??????? root (hd0,0)
??????? kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_kernerl-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_LVM_LV=vg_kernerl/lv_swap? KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_kernerl/lv_root rd_NO_DM rhgb quiet
??????? initrd /initramfs-2.6.32-279.el6.x86_64.img
?
6.验证
重启前查看内核版本
# uname -aLinux kernerl 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
?
重启后查看内核版本
# uname -aLinux kernerl 2.6.32 #1 SMP Mon Nov 11 18:40:28 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
?