Centos 7 kernel升级到指定的版本

本文详细介绍了Linux服务器内核的升级方法。包括升级到最新kernel版本,通过导入elrepo的key、安装yum源等步骤;使用源码升级到指定版本,涉及解压源码包、配置、编译等操作;还介绍了通过源码编译rpm包安装的方式,最后都需修改启动顺序并重启查看升级结果。


一、升级到最新kernel版本
1、查看当前kernel版本
# uname -a
2、导入elrepo的key,然后安装elrepo的yum源
# rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3、使用以下命令列出可用的内核相关包,如下图:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
 
如图可以看出,长期维护版本lt为5.4,最新主线稳定版ml为5.16,我们需要安装最新的主线稳定内核,使用如下命令:
yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
4、查看内核版本默认启动顺序:
# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
 
如图,4.19版本内核目前位置为0,原来的3.10版本内核目前位置为1,所以需要修改内核启动顺序为0。
5、修改grub中默认版本启动顺序:
vim /etc/default/grub
 
如图,将GRUB_DEFAULT=saved改为GRUB_0=saved,保存退出vim。
6、运行grub2-mkconfig命令来重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
7、重启:reboot
8、待启动完毕,查看系统内核:uname -r
 
如图,内核版本已升级为5.16

 

 

 

 

二、使用源码升级到指定的版本
下载指定版本源码:链接
1、解压源码包到/usr/src/
# tar -xf linux-4.14.115.tar.xz -C /usr/src/
2、把/boot//boot/config-3.10.0-957.el7.x86_64复制到刚才解压的位置命名
为"config"加快速度,减少出错。
cp /boot//boot/config-3.10.0-957.el7.x86_64   /usr/src/linux-4.14.115/conifg
3、配置
# cd /usr/src/linux-4.14.115
# make menuconfig
 
