转载 Centos7 内核从3.10升级到4.12过程

本文详细介绍了从Linux内核3.0升级到4.12的过程,包括解决漏洞、下载内核包、编译配置、依赖安装、模块编译及内核启动顺序修改等关键步骤。

https://blog.youkuaiyun.com/youshijifen/article/details/73472434

 

近期,国家互联网应急中心漏洞(CNCERT)公告中提到Linux kernel4个拒绝服务漏洞,对应CNVD-2017-07509、CNVD-2017-07508、CNVD-2017-07507、CNVD-2017-07386)。综合利用上述漏洞,攻击者可使系统拒绝服务,且在符合一定利用条件下可能导致远程命令执行。设计到的内核版本从3.0到4.99,详细信息可以到国家互联网应急中心官网公告查看,随后官方给出了代码修复,用户重新编译内核到最新即可解决此次漏洞。

 

www.kernel.org内核官网下载4.12-RC5内核包

接下来我把自己虚拟机3.0内核升级到4.12

wgethttps://git.kernel.org/torvalds/t/linux-4.12-rc5.tar.gz --no-check-certificate

这里使用Xshell通过ssh连接虚拟机。官网是https协议传输,使用wget下载时容易报错,在最后加  --no-check-certificate 参数即可解决。

使用tar –xvf解压到本地

安装系统时选择的是最小安装法,导致还会有一些基本的工具没装,这里使用

yum grouplist去检测程序所有安装包情况

这里使用yum groupinstall Development tools安装开发工具,这是一个包含众多小工具例如:binutils、bison、flex、gcc、gcc-c++、gettext、libtool等等,以避免后面对内核进行编译时出现错误。这是已经安装后的。

 

 

yum install hmaccalc zlib-develbinutils-devel elfutils-libelf-devel

来安装其它依赖工具,我这是已经安装过后。如果提示要安装,安装即可。

 

开始准备编译内核

make mrproper 删除不必要的文件和目录。

把旧版本内核的配置文件复制并命名为.config,这样新编译内核就会使用原来的配置文件

make  bzImage  开始编译,一路回车

 

解决报错:

yum install openssl  

yum install openssl-devel

make   编译,需要较长时间

make modules文件编码模块,也需要等待较长一段时间

make modules_install  安装模块

make install

我们知道,centos 6.x是通过/etc/grub.conf就行内核启动顺序修改的,而且比较直观查看。但centos 7的系统和6就不一样了,是通过grub2为引导程序。下边简单说下centos 7的内核启动顺序如何修改。
1,首先查看当前系统有几个内核。比如:

cat /boot/grub2/grub.cfg |grep menuentry

2,设置默认的启动内核,选择CentOS Linux (4.12.0-rc5)7 (Core)这个内核为默认启动。

grub2-set-default "CentOS Linux (3.10.0-327.el7.x86_64)7 (Core)

验证是否修改成功:grub2-editenv list

3,重启机器观察。
重启成功以后查看下机器的内核是不是该内核:

在虚拟机启动的时候出现多个内核引导项,选第一个进入系统

进入系统后查看内核版本,成功升级成4.12

 

 

转载于:https://www.cnblogs.com/SDYiHeng/p/9655214.html

