一、概述

在数据中心基础环境中,Linux系统使用很普遍,但是有时候会遇到应用程序需要运行在高版本的内核上或者有时候系统自身要求需要升级内核,我们要综合考虑升级内核的风险。

二、升级内核的方法

1、查看操作系统内核版本

[root@localhost ~]# uname -r
3.10.0-1062.4.1.el7.x86_64

2、安装ELRepo到CentOS,下载key,并进行安装

最好从官方网站获取最新版本(官网地址:http://elrepo.org/tiki/tiki-index.php)。

[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@localhost ~]# yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
已加载插件:fastestmirror, langpacks
elrepo-release-7.el7.elrepo.noarch.rpm | 8.5 kB 00:00:00
正在检查 /var/tmp/yum-root-LAFBfB/elrepo-release-7.el7.elrepo.noarch.rpm: elrepo-release-7.0-4.el7.elrepo.noarch
/var/tmp/yum-root-LAFBfB/elrepo-release-7.el7.elrepo.noarch.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 elrepo-release.noarch.0.7.0-4.el7.elrepo 将被 安装
--> 解决依赖关系完成
base/7/x86_64 | 3.6 kB 00:00:00
extras/7/x86_64 | 2.9 kB 00:00:00
extras/7/x86_64/primary_db | 165 kB 00:00:00
updates/7/x86_64 | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 7.6 MB 00:00:01 依赖关系解决 ===========================================================================================
Package 架构 版本 源 大小
===========================================================================================
正在安装:
elrepo-release noarch 7.0-4.el7.elrepo /elrepo-release-7.el7.elrepo.noarch 5.0 k 事务概要
===========================================================================================
安装 1 软件包 总计:5.0 k
安装大小:5.0 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : elrepo-release-7.0-4.el7.elrepo.noarch 1/1
验证中 : elrepo-release-7.0-4.el7.elrepo.noarch 1/1 已安装:
elrepo-release.noarch 0:7.0-4.el7.elrepo 完毕!

3、查看内核列表,可以看到各个现有版本。  

[root@localhost ~]#  yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* elrepo-kernel: hkg.mirror.rackspace.com
elrepo-kernel | 2.9 kB 00:00:00
elrepo-kernel/primary_db | 1.9 MB 00:00:01
可安装的软件包
kernel-lt.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.220-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
perf.x86_64 5.6.7-1.el7.elrepo elrepo-kernel
python-perf.x86_64

4、安装需要的kernel版本,这里安装kernel-kt

内核版本介绍:

1)、lt:longterm的缩写:长期维护版;
2)、ml:mainline的缩写:最新稳定版;

[root@localhost boot]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: hkg.mirror.rackspace.com
* elrepo-kernel: hkg.mirror.rackspace.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-ml.x86_64.0.5.6.7-1.el7.elrepo 将被 安装
---> 软件包 kernel-ml-devel.x86_64.0.5.6.7-1.el7.elrepo 将被 安装
--> 解决依赖关系完成 依赖关系解决 =============================================================================================================================================
Package 架构 版本 源 大小
=============================================================================================================================================
正在安装:
kernel-ml x86_64 5.6.7-1.el7.elrepo elrepo-kernel 49 M
kernel-ml-devel x86_64 5.6.7-1.el7.elrepo elrepo-kernel 13 M 事务概要
=============================================================================================================================================
安装 2 软件包 总计:62 M
安装大小:272 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64 1/2
正在安装 : kernel-ml-5.6.7-1.el7.elrepo.x86_64 2/2
验证中 : kernel-ml-5.6.7-1.el7.elrepo.x86_64 1/2
验证中 : kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64 2/2 已安装:
kernel-ml.x86_64 0:5.6.7-1.el7.elrepo kernel-ml-devel.x86_64 0:5.6.7-1.el7.elrepo 完毕!

5、查看系统上面可以使用的内核

[root@localhost boot]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.6.7-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-3d09bf01bc1d401eac8c018ab645a715) 7 (Core)

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

1)修改启动顺序默认值

方法一:命令直接设置

[root@localhost ~]# grub2-set-default 0  

方法二:修改/etc/default/grub 文件

..........................................
设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:
[root@node01 ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
...........................................

2)生产grub 配置文件  

[root@localhost boot]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.6.7-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.6.7-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1062.4.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.4.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found linux image: /boot/vmlinuz-0-rescue-3d09bf01bc1d401eac8c018ab645a715
Found initrd image: /boot/initramfs-0-rescue-3d09bf01bc1d401eac8c018ab645a715.img
done

7、重新启动

[root@localhost boot]# reboot
[root@localhost ~]# uname -r
5.6.7-1.el7.elrepo.x86_64

8、删除旧内核版本  

[root@localhost ~]# rpm -qa | grep kernel
abrt-addon-kerneloops-2.1.11-55.el7.centos.x86_64
kernel-3.10.0-1062.4.1.el7.x86_64
kernel-ml-5.6.7-1.el7.elrepo.x86_64
kernel-debug-devel-3.10.0-1062.4.1.el7.x86_64
kernel-3.10.0-862.el7.x86_64
kernel-tools-libs-3.10.0-1062.4.1.el7.x86_64
kernel-tools-3.10.0-1062.4.1.el7.x86_64
kernel-headers-3.10.0-1062.4.1.el7.x86_64
kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64

