Linux kernel 内核升级与降级实战

简介: Linux kernel 内核升级与降级实战

安装 / 升级的方法和建议


 1.对于 CentOS/RHEL 系统,尽量使用 yum 方式或 RPM 包安装 / 升级内核,需要注意的是红帽的 Red Hat Linux 服务需要订阅。


 2.使用安装新内核而不是直接升级内核,安装新内核不会覆盖旧内核,而升级会导致新内核直接替换旧内核,可能会导致系统无法启动,安装也可以让我们在升级后有回滚的选择。


 3.一般地,对于大多数 Linux 分发版,使用 yum/dnf 和分发版布官方的存储库来升级内核,这种方式只能升级到该分发版的存储库提供的最新版本,而不是 Linux 内核组织发布的最新内核。


 4.如果想迅速并且安全地使用最新内核,对于 CentOS/RHEL 系统并不支持 yum 的方式直接安装或升级。那么此时我们可以使用 ELRepo(第三方存储库) 进行内核安装升级。


 5.下载新内核的源码包进行编译安装,这种方式有助于我们更细致地学习内核底层知识,但在生产环境中不推荐编译安装。


 6.尽量使用最新的 Linux 发行版,新的 Liunx 发行版包含该发行版维护的新内核,如果有必要,那么请使用如 yum upgrade 或者 yum update 来更新你的系统。对于 Ubuntu、Debian 等发行版,使用 apt-get update 方式来更新。


安装 / 升级新内核的目的


  • 许多出于对安全的考虑,如避免以前版本中发现的漏洞

  • 更充分地认识内核,了解内核的各个内核模块和功能

  • 更好的利用 / 体验新内核的的新功能和特性

 Linux 内核版本分为主线、稳定和长期版本。所有内核版本都可以在内核开发官方网站

https://www.kernel.org 上获取。


 各版本官方内核下载


 163镜像站内核下载


在 CentOS 上安装 / 升级内核


Linux 内核升级通常有两种方式:


  • 1.下载新版内核到服务器上,进行编译安装,之后删除老内核, 优点:可完全控制编译项。缺点:慢,且容易失败;

  • 2.采用 yum 方式安装, 优点是:快捷方便,成功率高。
[root@localhost ~]# cat /etc/redhat-release   //查看系统版本
CentOS release 6.8 (Final)
[root@localhost ~]# cat /proc/version     
Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016
[root@localhost ~]# uname -r     //查看内核版本
2.6.32-642.el6.x86_64
[root@localhost ~]# yum list kernel --showduplicates    //查看yum可升级的内核版本
...
已安装的软件包
kernel.x86_64                           2.6.32-642.el6                                 @anaconda-CentOS-201605220104.x86_64/6.8
可安装的软件包
kernel.x86_64                           2.6.32-754.el6                                 base
kernel.x86_64                           2.6.32-754.2.1.el6                             updates
kernel.x86_64                           2.6.32-754.3.5.el6                             updates
kernel.x86_64                           2.6.32-754.6.3.el6                             updates
kernel.x86_64                           2.6.32-754.9.1.el6                             updates
kernel.x86_64                           2.6.32-754.10.1.el6                            updates
kernel.x86_64                           2.6.32-754.11.1.el6                            updates
kernel.x86_64                           2.6.32-754.12.1.el6                            updates
kernel.x86_64                           2.6.32-754.14.2.el6                            updates
kernel.x86_64                           2.6.32-754.15.3.el6                            updates
kernel.x86_64                           2.6.32-754.17.1.el6                            updates
kernel.x86_64                           2.6.32-754.18.2.el6                            updates
kernel.x86_64                           2.6.32-754.22.1.el6                            updates
kernel.x86_64                           2.6.32-754.23.1.el6                            updates
kernel.x86_64                           2.6.32-754.24.2.el6                            updates
kernel.x86_64                           2.6.32-754.24.3.el6                            updates
kernel.x86_64                           2.6.32-754.25.1.el6                            updates
kernel.x86_64                           2.6.32-754.27.1.el6                            updates
kernel.x86_64                           2.6.32-754.28.1.el6                            updates
kernel.x86_64                           2.6.32-754.29.1.el6                            updates
kernel.x86_64                           2.6.32-754.29.2.el6                            updates
[root@localhost ~]# yum update kernel-2.6.32-754.el6.x86_64    //直接执行update升级内核
...
===============================================================================================================================
 软件包                           架构                    版本                                  仓库                      大小
===============================================================================================================================
正在安装:
 kernel                           x86_64                  2.6.32-754.el6                        base                      32 M
为依赖而更新:
 kernel-firmware                  noarch                  2.6.32-754.29.2.el6                   updates                   29 M
... 
已安装:
  kernel.x86_64 0:2.6.32-754.el6
作为依赖被升级:
  kernel-firmware.noarch 0:2.6.32-754.29.2.el6
完毕!
[root@localhost ~]# reboot      //重启系统
[root@localhost ~]# cat /proc/version
Linux version 2.6.32-754.el6.x86_64 (mockbuild@x86-01.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Tue Jun 19 21:26:04 UTC 2018
[root@localhost ~]# uname -r
2.6.32-754.el6.x86_64

在 CentOS 上降级内核

[root@localhost ~]# ls *.rpm    //内核版本2.6.32-358rpm包
kernel-2.6.32-358.el6.x86_64.rpm  kernel-firmware-2.6.32-358.el6.noarch.rpm
[root@vos vos3000]# uname -r     //查看降级之前的系统内核版本
2.6.32-642.el6.x86_64
[root@localhost ~]# yum -y remove kernel kernel-firmware
...
删除:
  kernel-firmware.noarch 0:2.6.32-642.el6
完毕!
[root@vos vos3000]# yum -y install kernel-2.6.32-358.el6.x86_64.rpm kernel-firmware-2.6.32-358.el6.noarch.rpm
...
已安装:
  kernel.x86_64 0:2.6.32-358.el6                            kernel-firmware.noarch 0:2.6.32-358.el6
完毕!       
[root@localhost ~]# reboot     //重启系统
[root@vos ~]# uname -r      //查看降级后内核版本
2.6.32-358.el6.x86_64
[root@vos ~]# cat /proc/version
Linux version 2.6.32-358.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Fri Feb 22 00:31:26 UTC 2013

禁止内核更新:

[root@spgpu ~]# vim /etc/yum.conf
在[main]部分加上:
exclude=kernel* centos-release

这样,在yum update的时候就不会更新内核了。


相关文章
|
8月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
2033 77
|
8月前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
598 23
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
575 2
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
消息中间件 运维 监控
Linux命令lsipc:深入解析与实战应用
`lsipc` (通常指 `ipcs`) 是Linux命令,用于查看系统中的IPC资源,包括消息队列、信号量和共享内存。它显示详细信息,支持过滤,并且需要相应权限。示例用法:显示共享内存(`-m`)、查询消息队列(`-q -i ID`)、查看关联进程(`-m -p`)。注意权限、操作影响及定期监控。结合`ipcrm`等工具可进行更深入管理。
|
消息中间件 存储 监控
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
1297 113
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
|
存储 缓存 编译器
Linux kernel memory barriers 【ChatGPT】
Linux kernel memory barriers 【ChatGPT】
171 11
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
782 4