记一次centos 7内核升级事故
情景
公司做等保3测评,在进行系统漏洞检测时发现内核存在漏洞,需要进行升级。
名称 | 版本 |
---|---|
升级前内核 | CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) |
升级后内核 | CentOS Linux (3.10.0-957.1.3.el7.x86_64) 7 (Core) |
正确操作过程
升级方法
升级方法很简单,找到对应版本的内核rpm包,然后直接使用yum或rpm进行安装即可,该过程中可能需要处理一些包之间的依赖问题。
$ yum install -y kernel-3.10.0-957.1.3.el7.x86_64.rpm kernel-headers-3.10.0-957.el7.x86_64.rpm kernel-tools-3.10.0-957.1.3.el7.x86_64.rpm kernel-tools-libs-3.10.0-957.1.3.el7.x86_64.rpm
生效新版本内核
安装完新版本内核之后一定要进行如下处理,不然就会和我一样在重启服务器的时候踩坑。
接下来操作的目的就是通过grub更改服务器启动时加载内核的版本!
-
查看当前安装的系统内核
$ rpm -qa kernel* kernel-3.10.0-957.1.3.el7.x86_64 kernel-headers-3.10.0-957.el7.x86_64 kernel-tools-3.10.0-957.1.3.el7.x86_64 kernel-tools-libs-3.10.0-957.1.3.el7.x86_64
-
查看当前系统默认启动的内核版本,结果可能有如下两种:
$ grub2-editenv list # 结果1:无相关信息 saved_entry=0 # 结果2:当前运行的系统版本 saved_entry=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
-
切换系统启动时默认内核版本:
$ grub2-set-default 'CentOS Linux (3.10.0-957.1.3.el7.x86_64) 7 (Core)'
-
然后可以顺利重启服务器了,重启后查看系统信息:
$ uname -a 或 $ cat /proc/version Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 29 14:49:43 UTC 2018
至此内核升级完成。
意外
既然有正确操作过程,有时候往往就会一不小心犯点错误。因为是第一次做内核升级,我就顺利的踩坑了。精彩过程请往下看:
重启
新版内核安装完成后需要服务器重启才生效。第一次操作,就当一个普通rpm包升级来处理的,安装完成后果断执行 init 6
重启服务器,结果悲催了,如下图:
卡在这里不动了,看提示信息也没报错,直接回车,结果下面的场景出现了:
找不到对应版本的内核!!!
WTF!!!
解决问题
认真分析一下,提示信息是说找不到”3.10.0-327.el7.x86_64“版本的内核,那既然如此,百度(google)吧!关键词”centos 7 内核升级重启找不到内核“ ,找到一下几篇文章:
- 内核重装: http://blog.51cto.com/zhaoqifly/1841868 (不推荐该方法)
- 修改内核启动顺序及删除无用内核: https://www.cnblogs.com/anliven/p/7944842.html (思路来源)
- centos7 如何修改内核启动顺序: https://www.cnblogs.com/cnsong/p/7058000.html (正确操作过程参考文档)
看过第一篇和第二篇文档后大概了解了修复的原理,即修改内核启动顺序,第一篇中的重装原系统内核对于本次内核升级来说意义不大,第二篇倒是提醒我一个核心——linux系统一切皆文件!
既然可以在服务器宕机前通过grub命令行更改内核启动顺序,那么宕机后肯定可以通过救援模式进入grub修改或者其他办法。
问题复现
因为是第一次遇到这种问题,整好手头有虚拟机,于是就抱着试试看的心理复现了该错误场景,重启虚拟机来到内核选择界面:
提示:"e" 编辑当前所选项目!反正是虚拟机,随便搞就是了,果断进入编辑状态:
刚好有内核信息出现,内心窃喜,不如就试试在这里更改一下系统版本信息,再继续往下看:
一口气全改了就是了,大不了重装系统了(前提当前服务器没部署特别重要的服务,不然的话还是要严谨些)。将上图中红框内的信息都改成新版本 “3.10.0-957.1.3.el7.x86_64” ,然后Ctrl-x,进入系统加载界面,瞬间内心如释重负。
等待系统启动完成,赶紧登陆检查一下状态,一切正常!!!
实践出真知!!!(PS:没事不要瞎搞,搞之前一定要好好学习!!!)
发篇文档装B!!!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使用Git提高研发团队工作效率?
为什么使用Git 随着互联网时代的来临与发展,尤其分布式开发的大力引入,对于开发工程师来说,代码管理变成了头等难题。10多个人或者更多的成员的研发团队如何管理同一份代码,异地办公如何跟同事有效的维护同一份代码?下面直接介绍Git,就不对Git和其他的版本管理工具进行比较了。 Git属于分布式的版本控制系统,它具有以下特点: Git中每个克隆(clone)的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。 Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。 提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功。 甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支。 Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示您手工完成。 冲突解决:在需要的时候才进行合并和冲突解决。 Git版本库统一放在服务器中 可以为 Git 版本库进行授权:谁能创建版本库,谁能向版本库P...
- 下一篇
Spring Cloud Alibaba迁移指南1:零代码从Eureka迁移到Nacos
本文探讨如何零代码将Eureka迁移到Nacos。 作者:得少,校对:周立。 Spring Cloud官方宣布Spring Cloud Netflix进入维护状态(详见Spring Cloud Netflix项目进入维护模式之我见 ),后续不再会有新的功能已成为事实。 作为开发者,如何使用极简的方式替换Netflix相关组件成为首要解决的问题。Spring Cloud Alibaba实现了Spring Cloud服务注册规范——这让开发者能够非常便利、无痛地将Eureka迁移到Nacos。 零代码使用 Nacos 替换 Eureka 如果你想使用 Spring Cloud Alibaba 的开源组件 spring-cloud-starter-alibaba-nacos-discovery替换 Eureka,只需完成以下几步! **安装 Nacos。**Nacos 的安装非常简单,本文不做赘述,可参考 Nacos 官网 ,也可参考本博客近期更新的Spring Cloud Alibaba系列博客 。 **添加 Nacos的依赖,同时去掉 Eureka依赖。**在需要替换的工程目录下找到po...
相关文章
文章评论
共有0条评论来说两句吧...