centos 6.x 内核升级

Posted on Posted in linux
Tips: 本文创建于2015年11月24日,已超过 2 年,内容或图片可能已经失效!

1、下载源码包

  1. https://www.kernel.org/  

2、更新当前系统

  1. yum update  
  2. yum upgrade -y  

3、安装编译内核所需要的软件包

  1. yum grouplist   
  2. #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库;  
  3. yum groupinstall "Development Tools"   
  4. #一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具  
  5. yum install ncurses-devel   
  6. #你必须这样才能让 make *config 这个指令正确地执行  
  7. yum install qt-devel   
  8. #如果你没有 X 环境,这一条可以不用  
  9. yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel bc  
  10. #创建 CentOS-6 内核时需要它们  

如果当初安装系统是选择了Software workstation,上面的安装包几乎都已包含。

4、拷贝当前系统的配置文件到当前目录

  1. tar xf linux-4.3.tar.xz  
  2. cd linux-4.3  
  3. cp /boot/config-2.6.32-573.8.1.el6.x86_64 .config  

5、使用旧内核配置,并自动接受每个新增选项的默认设置

  1. sh -c 'yes "" | make oldconfig'  
  2. #make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写。有的文档里介绍使用make memuconfig,它便是根据需要定制模块,类似界面如下:(我们不需要)  

6、编译

make -j1 bzImage #生成内核文件
make -j1 modules #编译模块
make -j1 modules_install #编译安装模块
#上面的1,cpu是几核,就是几

7、安装

  1. make install  
  2. #如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,可以忽略。  

在vmware虚拟机上编译,出现类似下面的错误

  1. make install   
  2. sh /usr/src/linux-3.10.58/arch/x86/boot/install.sh 3.10.58 arch/x86/boot/bzImage \  
  3.         System.map "/boot"  
  4. ERROR: modinfo: could not find module vmware_balloon  

可以忽略,如果你有强迫症的话,尝试以下办法:
要在vmware上需要安装VMWARE_BALLOON,可直接修改.config文件,但如果vi直接加入CONFIG_VMWARE_BALLOON=m依然是没有效果的,因为它依赖于HYPERVISOR_GUEST=y。如果你不知道这层依赖关系,通过make menuconfig后,Device Drivers -> MISC devices 下是找不到VMware Balloon Driver的。(手动vi .config修改HYPERVISOR_GUEST后,便可以找到这一项),另外,无论是通过make menuconfig或直接vi .config,最后都要运行sh -c 'yes "" | make oldconfig'一次得到最终的编译配置选项。
然后,考虑到vmware_balloon可能在这个版本里已更名为vmw_balloon,通过下面的方法保险起见:

  1. # cd /lib/modules/3.10.58/kernel/drivers/misc/  
  2. # ln -s vmw_balloon.ko vmware_balloon.ko #建立软连接  

其实,针对安装docker的内核编译环境,最明智的选择是使用sciurus帮我们配置好的.config文件。
也建议在make bzImage之前,运行脚本check-config.sh检查当前内核运行docker所缺失的模块。
当提示缺少其他module时如NF_NAT_IPV4时,也可以通过上面的方法解决,然后重新编译。

8、修改grub

  1. vim /etc/grub.conf  
  2. default=0  
  3. timeout=5  
  4. splashimage=(hd0,0)/grub/splash.xpm.gz  
  5. hiddenmenu  
  6. title CentOS (4.3.0)  
  7.         root (hd0,0)  
  8.         kernel /vmlinuz-4.3.0 ro root=/dev/mapper/vg_localcentos01-lv_root rd_NO_LUKS rd_LVM_LV=vg_localcentos01/lv_root LANG=en_US.UTF-8 rd_LVM_LV=vg_localcentos01/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet  
  9.         initrd /initramfs-4.3.0.img  

9、重启验证

  1. uname -r  
  2. 4.3.0  

10、如果失败,则重新循环

  1. make mrproper #清理上次编译的现场 ,然后从第四步开始  
» 转载请注明来源:若我若鱼 » centos 6.x 内核升级

Leave a Reply

Your email address will not be published. Required fields are marked *

eighteen + thirteen =