Centos7 升级内核版本

linux内核官方网站:https://www.kernel.org/

今天做docker 实验时,发现docker网桥无法正常使用,排查了1个小时,宿主机网络都正常,由于系统内核为3.1 但是docker 版本为最新版,百度后说是内核版本过低。所有升级了下内核,发现docker0 正常了,顺便整理下内核版本资料。

Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息。

Linux内核(Linux kernel)简介

内核是操作系统的核心 ,其主要功能有:

响应中断,执行中断服务程序管理多个进程,调度和分享处理器的时间管理进程地址空间的内存管理网络和进程间通信等系统服务程序

内核的活动范围:

运行于用户空间,执行用户进程运行于内核空间,处于进程上下文,代表某个特定进程的执行运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断

Linux内核版本号

第一种方式:
Linux 的版本号分为两部分,即内核版本与发行版本。内核版本号由3个数字组成:A.B.C。各数字含义如下:

A:内核主版本号。这是很少发生变化,只有当发生重大变化的代码和内核发生才会发生。在历史上曾改变两次的内核:1994年的1.0及1996年的2.0。B:内核次版本号。是指一些重大修改的内核。偶数表示稳定版本;奇数表示开发中版本。C:内核修订版本号。是指轻微修订的内核。这个数字当有安全补丁,bug修复,新的功能或驱动程序,内核便会有变化。

第二种方式:
major.minor.patch-build.desc

major : 主版本号,有结构变化才变更minor : 次版本号,新增功能时才发生变化,一般技术表示测试版,偶数表示生产版patch : 补丁包数或次版本的修改次数build : 编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。desc  : 当前版本的特殊信息,其信息由编译时指定,具有较大的随意性,有如下的标识是常用的:    rc(或r),表示发行候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。    smp,表示对称多处理器(Symmetric MultiProcessing)。    pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。    EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。    mm,表示专门用来测试新的技术或新功能的版本。    fc,在Red Hat Linux中表示Fedora Core。

例如:
用命令uname -a查看内核版本号

1、在CentOS下如:

Linux localhost 2.6.32-642.15.1.el6.x86_64 #1 SMP Fri Feb 24 14:31:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

说明如下:

第一个组数字:2, 主版本号第二个组数字:6, 次版本号,当前为稳定版本第三个组数字:32, 修订版本号第四个组数字:642.15.1,表示发型版本的补丁版本el6:则表示我正在使用的内核是 RedHat / CentOS 系列发行版专用内核x86_64:采用的是64位的CPU

2、在Ubuntu下如:

Linux localhost 3.2.0-67-generic #101-Ubuntu SMP Tue Jul 15 17:46:11 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux#有的是3.2.0-67-generic-pae

说明如下:

第一个组数字:3, 主版本号第二个组数字:2, 次版本号,当前为稳定版本第三个组数字:0, 修订版本号第四个组数字:67,当前内核版本(3.2.0)的第67次微调patchgeneric:当前内核版本为通用版本,另有表示不同含义的server(针对服务器)、i386(针对老式英特尔处理器)pae(Physical Address Extension):物理地址扩展,为了弥补32位地址在PC服务器应用上的不足而推出,表示此32位系统可以支持超过4G的内存x86_64:采用的是64位的CPUSMP:对称多处理机,表示内核支持多核、多处理器Tue Jul 15 17:46:11 UTC 2014:内核的编译时间(build date)为 2014/07/15 17:46:11

查看Linux系统版本的命令

1、lsb_release -a(适用于所有的Linux发行版本)

LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。
说明:

-v 显示版本信息。-i 显示发行版的id。-d 显示该发行版的描述信息。-r 显示当前系统是发行版的具体版本号。-c 发行版代号。-a 显示上面的所有信息。-h 显示帮助信息。-s 输出简短的描述信息(仅限于redhat和fedora系统) 。

有些系统中默认并没有安装lsb_release,需要进行安装,以CentOS为例:
首先查找lsb_release安装包:

[root@bogon ~]# yum provides lsb_releaseLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.cn99.com * elrepo: mirrors.tuna.tsinghua.edu.cn * extras: centos.ustc.edu.cn * updates: mirrors.cn99.comredhat-lsb-core-4.1-27.el7.centos.1.x86_64 : LSB Core module supportRepo        : baseMatched from:Filename    : /usr/bin/lsb_release

安装:

[root@bogon ~]# yum install -y redhat-lsb-core

2、cat /etc/redhat-release(适用于Redhat系的Linux)

[root@bogon ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)

3、cat /etc/issue(适用于所有的Linux发行版本)

root@localhost:~# cat /etc/issueUbuntu 14.04.5 LTS \n \l

