Linux内核版本
Linux内核版本分为主线、稳定和长期版本。(所有内核版本都可以在内核开发官方网站https://www.kernel.org上获取)目前我们看到最新的稳定内核版本为4.10.12。
主线版本代表整个Linux内核的一个树干,新的主线版本每2-3个月发布一次,所有的新功能及特性都将会包含主线版本中。稳定内核则是在主线版本中,被认为是”稳定的”得出。稳定内核的任何错误修复都将从主线树中返回,也就是主线内核出现的任何错误(包括之前的任何旧版本内核的错误和BUG)在得到修复之后才会被指定为稳定内核,所以在通常情况下,稳定内核既有内核新功能,同时BUG也是最少的内核版本。稳定内核的更新发布依赖于主线内核(直到下一个主线内核可用),稳定的内核更新是根据需要发布的,通常是每3个月。而对于长期内核版本,通常提供几个”长期维护”内核版本,用于较早的内核树错误修复返回的目的。这些内核只应用重要的错误修复,通常不会有非常频繁的更新。
主线、稳定和长期都是活动内核版本,由Linus Torvalds及Linux内核组织维护和释放。 而我们平时所使用的Linux发行版的内核都为分发内核,许多Linux发行版都提供自己的”长期维护”内核版本,这些内核可能是也可能不是基于内核开发人员维护的内核。因此分发版本的内核版本由发行版的厂商决定并有自己的维护周期,通常由分发版更新时一起发布。
安装/升级新内核的目的
许多出于对安全的考虑,如避免以前版本中发现的漏洞
更充分地认识内核,了解内核的各个内核模块和功能
更好的利用/体验新内核的的新功能和特性
1、对于CentOS/RHEL系统,尽量使用yum方式或RPM包安装/升级内核,需要注意的是红帽的Red Hat Linux服务需要订阅。
2、使用安装新内核而不是直接升级内核,安装新内核不会覆盖旧内核,而升级会导致新内核直接替换旧内核,可能会导致系统无法启动,安装也可以让我们在升级后有回滚的选择。
3、一般地,对于大多数Linux分发版,使用yum/dnf和分发版布官方的存储库来升级内核,这种方式只能升级到该分发版的存储库提供的最新版本,而不是Linux内核组织发布的最新内核。
4、如果想迅速并且安全地使用最新内核,对于CentOS/RHEL系统并不支持yum的方式直接安装或升级。那么此时我们可以使用ELRepo(第三方存储库)进行内核安装升级。(相关信息请访问网站http://www.elrepo.org)
5、下载新内核的源码包进行编译安装,这种方式有助于我们更细致地学习内核底层知识,但在生产环境中不推荐编译安装。
6、尽量使用最新的Linux发行版,新的Liunx发行版包含该发行版维护的新内核,如果有必要,那么请使用如yum upgrade或者yum update来更新你的系统。对于Ubuntu、Debian等发行版,使用apt-get update方式来更新。
内核软件包介绍
@H_628_301@kernel Linux内核软件包,包含单、多核和多处理器系统的内核,是任何Linux操作系统的核心,单处理器的系统仅需安装内核包。内核处理操作系统的基本功能: 内存分配、进程分配、设备输入和输出等
kernel-headers 包含指定Linux内核、用户空间库文件和程序之间指定接口的C头文件。头文件定义了构建大多数标准程序所需的结构和常量,也是重建glibc软件包所必需的
kernel-firmware 包含对于某些设备及其操作的固件信息文件
kernel-debug 包含许多对于内核debug诊断和调试的启用选项,只有当我们需要尝试收集额外的内核错误信息时才应该安装它。它是以牺牲性能为代价
kernel-debug-devel 包含内核debug诊断和调试的启用选项,以牺牲性能为代价
在CentOS上安装/升级内核
我将介绍在CentOS下通过yum软件管理程序或RPM包安装/升级内核和通过ELRepo存储库安装/升级最新的内核版本(两种方法)
一、CentOS下通过yum软件管理程序或RPM包安装/升级内核
安装步骤:
1、查看当前内核版本
[root@HMing-Server34~]#uname-sr Linux2.6.32-431.el6.x86_64
查看系统已安装的内核软件
# yum list installed “kernel*”
在上面输出中,白色高亮部分就是系统已经安装的内核软件包
2、获取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.9的iso文件中获取以上内核软件包,或者从官方支持的镜像网站中下载,如国内的sohu镜像地址http://mirrors.sohu.com中下载,详细地址为http://mirrors.sohu.com/centos/6.9/os/x86_64/Packages/
在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 |
3、执行安装/升级内核软件包
使用RPM安装方式安装/升级内核
#rpm-Uvhkernel-firmware-2.6.32-696.el6.noarch.rpm #rpm-Uvhkernel-headers-2.6.32-696.el6.x86_64.rpm #rpm-ivhkernel-devel-2.6.32-696.el6.x86_64.rpm #rpm-ivhkernel-doc-2.6.32-696.el6.noarch.rpm #rpm-ivhkernel-2.6.32-696.el6.x86_64.rpm #rpm-ivhkernel-2.6.32-696.el6.x86_64.rpm--nodeps
安装kernel包,如果有其他依赖软件需要安装,我们可以根据提示安装,或者在rpm后面加上--nodeps选项,意思是解除依赖
注意:在安装/升级以上内核软件包时,安装内核软件包kernel-2.6.32-696.el6.x86_64.rpm 时,rpm安装方式选项参数使用的-i而不是-U,两者是有区别的,-i表示安装,-U表示升级,而我们需要保留旧的内核版本,所有这里使用安装的方式。而对于内核软件包kernel-firmware、kernel-headers、kernel-devel、kernel-doc等,对于已安装过的,直接安装可能会报相关错误提示,所以我们可以使用-U选项升级,也可以直接用yum安装,自动安装相关依赖的软件包。
使用yum方式安装/升级内核
cd进入新下载的内核软件包所在的目录,执行yum localinstall kernel*进行安装,值得提的是,使用这种方式安装同样不会直接替换升级旧内核,安装之后新旧内核并存。所以我们推荐这种使用安装方式。
[root@HMing-Server34src]#lskernel-* 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-Server34src]#yumlocalinstallkernel*
在CentOS中安装完新内核之后,新的内核成为系统的默认启动选择,我们不需要做任何修改。新的内核在重启系统后生效。如果有必要,比如使用旧内核,我们可以手动修改/boot/grub/grub.conf文件中系统默认使用的内核,修改default=1,表示GRUB使用第二个内核启动系统
在重新启动系统的GRUB的引导界面,快速按下任意键,确认新内核默认被使用
查看新内核,确认是否正确安装
[root@HMing-Server34src]#uname-sr Linux2.6.32-696.el6.x86_64
二、通过ELRepo存储库安装/升级最新的稳定内核版本
安装步骤
1、在CentOS上启用ELRepo存储库
导入公钥
#rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org
在CentOS6上安装ELRepo 6存储库:
#rpm-Uvhhttp://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
或CentOS7上安装ELRepo 7存储库:
#rpm-Uvhhttp://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
安装了ELRepo存储库,我们可以通过查找特定的存储库中查找可用的软件包,这里我们查看"elrepo-kernel" 内核软件包的版本信息
#yum--disablerepo"*"--enablerepo"elrepo-kernel"listavailable
2、指定ELRepo存储库安装最新的稳定内核
#yum--enablerepo=elrepo-kernelinstallkernel-ml
安装完成之后,我们即可以在/boot/grub/grub.conf 文件看到存在新安装的内核条目,并修改default=0,指定系统默认启动的内核选项,为4.10.12内核版本,重新启动系统即可生效
查看重新引导的GRUB内核启动项界面,确认是否正确使用了指定的新内核
同样的,对于在RHEL上安装/升级内核使用上面的两种方法也适用
结语
在本文中,介绍了内核的几种版本,以及安装/升级新内核版本的两种方法,也是在生产环境中推荐的安装/升级方法。当这两种方法都不满足要求时,我们也可以从https://www.kernel.org/下载内核源码包进行编译安装。