[root@hostname ~]# uname -r2.6.32-220.el6.x86_64 2.6.32-220.el6.x86_64 [root@hostname ~]# cat /etc/centos-release CentOS release 6.2 (Final) CentOS release 6.2 (Final
编译安装新内核,依赖于开发环境和开发库linux
# yum grouplist //查看已经安装的和未安装的软件包组,来判断咱们是否安装了相应的开发环境和开发库; # yum groupinstall "Development Tools" //通常是安装这两个软件包组,这样作会肯定你拥有编译时所需的一切工具 # yum install ncurses-devel //你必须这样才能让 make *config 这个指令正确地执行 # yum install qt-devel //若是你没有 X 环境,这一条能够不用 # yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel //建立 CentOS-6 内核时须要它们
去 http://www.kernel.org 首页,能够看到有stable, longterm等版本,longterm是比stable更稳定的版本,会长时间更新,所以我选择 4.1.17shell
[root@sean ~]# tar -xf linux-3.10.58.tar.xz -C /usr/src/ [root@sean ~]# cd /usr/src/linux-3.10.58/ [root@sean linux-3.10.58]# cp /boot/config-2.6.32-220.el6.x86_64 .config
咱们在系统原有的内核配置文件的基础上创建新的编译选项,因此复制一份到当前目录下,命名为.config。接下来继续配置:centos
[root@sean linux-3.10.58]# sh -c 'yes "" | make oldconfig' HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --oldconfig Kconfig .config:555:warning: symbol value 'm' invalid for PCCARD_NONSTATIC .config:2567:warning: symbol value 'm' invalid for MFD_WM8400 .config:2568:warning: symbol value 'm' invalid for MFD_WM831X .config:2569:warning: symbol value 'm' invalid for MFD_WM8350 .config:2582:warning: symbol value 'm' invalid for MFD_WM8350_I2C .config:2584:warning: symbol value 'm' invalid for AB3100_CORE .config:3502:warning: symbol value 'm' invalid for MMC_RICOH_MMC * * Restart config... * * * General setup * ... ... XZ decompressor tester (XZ_DEC_TEST) [N/m/y/?] (NEW) Averaging functions (AVERAGE) [Y/?] (NEW) y CORDIC algorithm (CORDIC) [N/m/y/?] (NEW) JEDEC DDR data (DDR) [N/y/?] (NEW) # # configuration written to .config #
make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写。有的文档里介绍使用make memuconfig,它即是根据须要定制模块,相似界面以下:(咱们不须要)
make oldconfig会在生成新的.config以前备份为.config.old,并生成新的.config文件工具
[root@sean linux-3.10.58]# make -j4 bzImage //生成内核文件 [root@sean linux-3.10.58]# make -j4 modules //编译模块 [root@sean linux-3.10.58]# make -j4 modules_install //编译安装模块
-j后面的数字是线程数,用于加快编译速度,通常的经验是,逻辑CPU,就填写那个数字,例若有8核,则为-j8。(modules部分耗时30多分钟spa
[root@sean linux-3.10.58]# make install 实际运行到这一步时,出现ERROR: modinfo: could not find module vmware_balloon,可是不影响内核安装,是因为vsphere须要的模块没有编译,要避免这个问题,须要在make以前时修改.config文件,加入 HYPERVISOR_GUEST=y CONFIG_VMWARE_BALLOON=m (这一部分比较容易出问题,参考下文异常部分)
安装完成后,须要修改Grub引导顺序,让新安装的内核做为默认内核。
编辑 grub.conf文件,线程
vi /etc/grub.conf #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (3.10.58) root (hd0,0) ...
[root@sean ~]# uname -r3.10.58
升级内核成功!code
能够先清除,再从新编译:orm
# make mrproper #完成或者安装过程出错,能够清理上次编译的现场 # make clean