内核版本分类

名词解释:

1、mainline     主线版本

2、stabel         稳定版,提供内核bug修复和安全升级;结尾带EOL字样表示此版内核不在支持安全和修复

3、longterm     长期支持版,不再支持的版本结尾会标记EOL字样

4、linux-next    代码周期提交结束之前生成的快照 用于给linux代码贡献者测试作使用

升级内核方法

$ uname -r3.10.0-514.el7.x86_64$ uname -aLinux k8s-master 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
$ yum -y update

启用 ELRepo 仓库

ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。
ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。

#导入ELRepo仓库的公共密钥

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org#安装ELRepo仓库的yum源rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.
noarch.rpm

3、查看可用的系统内核包

可以看到4.4和4.18两个版本

yum --disablerepo="*" --enablerepo="elrepo-kernel" list availableLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * elrepo-kernel: mirrors.tuna.tsinghua.edu.cnelrepo-kernel                                                                                                                                                                 | 2.9 kB  00:00:00     elrepo-kernel/primary_db                                                                                                                                                      | 1.8 MB  00:00:03     Available Packageskernel-lt.x86_64                                                                                  4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-devel.x86_64                                                                            4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-doc.noarch                                                                              4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-headers.x86_64                                                                          4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-tools.x86_64                                                                            4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-tools-libs.x86_64                                                                       4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-lt-tools-libs-devel.x86_64                                                                 4.4.155-1.el7.elrepo                                                                  elrepo-kernelkernel-ml.x86_64                                                                                  4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-devel.x86_64                                                                            4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-doc.noarch                                                                              4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-headers.x86_64                                                                          4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-tools.x86_64                                                                            4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-tools-libs.x86_64                                                                       4.18.7-1.el7.elrepo                                                                   elrepo-kernelkernel-ml-tools-libs-devel.x86_64                                                                 4.18.7-1.el7.elrepo                                                                   elrepo-kernelperf.x86_64                                                                                       4.18.7-1.el7.elrepo                                                                   elrepo-kernelpython-perf.x86_64
                                                                  4.18.7-1.el7.elrepo                                                                   elrepo-

4、安装最新版本内核

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

5、设置 grub2

内核安装好后,需要设置为默认启动选项并重启后才会生效

查看系统上的所有可用内核:

$ sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg0 : CentOS Linux (4.18.7-1.el7.elrepo.x86_64) 7 (Core)1 : CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)3 : CentOS Linux (0-rescue-063ec330caa04d4baae54c6902c62e54) 7 (Core)

设置新的内核为grub2的默认版本

服务器上存在4 个内核,我们要使用 4.18 这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置

方法1、通过 grub2-set-default 0 命令设置

其中 0 是上面查询出来的可用内核

grub2-set-default 0

方法2、编辑 /etc/default/grub 文件

设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:

$ vim /etc/default/grubGRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=0GRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rhgb quiet"GRUB_DISABLE_RECOVERY="true"

生成 grub 配置文件并重启

$ grub2-mkconfig -o /boot/grub2/grub.cfgGenerating grub configuration file ...Found linux image: /boot/vmlinuz-4.18.7-1.el7.elrepo.x86_64Found initrd image: /boot/initramfs-4.18.7-1.el7.elrepo.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-862.11.6.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-862.11.6.el7.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-063ec330caa04d4baae54c6902c62e54Found initrd image: /boot/initramfs-0-rescue-063ec330caa04d4baae54c6902c62e54.imgdone
$ reboot

6、验证

$ uname -r4.18.7-1.el7.elrepo.x86_64

7、删除旧内核(可选)

查看系统中全部的内核:

$ rpm -qa | grep kernelkernel-3.10.0-514.el7.x86_64kernel-ml-4.18.7-1.el7.elrepo.x86_64kernel-tools-libs-3.10.0-862.11.6.el7.x86_64kernel-tools-3.10.0-862.11.6.el7.x86_64kernel-3.10.0-862.11.6.el7.x86_64

方法1、yum remove 删除旧内核的 RPM 包

$ yum remove kernel-3.10.0-514.el7.x86_64 \kernel-tools-libs-3.10.0-862.11.6.el7.x86_64 \kernel-tools-3.10.0-862.11.6.el7.x86_64 \kernel-3.10.0-862.11.6.el7.x86_64

方法2、yum-utils 工具

如果安装的内核不多于 3 个,yum-utils 工具不会删除任何一个。只有在安装的内核大于 3 个时,才会自动删除旧内核。

安装yum-utils

$ yum install yum-utils

删除旧版本  

package-cleanup --oldkernels

参考资料

