如何在CentOS/RHEL上安装或升级新的内核版本

    Linux内核是一个总体的类Unix计算机操做系统内核。一般咱们使用的Linux发行版,如Red Hat、Debian、SUSE等,这些都称为Linux的分发版。一个典型的分发版,是由Linux内核,以及支持的许多由GNU项目提供的应用程序、GNU组件,C标准库,CLI shell,X windows等组成的一个完整操做系统。咱们应该要知道的是,Linux的定义仅仅是Linux内核,全部的”Linux”发行版其实是以Linux为内核的GNU系统的版本。不一样的Linux内核版本都有其生命周期,Linux内核组织或Linux发行版厂商只在该日期提供错误或漏洞修复,咱们能够从从内核的版本号区分辨别,好比版本3.16.43,该数字3.16表示一个长期版本,43则表示错误修订以后再发行的具体版本号,固然我这里描述的只是提供一个参考价值,更细致的版本还有多是3.16.43-1这种。值得咱们关注的是,任何内核版本错误修复后的再发布版本都应该是咱们考虑升级使用的内核版本。
node



Linux内核版本shell

   Linux内核版本分为主线、稳定和长期版本。(全部内核版本均可以在内核开发官方网站https://www.kernel.org上获取)目前咱们看到最新的稳定内核版本为4.10.12windows

主线版本表明整个Linux内核的一个树干,新的主线版本每2-3个月发布一次,全部的新功能及特性都将会包含主线版本中。稳定内核则是在主线版本中,被认为是稳定的得出。稳定内核的任何错误修复都将从主线树中返回,也就是主线内核出现的任何错误(包括以前的任何旧版本内核的错误和BUG)在获得修复以后才会被指定为稳定内核,因此在一般状况下,稳定内核既有内核新功能,同时BUG也是最少的内核版本。稳定内核的更新发布依赖于主线内核(直到下一个主线内核可用),稳定的内核更新是根据须要发布的,一般是每3个月。而对于长期内核版本,一般提供几个长期维护内核版本,用于较早的内核树错误修复返回的目的。这些内核只应用重要的错误修复,一般不会有很是频繁的更新。centos

主线、稳定和长期都是活动内核版本,由Linus TorvaldsLinux内核组织维护和释放。 而咱们平时所使用的Linux发行版的内核都为分发内核,许多Linux发行版都提供本身的长期维护内核版本,这些内核多是也可能不是基于内核开发人员维护的内核。所以分发版本的内核版本由发行版的厂商决定并有本身的维护周期,一般由分发版更新时一块儿发布。安全


安装/升级新内核的目的bash

许多出于对安全的考虑,如避免之前版本中发现的漏洞ide

更充分地认识内核,了解内核的各个内核模块和功能性能

更好的利用/体验新内核的的新功能和特性学习


安装/升级的方法和建议网站

一、对于CentOS/RHEL系统,尽可能使用yum方式或RPM包安装/升级内核,须要注意的是红帽的Red Hat Linux服务须要订阅。

二、使用安装新内核而不是直接升级内核,安装新内核不会覆盖旧内核,而升级会致使新内核直接替换旧内核,可能会致使系统没法启动,安装也可让咱们在升级后有回滚的选择。

三、通常地,对于大多数Linux分发版,使用yum/dnf和分发版布官方的存储库来升级内核,这种方式只能升级到该分发版的存储库提供的最新版本,而不是Linux内核组织发布的最新内核。

四、若是想迅速而且安全地使用最新内核,对于CentOS/RHEL系统并不支持yum的方式直接安装或升级。那么此时咱们可使用ELRepo(第三方存储库)进行内核安装升级。(相关信息请访问网站http://www.elrepo.org)

五、下载新内核的源码包进行编译安装,这种方式有助于咱们更细致地学习内核底层知识,但在生产环境中不推荐编译安装。

六、尽可能使用最新的Linux发行版,新的Liunx发行版包含该发行版维护的新内核,若是有必要,那么请使用如yum upgrade或者yum update来更新你的系统。对于UbuntuDebian等发行版,使用apt-get update方式来更新。


内核软件包介绍

  • kernel      Linux内核软件包,包含单、多核和多处理器系统的内核,是任何Linux操做系统的核心,单处理器的系统仅需安装内核包。内核处理操做系统的基本功能: 内存分配、进程分配、设备输入和输出等

  • kernel-devel   包含提供足够的针对内核软件包构建模块的内核头文件和makefile文件

  • kernel-headers  包含指定Linux内核、用户空间库文件和程序之间指定接口的C头文件。头文件定义了构建大多数标准程序所需的结构和常量,也是重建glibc软件包所必需的

  • kernel-doc     包含来自内核源代码的文档文件。各类关于Linux内核和设备以及驱动程序的信息都记录在这些文件当中

  • kernel-firmware  包含对于某些设备及其操做的固件信息文件

  • kernel-debug    包含许多对于内核debug诊断和调试的启用选项,只有当咱们须要尝试收集额外的内核错误信息时才应该安装它。它是以牺牲性能为代价

  • kernel-debug-devel  包含内核debug诊断和调试的启用选项,以牺牲性能为代价


CentOS上安装/升级内核

  我将介绍在CentOS下经过yum软件管理程序或RPM包安装/升级内核和经过ELRepo存储库安装/升级最新的内核版本(两种方法)

1、CentOS下经过yum软件管理程序或RPM包安装/升级内核

安装步骤:

一、查看当前内核版本

[root@HMing-Server34 ~]# uname -sr
Linux 2.6.32-431.el6.x86_64

查看系统已安装的内核软件

# yum list installed kernel*

wKiom1j_FSzjvvUlAACmTgyX6DI426.png

在上面输出中,白色高亮部分就是系统已经安装的内核软件包


二、获取CentOS 6发行版的最新内核

对于上面介绍的内核软件包,咱们不用所有安装,只安装如下几个包便可

kernel-2.6.32-696.el6.x86_64.rpm
kernel-devel-2.6.32-696.el6.x86_64.rpm
kernel-headers-2.6.32-696.el6.x86_64.rpm
kernel-firmware-2.6.32-696.el6.noarch.rpm
kernel-doc-2.6.32-696.el6.noarch.rpm

咱们能够从目前最新版CentOS6.9iso文件中获取以上内核软件包,或者从官方支持的镜像网站中下载,如国内的sohu镜像地址http://mirrors.sohu.com中下载,详细地址为http://mirrors.sohu.com/centos/6.9/os/x86_64/Packages/

wKiom1j_FXHRL2yBAABiv_FIUic556.png


CentOS7(目前最新版7.3),咱们须要如下几个包

kernel-3.10.0-514.el7.x86_64.rpm

kernel-headers-3.10.0-514.el7.x86_64.rpm

kernel-tools-3.10.0-514.el7.x86_64.rpm

kernel-tools-libs-3.10.0-514.el7.x86_64.rpm

kernel-doc-3.10.0-514.el7.noarch.rpm

三、执行安装/升级内核软件包

使用RPM安装方式安装/升级内核

# rpm -Uvh kernel-firmware-2.6.32-696.el6.noarch.rpm
# rpm -Uvh kernel-headers-2.6.32-696.el6.x86_64.rpm
 
# rpm -ivh kernel-devel-2.6.32-696.el6.x86_64.rpm
# rpm -ivh kernel-doc-2.6.32-696.el6.noarch.rpm

# rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm
# rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm --nodeps

安装kernel包,若是有其余依赖软件须要安装,咱们能够根据提示安装,或者在rpm后面加上--nodeps选项,意思是解除依赖

wKiom1j_FgDjZ8CLAADbyfIcIAw602.png


注意:在安装/升级以上内核软件包时,安装内核软件包kernel-2.6.32-696.el6.x86_64.rpm 时,rpm安装方式选项参数使用的-i而不是-U,二者是有区别的,-i表示安装,-U表示升级,而咱们须要保留旧的内核版本,全部这里使用安装的方式。而对于内核软件包kernel-firmwarekernel-headerskernel-develkernel-doc等,对于已安装过的,直接安装可能会报相关错误提示,因此咱们可使用-U选项升级,也能够直接用yum安装,自动安装相关依赖的软件包。


使用yum方式安装/升级内核

  cd进入新下载的内核软件包所在的目录,执行yum localinstall kernel*进行安装,值得提的是,使用这种方式安装一样不会直接替换升级旧内核,安装以后新旧内核并存。因此咱们推荐这种使用安装方式。

[root@HMing-Server34 src]# ls kernel-*
kernel-2.6.32-696.el6.x86_64.rpm
kernel-devel-2.6.32-696.el6.x86_64.rpm
kernel-doc-2.6.32-696.el6.noarch.rpm
kernel-firmware-2.6.32-696.el6.noarch.rpm
kernel-headers-2.6.32-696.el6.x86_64.rpm

执行yum localinstall kernel*进行安装

[root@HMing-Server34 src]# yum localinstall kernel*

wKiom1j_FoXRKpD-AADSHEZ12YE127.png


4、安装/升级内核以后,修改系统默认使用的内核

  在CentOS中安装完新内核以后,新的内核成为系统的默认启动选择,咱们不须要作任何修改。新的内核在重启系统后生效。若是有必要,好比使用旧内核,咱们能够手动修改/boot/grub/grub.conf文件中系统默认使用的内核,修改default=1,表示GRUB使用第二个内核启动系统

wKioL1j_FtKAUZNfAAEpu58Ww-s980.png


在从新启动系统的GRUB的引导界面,快速按下任意键,确认新内核默认被使用

wKiom1j_FvaSmOyDAABJxr-yP6o438.png


查看新内核,确认是否正确安装

[root@HMing-Server34 src]# uname -sr
Linux 2.6.32-696.el6.x86_64


2、经过ELRepo存储库安装/升级最新的稳定内核版本

安装步骤

一、CentOS上启用ELRepo存储库

导入公钥

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

CentOS6上安装ELRepo 6存储库:

# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

CentOS7上安装ELRepo 7存储库:

# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装了ELRepo存储库,咱们能够经过查找特定的存储库中查找可用的软件包,这里咱们查看"elrepo-kernel" 内核软件包的版本信息

# yum --disablerepo "*" --enablerepo "elrepo-kernel" list available

wKiom1j_GArTVOXBAACya6J7atI557.png


二、指定ELRepo存储库安装最新的稳定内核

# yum --enablerepo=elrepo-kernel install kernel-ml

wKiom1j_GEjggo6-AAB09Aoo5l4517.png


安装完成以后,咱们便可以在/boot/grub/grub.conf 文件看到存在新安装的内核条目,并修改default=0,指定系统默认启动的内核选项,为4.10.12内核版本,从新启动系统便可生效

wKiom1j_GGqw_1EbAAFujKHa1cA588.png


查看从新引导的GRUB内核启动项界面,确认是否正确使用了指定的新内核

wKioL1j_GJSQ60avAABMm1tcAE8902.png


一样的,对于在RHEL上安装/升级内核使用上面的两种方法也适用


结语

  在本文中,介绍了内核的几种版本,以及安装/升级新内核版本的两种方法,也是在生产环境中推荐的安装/升级方法。当这两种方法都不知足要求时,咱们也能够从https://www.kernel.org/下载内核源码包进行编译安装。

相关文章
相关标签/搜索