1)方法一:使用yum remove 删除旧版本RPM包

[root@localhost ~]# yum remove kernel-3.10.0-1062.4.1.el7.x86_64 kernel-3.10.0-862.el7.x86_64 kernel-tools-3.10.0-1062.4.1.el7.x86_64 kernel-headers-3.10.0-1062.4.1.el7.x86_64
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel.x86_64.0.3.10.0-862.el7 将被 删除

2)方法二: yum-utils 工具

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

[root@localhost ~]# yum install yum-utils     //安装工具
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* elrepo: hkg.mirror.rackspace.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包 yum-utils-1.1.31-52.el7.noarch 已安装并且是最新版本
无须任何处理
[root@localhost ~]# package-cleanup --oldkernels //删除旧版本
已加载插件:fastestmirror, langpacks
No old kernels to remove

-----------------------------------------------------------书山有路勤为径,学海无涯苦作舟-------------------------------------------------------------  

Linux CentOS7.x 升级内核的方法的更多相关文章

  1. yum-cron更新 CentOS yum update 不升级内核版本方法

    http://www.360doc.com/content/15/0608/17/15798950_476597844.shtml 相关yum-cron说明有一些 CentOS yum update ...

  2. Linux/CentOS配置:使用yum update更新时不升级内核的方法

    RedHat/CentOS/Fedora使用 yum update 更新时,默认会升级内核.但有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦.所以 ...

  3. CentOS升级内核的方法

    升级前的内核版本为:2.6.32-431.el6.x86_64 升级后的内核版本为:3.10.101-1.el6.elrepo.x86_64 升级方法: 1.导入key rpm --import ht ...

  4. Ubantu 16.04升级内核版本和还原到升级之前的内核版本的方法

    一.查看系统信息 1.查看发布版本: 命令: lsb_release -a 运行结果: / 2.查看内核版本: 命令: uname -sr 运行结果: 二.升级内核的方法 1.内核下载地址:http: ...

  5. 在centos 7下升级内核

      前言 今天读了一篇老外的文章,讲的是如何在linux环境下升级内核.比较暴力,比较简单,故做个记录.   文章中,作者先列出一个常识:linux是内核名,不是系统名.我们平时说的"lin ...

  6. linux 实现centos7在线升级最新版本内核

    Kernel  (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...

  7. Linux升级内核教程(CentOS7)

    1.查看当前内核版本 uname -r 2.通过yum升级内核 通过yum升级内核是最保险的升级方式,因为安装的是操作系统发行厂商验证过兼容性的rpm包,升级风险一般很小. yum install - ...

  8. 使用yum更新时不升级Linux内核的方法

    RedHat/CentOS/Fedora使用 yum update 更新时,默认会 升级内核 .但有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦. ...

  9. centos7无故重启-内核升级

    最近有一台物理服务器,centos7操作系统,无故重启,每天都会发生这种情况: 解决: 升级内核 CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本,使用ELRepo升 ...

随机推荐

  1. Flask+pin

    Flask+SSTI的新火花 记一次buu刷题记和回顾祥云杯被虐出屎的经历.题目:[GYCTF2020]FlaskApp 一 题目初见 朴实无华的页面,一个base64的小程序页面 看到有提示. 我就 ...

  2. uni-app开发经验分享十九: uni-app对接微信小程序直播

    uni-app对接微信小程序直播 1.登录微信小程序后台-点击>设置->第三方设置->添加直播插件 2.添加直播组件后->点击<详情>      记录这两个参数直播 ...

  3. 转 15 jmeter分布式性能测试

    15 jmeter分布式性能测试   背景由于jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起Java内存溢出的错误.要解决这个问题, ...

  4. 【IDEA】Lombok--是否值得我们去使用

    官网 https://projectlombok.org/ 简介 Project Lombok is a java library that automatically plugs into your ...

  5. python工业互联网应用实战3—Django Admin列表

    Django Admin笔者使用下来可以说是Django框架的开发利器,业务model构建完成后,我们就能快速的构建一个增删查改的后台管理框架.对于大量的企业管理业务开发来说,可以快速的构建一个可发布 ...

  6. c 越界 数组越界

    int main(int argc, char* argv[]){ int i = 0; int arr[3] = {0}; for(; i<=3; i++){ arr[i] = 0; prin ...

  7. trust an HTTPS connection 安全协议 随机数 运输层安全协议 应用层安全协议 安全证书

    小结: 1.HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间) HTTPS(全称:Hyper Text Transfer Protocol over Secure ...

  8. session和cookie自动登录机制

    cookie的存储 cookie是浏览器支持的一种本地存储方式.以dict,键值对方式存储. {"sessionkey": "123"} 浏览器会自动对于它进行 ...

  9. C++ Primer Plus读书笔记(三)复合类型

    这节主要是介绍数组.结构体.类等概念,以及new delete内存管理. 1.数组 首先普及一下C++中字符串的概念,只有在结尾有 \0 的才叫字符串, cout 输出字符串也以空字符为标记进行结束输 ...

  10. 代理模式详解:静态代理+JDK/CGLIB 动态代理实战

    1. 代理模式 代理模式是一种比较好的理解的设计模式.简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标 ...