理论教育 Linux内核升级教程及下载源代码包

Linux内核升级教程及下载源代码包

更新时间:2026-01-13 理论教育 版权反馈
【摘要】:图6.1Linux 内核官方主页 将下载的内核源代码放在Linux 系统目录文件夹/usr/src 中, 本例选择了5.2.10内核, 通过如下命令获得5.2.10.tar.gz 内核源代码包。图6.2内核图形配置界面其中每一个配置选项, 用户有三种选择, 它们分别代表的含义如下:配置完成以后, 保存退出。内核显示结果如图6.10 所示,在elrepo 源中, kernel-ml 中的ml 即mainline 为最新版本的内核, kernel-lt 中的lt 表示long time, 即

升级内核主要有三种方法: (1) 从内核源码升级; (2) 手动安装新版的Kernel RPM文件; (3) 通过yum 升级Linux 内核。

1. 从内核源码升级

(1) 从内核源码升级内核, 需登录https: / /www.kernel.org 下载新版的内核源码, 然后编译出可执行的Linux 内核。 如图6.1 所示为其官方主页, 当前最新稳定的可用内核版本为5.3.6。 如果需要下载历史版本, 点击网页上的https: / /www.kernel.org/pub, 下载需要的内核版本。

图示

图6.1 Linux 内核官方主页

(2) 将下载的内核源代码放在Linux 系统目录文件夹/usr/src 中, 本例选择了5.2.10内核, 通过如下命令获得5.2.10.tar.gz 内核源代码包。 将下载的tar 包进行解压缩, 解压缩到/usr/src 的目录中。

图示

(3) 当前内核在/boot 下有个文件/boot/config-3.10.0-327.el7.x86_64, 这个文件定义了在编译内核时候的特性, 哪些功能启用了, 哪些功能没启用, 哪些是以模块方式加载。 在编译内核的时候, 以这个文件为模板, 在这个模板基础上修改特性, 所以先将这个文件复制到linux-5.2.10 目录下, 并命名为隐藏文件.config。

图示

(4) 执行make menuconfig, 对内核选项进行编译, 如图6.2 所示。

图示

图示

图6.2 内核图形配置界面

其中每一个配置选项, 用户有三种选择, 它们分别代表的含义如下:

图示

配置完成以后, 保存退出。

(5) 配置完成以后, 开始编译内核, 在终端输入Make 命令即可。 初次编译, 编译过程中可能会出现错误, 通常情况下是缺少安装包。 最常见的是缺少openssl-devel 包, 如图6.3 所示, 执行yum install openssl-devel-y, 安装openssl-devel 包。

使用编译Make 命令时, 可以使用make-j n, 其中n 代表同时编译的进程, 可以加快编译速度, n 由用户计算机的性能和配置决定, 本例使用make-j 10, 编译内核过程如图6.4 所示。

图示

图6.3 安装openssl-devel 安装包

图示

图6.4 Make 编译内核的过程

编译时间比较长, 根据机器性能的不同大概需要几小时不等, 需要耐心等待。 编译完成后, 内核目录比较大, 本例目录大小如图6.5 所示, 虚拟机所在的磁盘必须预留有10G以上的空间, 不然编译将由于根目录没有足够磁盘空间而无法完成, 出现错误。

图示

图6.5 查看内核目录大小

(6) 执行make modules_ install 将内核模块安装到/lib/modules 中, 执行过程如图6.6 所示, 安装模块完之后, 在/lib/modules 目录下就会出现新的内核5.2.10。

图示

图6.6 内核模块的安装过程

(7) 执行make install 安装内核相关文件, 执行完毕, 浏览/boot, 已经生成了vmlixuz和initramfs 文件, 至此内核编译完成。

◎注意

如果编译安装新内核之后, 在使用的过程中发现各种Bug, 和现有的系统软件不兼容, 那么怎么删呢?