<think>首先,用户的问题是:“请问CentOS 7 内核升级 3.104.18 教程”。所以,我需要提供一个详细的教程,将CentOS 7内核3.10升级4.18。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。 参考提供的引用: - 引用[1]:显示当前内核版本。 - 引用[2]:详细步骤从源码升级内核4.18.3。 - 引用[3]:快速升级方法。 - 引用[4]:关于Docker存储驱动的说明,强调需要特定内核版本。 用户的需求是将内核3.10升级4.18。引用[2]提供了从源码升级4.18.3的步骤,这很接近。引用[3]提到快速升级,但使用的是Elrepo仓库,升级到5.4.202。用户指定了4.18,所以我应该基于引用[2]的步骤,但调整为4.18版本。 结构回答: 1. **介绍**:简要说明升级原因(如性能、安全、Docker支持)。 2. **准备工作**:备份数据、检查当前系统。 3. **升级步骤**:基于引用[2]的步骤,但确保适用于4.18版本。 4. **验证**:重启后检查新内核。 5. **相关问题**:生成相关问题。 步骤需要清晰、逐步: - 下载内核源码。 - 解压。 - 配置。 - 编译和安装。 - 更新引导。 - 重启。 确保使用中文。 生成相关问题: - 例如:升级后如何回滚?如何优化新内核的性能? 引用标识:在回答中引用提供的段落时,添加[^1]、[^2]等。但用户提供的引用是参考,不是我的回答的一部分。我需要基于这些引用提供信息,并在相关地方添加标识。 例如,在描述步骤时,如果某个步骤来自引用[2],我可以说“如引用[2]所述”。 现在,构建回答: - **标题**:CentOS 7 内核升级教程:从3.104.18 - **引言**:解释为什么升级(引用[4]提到Docker需要)。 - **步骤**: 1. 备份重要数据。 2. 检查当前内核:`uname -r`(引用[1])。 3. 下载内核源码(4.18版本)。 4. 解压源码包。 5. 复制当前配置文件。 6. 安装依赖包。 7. 配置内核(使用`make oldconfig`)。 8. 编译内核。 9. 安装模块和内核10. 更新initramfs。 11. 更新GRUB配置。 12. 重启系统。 13. 验证新内核。 - **注意事项**:可能的问题和如何解决。 - **相关问题**:列出3-4个相关问题。 确保LaTeX语法正确:如果有数学表达式,使用$...$,但在这个上下文中,可能不多。例如,在描述版本时,不需要数学格式。 最后,生成相关问题: 1. 升级内核后如何回滚到旧版本? 2.内核有哪些改进和特性? 3. 如何验证内核升级是否成功? 4. 升级内核后Docker存储驱动如何配置?(引用[4]提到) 现在,写出完整回答。</think>### CentOS 7 内核升级教程:从 3.10 升级4.18 在 CentOS 7 系统中,内核升级可以提升系统性能、安全性和兼容性,例如支持 Docker 的 overlay2 存储驱动(需要内核 4.0+ 或 CentOS 73.10.0-514+ 版本)[^4]。以下教程将指导您从当前内核 3.10 升级4.18 版本。整个过程基于源码编译方式,确保兼容性和稳定性。**注意:操作前务必备份重要数据,并在测试环境中验证,避免生产环境风险。** #### 步骤 1: 检查当前系统状态 在升级前,确认您的 CentOS 7 版本和当前内核: ```bash # 查看系统版本 $ cat /etc/redhat-release # 查看当前内核版本 $ uname -r ``` 例如,输出可能为: ``` CentOS Linux release 7.3.1611 (Core) 3.10.0-514.el7.x86_64 ``` 这表示系统运行在 3.10 内核上[^1]。 #### 步骤 2: 下载内核源码 访问 [Linux 内核官网](https://www.kernel.org/) 下载 4.18 版本的源码包(以 `.tar.gz` 结尾)。推荐使用 4.18.3 稳定版: ```bash # 下载源码包 $ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.3.tar.gz ``` #### 步骤 3: 解压源码并进入目录 解压下载的源码包并切换到工作目录: ```bash $ tar -zxvf linux-4.18.3.tar.gz $ cd linux-4.18.3 ``` #### 步骤 4: 复制当前内核配置文件 使用当前内核配置作为基础,确保兼容性: ```bash $ cp /boot/config-$(uname -r) .config ``` #### 步骤 5: 安装编译依赖包 安装必要的开发工具和库: ```bash $ yum groupinstall "Development Tools" -y $ yum install ncurses-devel openssl-devel elfutils-libelf-devel bc bison flex -y ``` 此步骤确保编译环境完整[^2]。 #### 步骤 6: 配置内核选项 生成新配置文件。使用 `make oldconfig` 继承旧配置,并自动处理新选项: ```bash $ make oldconfig ``` - 提示新选项时,按 Enter 键接受默认值(适合大多数场景)。 - 可选:使用 `make menuconfig` 进行图形化配置(仅需高级用户)。 #### 步骤 7: 编译和安装内核 编译内核安装模块。使用 `-j$(nproc)` 加速编译(利用所有 CPU 核心): ```bash $ make -j$(nproc) # 编译内核,耗时较长(约 30-60 分钟) $ make modules_install # 安装内核模块 $ make install # 安装内核 ``` #### 步骤 8: 构建 initramfs 映像 生成 initramfs 文件,确保系统启动时加载新内核: ```bash $ dracut --force /boot/initramfs-4.18.3.img 4.18.3 ``` #### 步骤 9: 更新 GRUB 配置 更新引导加载程序,使新内核成为默认启动项: ```bash $ grub2-mkconfig -o /boot/grub2/grub.cfg ``` #### 步骤 10: 重启系统并验证 重启系统并检查新内核版本: ```bash $ reboot # 重启后执行 $ uname -r ``` 输出应为: ``` 4.18.3 ``` 表示升级成功[^3]。如果启动失败,在 GRUB 菜单中可选择旧内核回滚。 #### 注意事项 - **性能影响**:编译过程可能消耗大量 CPU 和内存,建议在空闲时段操作。 - **兼容性**:4.18 内核支持 Docker 的 overlay2 驱动,但需按 Docker 文档调整配置[^4]。 - **错误处理**:如果编译失败,检查依赖包是否完整,或清理目录重新开始(`make clean`)。 - **回滚方法**:重启时在 GRUB 菜单选择旧内核条目,然后删除新内核文件(位于 `/boot` 和 `/lib/modules`)。 升级内核可显著提升系统性能,例如减少延迟 $ \Delta t $ 或提高吞吐量 $ \theta $。如需进一步优化,可调整内核参数如 `sysctl.conf`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值