系统内核升级回滚

2023-11-19

查看当前版本

[root@test-app-45-92 ~]# uname -r
3.10.0-1160.15.2.el7.x86_64  #环境的不同,可能查下的内核会有所不同

操作步骤
本案例主要以4.4.234-1.el7.elrepo.x86_64为例,如果升级其它版本,请下载对应的操作系统内核包

操作系统内核包需要通过xftp等工具上传到部署机。

3545af80a5dcfd9029ad051e35a31f08  kernel-lt-4.4.234-1.el7.elrepo.x86_64.rpm
c758965229d03c367148c8932486ed29  kernel-lt-devel-4.4.234-1.el7.elrepo.x86_64.rpm
安装新内核
[root@test-app-45-92 tmp]# rpm -ivh kernel-lt-4.4.234-1.el7.elrepo.x86_64.rpm kernel-lt-devel-4.4.234-1.el7.elrepo.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:kernel-lt-devel-4.4.234-1.el7.elr################################# [ 50%]
   2:kernel-lt-4.4.234-1.el7.elrepo   ################################# [100%]
6.3、查看系统已经安装的内核版本
[root@test-app-45-92 tmp]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.4.234-1.el7.elrepo.x86_64) 7 (Core)                                #有此信息表示新内核安装成功
1 : CentOS Linux (3.10.0-1160.15.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-d09ed4d648cf48d59efdaaf47927193d) 7 (Core)

设置新的内核为grub2的默认版本
服务器上存在4 个内核,我们要使用 4.4.234 这个版本,编辑 /etc/default/grub 文件来设置

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

root@test-app-45-92 tmp]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
#GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

生成 grub 配置文件并重启

[root@test-app-45-92 tmp]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.234-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.4.234-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.15.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.15.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1062.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d09ed4d648cf48d59efdaaf47927193d
Found initrd image: /boot/initramfs-0-rescue-d09ed4d648cf48d59efdaaf47927193d.img
done

重启操作系统

reboot

查看操作系统内核版本

[root@test-app-45-92 tmp]# uname -r
4.4.234-1.el7.elrepo.x86_64                            #内核升级成功

回滚

卸载内核版本
[root@test-app-45-92 tmp]# yum remove kernel-lt-4.4.234-1.el7.elrepo.x86_64 kernel-lt-devel-4.4.234-1.el7.elrepo.x86_64
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package kernel-lt.x86_64 0:4.4.234-1.el7.elrepo will be erased
---> Package kernel-lt-devel.x86_64 0:4.4.234-1.el7.elrepo will be erased
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================================================
 Package                                         Arch                                   Version                                               Repository                                 Size
==============================================================================================================================================================================================
Removing:
 kernel-lt                                       x86_64                                 4.4.234-1.el7.elrepo                                  installed                                 182 M
 kernel-lt-devel                                 x86_64                                 4.4.234-1.el7.elrepo                                  installed                                  38 M
Transaction Summary
==============================================================================================================================================================================================
Remove  2 Packages
Installed size: 220 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Erasing    : kernel-lt-4.4.234-1.el7.elrepo.x86_64                                                                                                                                      1/2 
  Erasing    : kernel-lt-devel-4.4.234-1.el7.elrepo.x86_64                                                                                                                                2/2 
  Verifying  : kernel-lt-devel-4.4.234-1.el7.elrepo.x86_64                                                                                                                                1/2 
  Verifying  : kernel-lt-4.4.234-1.el7.elrepo.x86_64                                                                                                                                      2/2 
Removed:
  kernel-lt.x86_64 0:4.4.234-1.el7.elrepo                                                    kernel-lt-devel.x86_64 0:4.4.234-1.el7.elrepo                                                   
Complete!

查看系统已经安装的内核版本

[root@test-app-45-92 tmp]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (3.10.0-1160.15.2.el7.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-d09ed4d648cf48d59efdaaf47927193d) 7 (Core)

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

[root@test-app-45-92 tmp]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
#GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

生成 grub 配置文件并重启

[root@test-app-45-92 tmp]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.234-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.4.234-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.15.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.15.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-55d8d02ba82f4ef99c81d0fa54e90604
Found initrd image: /boot/initramfs-0-rescue-55d8d02ba82f4ef99c81d0fa54e90604.img
done

重启操作系统

reboot

查看操作系统内核版本

[root@test-app-45-92 tmp]# uname -r
3.10.0-1160.15.2.el7.x86_64                            #内核回滚成功
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统内核升级回滚 的相关文章

  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 如何替换“docker run”命令中的变量值

    我正在使用 bash 脚本并尝试分配指纹值 如下所示 export FINGERPRINT D0 19 C5 80 42 66 56 AC 6F docker run rm i v var run docker sock var run d
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b
  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • Bash 脚本大小限制?

    我有一个 bash 脚本 在 RHEL 或 OS X 上运行时出现以下错误 第 62484 行 意外标记 换行符 附近出现语法错误 第 62484 行 o gz 这是一个自动生成的脚本 用于解决我公司使用的 Grid Engine 计算集群
  • 在 Fish Shell 中设置导出

    我安装了多个版本的 PHP 对于我的正常开发 我总是使用通过自制程序安装的 PHP 5 5 x 在鱼壳里 which php php version gt usr local bin php gt PHP 5 5 8 cli built J
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • bash 变量中的 Linux 鞭尾/对话框参数错误

    有人可以解释为什么下面的代码不起作用吗 我要疯狂地想找出答案 bin bash TEST M1 1 wire Interface ON echo TEST RESULT dialog title Config Modules State c
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte

随机推荐