(1) 删除/lib/modules/目录下不需要的内核库文件。

(2) 删除/usr/src/linux/目录下不需要的内核源码。

(3) 删除/boot 目录下启动的内核和内核映像文件。

(4) 更改GRUB 的配置文件, 删除不需要的内核启动列表。

以上4 步做完之后, 新安装的内核就彻底被删除了。

2. 手动安装Kernel RPM 包

使用手动安装Kernel RPM 包升级内核, 需要先取得CentOS 内核的RPM 文件, 然后手动安装更新内核软件包。 可以通过http: / /elrepo.org/linux/kernel/el7/x86_64/RPMS 获取CentOS 7 的最新内核RPM 软件包, 其中Kernel-lt 是长期维护版, Kernel-ml 是Linux 亲自维护的主分支版本。 ELRepo 仓库是基于社区的用于企业级Linux 仓库, 提供对Red Hat Enterprise (RHEL)和其他基于RHEL 的Linux 发行版(CentOS、 Scientific、 Fedora 等)的支持。

先下载适合当前需求的Kernel RPM 包, 本例以kernel-it-4.4.196 为例。(https://www.daowen.com)

(1) 在当前内核版本3.10.0-327.el7.x86_64 的基础之上下载新的内核版本kernel-lt-4.4.196-1.el7.elrepo.x86_64.rpm 软件包, 如图6.7 所示。

图示

图6.7 升级内核过程

(2) 安装过程中需要一定的时间, 不要进行其他的操作, 安装完毕出现新的内核版本选项, 如图6.8 所示, 选择新的内核重新启动。

图示

图6.8 升级新内核后的GRUB 引导

(3) 测试新安装的内核, 执行“uname-a”查看新内核版本号, 如图6.9 所示。

图示

图6.9 查看新的内核版本

(4) 测试新内核, 如果发现新内核没有问题, 可以删除旧内核。

◎说明

使用RPM 命令安装时不要使用-U 或-F 选项升级Kernel 软件包, 因为升级会卸载旧版的内核, 再安装新的版本。 选择上文中的-ivh 选项, 安装新的内核, 等待新内核安装测试完毕后, 再删除旧的内核。 一旦发现新内核版本有问题, 可以选择旧的内核版本启动, 重新升级。

3. 使用yum 升级内核

使用yum 源可以快速地升级内核, 将内核升级为当前的稳定版本。

(1) 查看当前系统的内核版本。

图示

(2) 导入公共密钥。

图示

(3) 安装elrepo 源, 并显示当前elrepo 源支持的内核。 内核显示结果如图6.10 所示,在elrepo 源中, kernel-ml 中的ml 即mainline 为最新版本的内核, kernel-lt 中的lt 表示long time, 即安装长期支持内核。

图示

图示

图6.10 elrepo 源支持的内核

(4) 本例选择安装稳定主线内核kernel-ml, 执行如下命令, 升级内核安装过程如图6.11 所示。

图示

图示

图6.11 安装稳定内核的执行过程

(5) 执行重启命令, 发现GRUB 引导中已经出现了如图6.12 中所示的新安装的Linux内核5.3.6(当前内核的最新稳定版本), 选择新升级的内核进入升级后的内核操作系统。

图示

图6.12 添加新内核后的GRUB 引导启动

(6) 重新查看内核, 如图6.13 所示为最新稳定内核5.3.6。

图示

图6.13 查看新的内核

(7) 修改内核启动顺序, 将新升级的内核设置为第一个启动, 默认0 是最先启动的内核, 执行如下所示的命令, 修改后的GRUB 启动如图6.14 所示。

图示

图示

图6.14 修改启动顺序后的GRUB 引导

◎说明

正常稳定的内核无须追新, 当新内核修补了安全漏洞、 修复了严重Bug 或提供了更多功能时, 可以选择升级内核, 先选择适合自己的内核, 再按照上面介绍的三种方法之一升级内核。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