Linux kerner即linux内核是整个系统的核心,负责管理硬件和进程之间的切换,平时是不需要进行修改的,那么为什么会有升级内核一说呢?主要来讲,升级内核是为获取新内核版本的的新功能、新特性以及支持的新设备,也就是内核可以集成更多硬件驱动,另外也可以解决旧版本内核版本存在的一直bug,也就是可以修补一些已经解决的内核漏洞,因此,在有些情况下升级内核还是有需要的。

    那么问题来,在哪去下载内核呢?

    当然是内核的官网了,官网地址是:https://www.kernel.org/

    下载的时候要下载比自己目前已经安装的新的版本,内核版本分为以下几个类别:

    longterm:提供长期支持的稳定版本,在生产环境建议下载这个版本

    stable:最新的稳定版本,但是不提供长期的技术支持

    mainline:测试或开发版本,不稳定,不建议在生产环境使用

因此要下载提供长期官方支持的稳定版本,本次下载最新的长期技术支持稳定版本linux-3.14.22.tar.gz做编译,其实编译的步骤是一样的,只是不同的内核版本支持的功能和支持的驱动有所不同!


1、准备环境:    

我做使用的为Centos 6.5 x86_64,提前要准备好编译环境,即安装如下包组:

    yum groupinstall Desktop Platform Development" "Development tools" "Server Platform Development"

    安装好之后将在官网下载好的内核包复制到系统上的/root下,然后执行解压到/usr/src/目录下,并切换到该目录为解压的文件夹创建链接,方便操作:

   [[email protected] linux]# tar xvf linux-3.14.22.tar.xz  -C /usr/src/

     [[email protected] linux]# cd cd /usr/src/linux-3.14.22/

    [[email protected] src]#  ln -sv linux-3.14.22 linux

    [[email protected] src]# cd linux

  确认加压后的文件都存在: 

[[email protected] linux]# ls

arch   COPYING  crypto         drivers   fs       init  Kbuild   kernel  MAINTAINERS  mm   README          samples  security  tools  virt

block  CREDITS  Documentation  firmware  include  ipc   Kconfig  lib     Makefile     net  REPORTING-BUGS  scripts  sound     usr

将系统/boot下的config-2.6.32-358.el6.x86_64复制到/usr/src/linux,此文件相当于目前内核的配置,记录了打开的功能或支持的硬件驱动,我们只需要在原基础之上进行修改即可:

[[email protected] linux]# cp /boot/config-2.6.32-358.el6.x86_64  .config


2、内核配置:

    再次要将自己所需要的功能打开或去除,为下一步编译做准备,命令有如下:

        make config:文本模式配置,遍历每个选项

        make  allyesconfig:创建一个全部设置“Y”的./.config文件 

        make  allnoconfig:创建将选项全选'n'的./.config文件

        make menuconfig 使用文本菜单窗口编辑

        make kconfig(在桌面环境下,并且安装了qt开发环境)

        make gconfig(在GNome桌面环境,并且安装了gtk开发环境)

        make clean   清理生成文件,但会保留.config和一些模块文件。

        make mrproper  清理全部文件,包括.config和一些备份文件。

        make distclean   在make mrproper的基础上还清理编辑器可能生成的备份文件,patch的rej文件等。

    建议复制之前的内核文件并使用make menuconfig进行功能的加减,首次打开的界面如下:

wKiom1RU7Yey0jGgAAR0CyqBteg164.jpg

    

    这里面有很多的选项,以后有时间我尽量将选项的内容和功能加到博客,在选项前面的中括号里面,*表示是直接编译到内核里面,M是表示编译成模块的方式,到时候需要将模块挂载到系统才可以使用,因此要看实际需求进行选择,如下:


wKioL1RUnIyC-L-rAAJuT-M-dng094.jpg

    在进入到一个选项之后,连按两下Esc可以返回到上一个选项,当返还到最上级的时候,再按两下Esc会出现是否保存配置并退出的界面,此时连按两下Esc也可以返回到内核配置的界面,如下:

    wKioL1RUnSiAocaLAAC32RoA5yE264.jpg


按yes保存退出,即进入编译步骤:

3、编译内核:

    使用的过程和命令如下:

    make -j #(物理CPU核心的2倍,速度快,)我是用虚拟机做的实验,分配的一个CPU,因此制定2

    wKioL1RU7mvjVUKkAAPAOzLbxnU930.jpg

    make modules_install安装模块

wKiom1RU96HAZ4SZAALgpZMC8ac109.jpg


wKiom1RU-MWjK6uPAAIZCDCB71w993.jpg

    

    make install 安装内核内核,make install是复制文件的阶段:

wKioL1RU-nexOOmyAADPb7dTuBA891.jpg


4、查看/boot/grub/grup.conf文件,验证新编译的内核是否为第一启动项,或在旧版本的内核行前面加#号注释:

wKiom1RU-eSzQQ7PAAMzQo7TTdg923.jpg


    重启用新内核启动系统:

wKiom1RU-wShK1XGAAELrcKcOoc686.jpg


    重启系统后重新查看一下内核版本是否为刚才编译好教新的3.14.22长期支持稳定版本:

wKioL1RU-9Dgpkj4AAEW3x9s43A460.jpg


通过验证,已经成功升级为新的内核!