当前位置: 首页 > news >正文

centos 7系统升级内核(ELRepo仓库)、小版本升级、自编译内核

  1. 使用ELRepo仓库

ELRepo是一个第三方仓库,提供了最新的linux内核版本。

安装ELRepo密钥:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo仓库:

yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

安装最新的稳定内核:

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

或安装长期支持版本(LTS)内核:

yum -y --enablerepo=elrepo-kernel install kernel-lt

小版本升级:

如果只是想进行小版本的内核升级,可以使用默认的CentOS仓库进行:

yum -y update kernel

这将更新到CentOS官方提供的最新小版本内核。

自编译内核:

自编译内核是一个相对复杂的过程,这是最复杂的方法,但能够提供最大的灵活性以适应特定需求。适合需要高度定制内核的场景。你需要从kernel.org下载内核源码,然后进行配置、编译和安装。

准备工作

确保系统已更新:yum update

安装编译内核所需的依赖包:

yum install ncurses-devel elfutils-libelf-devel dwarves binutils-devel openssl-devel

下载内核源代码

访问Kernel.org下载你想要的内核版本。例如,下载Linux 5.x系列的最新源码包:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.x.x.tar.xz

 解压缩源代码

tar -xvf linux-5.x.x.tar.xz
cd linux-5.x.x

 配置内核

你可以使用默认配置作为起点,然后根据需要修改:

cp /boot/config-$(uname -r) .config

编译内核

这个过程可能需要一段时间,具体取决于你的系统性能。

make -j $(nproc)

这里的-j $(nproc)表示使用所有处理器核心来加速编译过程。

安装编译后的内核和模块

make modules_install
make install

更新引导加载器配置

对于GRUB,通常需要运行以下命令来更新其配置:

grub2-mkconfig -o /boot/grub2/grub.cfg

验证新内核

检查/boot目录下是否有新生成的vmlinuz-*和initramfs-*文件,确认新内核已经安装。

重启系统并选择新内核

reboot

在GRUB启动菜单中,你应该能看到新编译的内核作为选项。选择它来启动。

验证内核版本

重启后,使用uname -r命令确认是否已成功切换到新内核。

uname -r

相关文章:

  • Element-plus点击当前行之后获取数据显示跟随行数据
  • Java将list数组中重复的对象进行去重
  • java反射和注解
  • 基于Spring Boot与Vue的智能房产匹配平台+文档
  • Log4j日志框架讲解(全面,详细)
  • 上帝之眼(BEVSee):多相机间无需标定,将各自目标统一到同一坐标系下(代码开源,提供数据集)
  • C++编程(五)单例模式 友元
  • 如何寻找一个领域的顶级会议,并且判断这个会议的影响力?
  • SpringBoot学习04-[定制SpringMVC]
  • 在Qt中,直接include <moc_xxxxx.cpp> 为什么不会出现符号冲突的错误?
  • UTONMOS:探索未来区块链与元宇宙的游戏奇妙融合
  • linux的常用系统维护命令
  • Linux的一些杂项函数总结
  • rabbitmq消息队列提出的问题(个人想法)
  • 有哪些好的 Stable Diffusion 提示词(Prompt)可以参考?
  • 2017 年终总结 —— 在路上
  • 5、React组件事件详解
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • export和import的用法总结
  • JavaScript的使用你知道几种?(上)
  • Java方法详解
  • Joomla 2.x, 3.x useful code cheatsheet
  • Laravel Telescope:优雅的应用调试工具
  • leetcode-27. Remove Element
  • MySQL主从复制读写分离及奇怪的问题
  • Python打包系统简单入门
  • SpringCloud集成分布式事务LCN (一)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 警报:线上事故之CountDownLatch的威力
  • 利用jquery编写加法运算验证码
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端临床手札——文件上传
  • 区块链共识机制优缺点对比都是什么
  • 让你的分享飞起来——极光推出社会化分享组件
  • 算法之不定期更新(一)(2018-04-12)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)linux 命令大全
  • (转)大型网站的系统架构
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net Core与存储过程(一)
  • .NET 材料检测系统崩溃分析
  • .net 验证控件和javaScript的冲突问题
  • /run/containerd/containerd.sock connect: connection refused