展开File systems ---> DOS/FAT/NT Filesystems ---> NTFS file system support,设为[M]
展开Device Drivers ---> IEEE 1394 (FireWire) supports ---> FireWire driver stack,设为[ ]
编辑config,在最后添加以下配置
CONFIG_DEBUG_SECTION_MISMATCH=y //查看更详细输出
CONFIG_SYSFS_DEPRECATED_V2=y //启用新版sysfs路径
# make   //编译内核
# make modules //编译模块
# make modules_install //安装内核
# make  install 
4、启用新内核,修改默认引导项
[root@localhost lvim /etc/grub.conf 
调整配置文件中的default项,由1改为0,然后重启即可。
#uname -a

 

 

三、通过源码编译rpm包安装
下载指定版本源码:链接
1、解压源码包
tar -xf linux-4.14.115.tar.xz
2、编译rpm包
make rpm
会生成这三个包
kernel-4.14.115-1.x86_64.rpm kernel-devel-4.14.115-1.x86_64.rpm kernel-headers-4.14.115-1.x86_64.rpm
3、使用编译后的rpm包升级
# yum localinstall kernel-4.14.115-1.x86_64.rpm -y
# yum localinstall kernel-devel-4.14.115-1.x86_64.rpm -y
# yum localinstall kernel-headers-4.14.115-1.x86_64.rpm -y
4、修改grub中默认版本启动顺序:
vim /etc/default/grub
 
如图,将GRUB_DEFAULT=saved改为GRUB_0=saved,保存退出vim。
5、运行grub2-mkconfig命令来重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
6、重启:reboot
7、待启动完毕,查看系统内核:uname -r

 

 


 

<think>我们正在处理一个关于升级CentOS 7内核的问题。用户当前的内核版本是3.10,希望升级4.18。 注意:CentOS 7默认的内核版本是3.10,而4.18是一个较新的版本。我们可以通过安装ELRepo仓库中的内核包来实现。 步骤: 1. 备份重要数据(虽然升级内核通常不会影响用户数据,但以防万一) 2. 更新当前系统 3. 导入ELRepo仓库的密钥 4. 安装ELRepo仓库 5. 安装新版本内核4.18版本) 6. 设置新内核为默认启动项(可选,因为安装后grub2默认会使用最新内核7. 重启系统并验证 但是,需要注意的是,ELRepo仓库提供了两种内核版本: - kernel-lt(长期支持版本) - kernel-ml(主线稳定版本4.18版本可能已经不在kernel-lt或kernel-ml的最新版本中,因为4.18是一个相对较旧的版本(当前时间2023年,ELRepo的kernel-ml已经更新到6.x版本)。因此,我们需要查看ELRepo是否还提供4.18版本。 实际上,我们可以通过以下方式安装特定版本内核,但ELRepo仓库默认只提供最新版本。如果我们一定要4.18,可能需要手动下载安装,但这样可能会有依赖问题。因此,建议用户安装ELRepo提供的最新长期支持版或主线稳定版,而不是指定4.18。 但是,如果用户有特殊需求必须安装4.18,我们可以尝试从ELRepo的存档中安装,或者从源代码编译。不过,编译内核比较复杂,而且容易出问题,所以不推荐。 因此,我们首先尝试查看ELRepo是否还提供4.18版本。我们可以通过以下命令查看可用的内核版本: ``` yum --disablerepo="*" --enablerepo="elrepo-kernel" list available ``` 如果列表中有4.18版本,我们可以安装。如果没有,我们就需要采取其他方法。 考虑到用户可能只是需要一个比3.10新的内核,而不一定是4.18,我们可以建议安装最新的长期支持版(kernel-lt)或主线稳定版(kernel-ml)。 所以,我们先按照安装最新内核的方法来,然后如果用户坚持要4.18,我们再考虑其他方法。 步骤详解: 第一步:更新系统 ``` sudo yum update -y ``` 第二步:导入ELRepo仓库的GPG密钥 ``` sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ``` 第三步:安装ELRepo仓库 ``` sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm ``` 第四步:安装新内核 - 如果想安装长期支持版本kernel-lt): ``` sudo yum --enablerepo=elrepo-kernel install kernel-lt -y ``` - 或者安装主线稳定版本kernel-ml): ``` sudo yum --enablerepo=elrepo-kernel install kernel-ml -y ``` 第五步:检查安装的内核 ``` awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg ``` 第六步:设置默认启动内核(假设新内核在列表中的位置是0,即第一个) ``` sudo grub2-set-default 0 ``` 或者使用内核名称: ``` sudo grub2-set-default "CentOS Linux (4.18.0-xxx.el7.x86_64) 7 (Core)" ``` 第七步:重新生成grub配置文件 ``` sudo grub2-mkconfig -o /boot/grub2/grub.cfg ``` 第八步:重启 ``` sudo reboot ``` 重启后,检查内核版本: ``` uname -r ``` 但是,如果用户坚持要4.18版本,而ELRepo仓库中没有,我们可以尝试以下方法: 方法1:从源代码编译安装4.18内核 - 步骤复杂,需要安装编译依赖,下载内核源码,配置,编译,安装。这通常需要很长时间,并且容易出错。 方法2:寻找第三方RPM包(如果有的话) 鉴于以上情况,我们首先建议用户安装ELRepo提供的最新内核(ml或lt),如果用户确实需要4.18,我们可以提供编译内核的步骤,但需要用户自行承担风险。 因此,在回答中,我们先给出安装ELRepo最新内核的步骤,然后说明如果用户需要特定版本(如4.18)可能需要额外步骤,并询问用户是否确实需要4.18版本。 但是,根据问题描述,用户明确要求升级4.18。所以,我们需要先检查ELRepo是否提供4.18。 通过查询ELRepo的网站(https://elrepo.org/linux/kernel/el7/x86_64/RPMS/),我们可以发现,4.18版本内核已经不再提供。目前提供的是5.x和6.x版本。 因此,我们需要采用编译安装的方法。 编译安装内核的步骤: 1. 安装依赖包 ``` sudo yum groupinstall "Development Tools" -y sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel -y ``` 2. 下载内核源码(4.18版本) ``` cd /usr/src sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.tar.xz sudo tar -xvf linux-4.18.tar.xz cd linux-4.18 ``` 3. 配置内核 可以使用当前内核的配置作为基础: ``` sudo cp /boot/config-`uname -r` .config ``` 然后运行配置界面(可选): ``` sudo make menuconfig ``` 在配置界面中,可以加载当前配置,然后保存退出。 4. 编译内核 ``` sudo make -j$(nproc) ``` 5. 安装模块 ``` sudo make modules_install ``` 6. 安装内核 ``` sudo make install ``` 7. 更新grub ``` sudo grub2-mkconfig -o /boot/grub2/grub.cfg ``` 8. 重启并选择新内核 但是,编译内核过程复杂,且容易出错,特别是对于新手。因此,我们建议用户考虑使用ELRepo提供的最新内核(如5.4或6.x),除非有特殊原因必须使用4.18。 因此,在回答中,我们将先提供使用ELRepo安装最新内核的步骤,然后提供编译安装4.18的步骤,并说明风险。 根据以上分析,我们给出如下回答:</think>### 升级 CentOS 7 内核4.18 的步骤 #### 📦 方法一:通过 ELRepo 仓库安装(推荐) ```bash # 1. 更新当前系统 sudo yum update -y # 2. 导入 ELRepo 仓库密钥 sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # 3. 安装 ELRepo 仓库 sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # 4. 安装 kernel-lt(长期支持版)或 kernel-ml(主线版) sudo yum --enablerepo=elrepo-kernel install kernel-lt -y # 若需 4.18 需确认仓库版本可用性 # 5. 设置新内核为默认启动项 sudo grub2-set-default 0 # 0 表示新内核在 grub 列表中的位置 sudo grub2-mkconfig -o /boot/grub2/grub.cfg # 6. 重启并验证 sudo reboot uname -r # 重启后检查内核版本 ``` > ⚠️ **注意**: > ELRepo 的 `kernel-lt` 仓库可能不再提供 4.18 等旧版本(当前最新为 6.x)。若必须使用 **精确的 4.18 版本**,需手动编译安装(见方法二)。 --- #### 🔧 方法二:手动编译安装内核 4.18 ```bash # 1. 安装编译依赖 sudo yum groupinstall "Development Tools" -y sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel -y # 2. 下载内核源码 cd /usr/src sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.tar.xz sudo tar -xvf linux-4.18.tar.xz cd linux-4.18 # 3. 配置内核(使用当前配置基础) sudo cp /boot/config-$(uname -r) .config sudo make olddefconfig # 应用旧配置到新内核 # 4. 编译与安装 sudo make -j$(nproc) # 启用多核编译 sudo make modules_install sudo make install # 5. 更新引导配置 sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo reboot ``` #### 🔍 验证与注意事项 1. **启动项选择**: ```bash awk -F\' '/menuentry / {print $2}' /etc/grub2.cfg # 查看可用内核列表 ``` 2. **内核回退**: - 重启时在 GRUB 菜单中选择旧内核 - 删除新内核:`sudo yum remove kernel-4.18*` 3. **驱动兼容性**: 升级后需重新安装第三方内核模块(如 NVIDIA 驱动)[^1]。 --- ### 📚 相关问题 1. **升级内核后如何解决 NVIDIA 驱动不兼容的问题?** > 需重新编译 NVIDIA 内核模块: > ```bash > sudo dnf install akmod-nvidia # 或手动执行 NVIDIA 安装脚本 > ``` 2. **如何安全删除旧内核释放磁盘空间?** > ```bash > sudo package-cleanup --oldkernels --count=1 # 保留最新1个旧内核 > ``` 3. **为什么推荐通过 ELRepo 而非 CentOS 官方仓库升级内核?** > CentOS 官方仓库仅提供安全补丁更新,不提供大版本升级。ELRepo 专门维护新版测试内核[^1]。 [^1]: 若从旧安装升级,可能需要重建 NVIDIA 内核模块,参考 [ELRepo 文档](https://elrepo.org/tiki/tiki-index.php)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值