https://www.cnblogs.com/xzkzzz/p/9627658.html

https://www.ibm.com/developerworks/cn/linux/l-linux-kernel/

Linux内核(维基百科)

centos 安装低版本内核_Linux 升级内核相关推荐

  1. centos 安装低版本内核_Docker安装教程

    Docker的应用场景 Web 应用的自动化打包和发布.自动化测试和持续集成.发布.在服务型环境中部署和调整数据库或其他的后台应用.从头编译或者扩展现有的 OpenShift 或 Cloud Foun ...

  2. 低版本IntelliJ IDEA升级到IntelliJ IDEA 2021.3.3

    低版本IntelliJ IDEA升级到IntelliJ IDEA 2021.3.3 mac低版本IntelliJ IDEA升级到IntelliJ IDEA 2021.3.3 彻底卸载Idea 下载最新 ...

  3. macOS 10.14 mojave安装低版本iTunes 12.6.x

    下载iTunes 12.6版本:https://support.apple.com/zh-cn/HT208079 安装低版本iTunes 利用脚本编辑器运行脚本安装低版本iTunes: 关闭SIP系统 ...

  4. win10 安装低版本的 .net framework

    win10 安装低版本的 .net framework https://dotnet.microsoft.com/download/visual-studio-sdks 下载Developer Pac ...

  5. 高版本Ubuntu(如22.02)修改apt源,快速安装低版本gcc/g++

    Ubuntu不同版本默认apt install gcc安装的gcc和g++版本不同,如Ubuntu22.04默认安装gcc/g++为11版本,高版本Ubuntu无法直接通过apt install gc ...

  6. Mac中pycharm安装低版本tensorflow1.8的方法

    Mac中pycharm安装低版本tensorflow1.8的方法 出现过的一些问题 解决的办法 注意的问题: 出现过的一些问题 这里我先对我自己安装过程中出现的问题进行一个总结: 用python3.8 ...

  7. 如何安装低版本的 iTunes 在 macOS Mojave

    首先去下载 12.6.x 的 iTunes 版本, support.apple.com/zh-cn/HT208- 选择 红色 圈内的,就可以下载 12.6.5 的 iTunes 版本了 (不要问我为什 ...

  8. iphone安装低版本App的方法

    背景 苹果App只能通过 App Store 或其他同类资源平台上登陆 Apple ID 进行安装. PP助手已停服(历史版本功能已无法使用,当然其他各资源平台都不行了) 因为苹果安装包内置了Appl ...

  9. 魅族手机安装低版本的应用APK失败问题解决

    魅族手机,每次安装了一个高版本的APK之后,卸载后再安装低版本的APK时,就提示安装失败.用ADB调试时发现提示: Failure [INSTALL_FAILED_VERSION_DOWNGRADE] ...

最新文章

  1. 微软、商汤等专家纵论AI未来:三年内主要趋势及挑战是什么?
  2. 计算机管理器中没有停止共享,域客户端默认共享关闭讨论.
  3. 日志规范之了解slf4j
  4. CentOS SSH公钥登录问题
  5. 力扣Java解数独_LeetCode 力扣 37. 解数独
  6. 本机获取Intel AMT IP地址的例子
  7. 一个简单的iBatis入门例子
  8. Vue:net::ERR_CONNECTION_REFUSED
  9. WSSv3 Technical Articles_使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part...
  10. Excel导入SQL数据库出现的问题
  11. Ps 初学者教程,如何在图片中创造双色效果?
  12. 创建虚拟机与安装系统
  13. 常用公差配合表图_车间里常用的机械测量工具竟然这么多?涨知识
  14. scree 中的几个内置对象
  15. 数据库自增 ID 用完了会咋样?
  16. 旋转矩阵和角速度之间的关系
  17. 实用的建筑企业工程项目管理软件系统
  18. Dos界面telnet命令的基本使用
  19. RuntimeError: Output 0 of SelectBackward is a view and is being modified inplace.
  20. 企业SSH 密钥管理

热门文章

  1. 微前端在网易七鱼的实践
  2. 家校无忧接入云信,教师家长即时沟通
  3. 关闭或启动linux防火墙后,docker启动容器报错
  4. 使用 SSH 免密码登录连接远程服务器
  5. JavaScript 专题之如何判断两个对象相等
  6. 解决Weblogic 本机可以访问控制台,网络IP访问不了
  7. RHEL 5服务篇—使用Apache搭建Web服务(一)
  8. TCP/IP 7.2 OSPF 虚链路
  9. SQL SERVER 2005无法远程连接的问题
  10. ORACLE HANDBOOK系列之九:时间与时区(Time and Time Zone)