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

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

时间:2023-11-25 理论教育 版权反馈
【摘要】:图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, 即

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

升级内核主要有三种方法: (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 为例。(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 或提供了更多功能时, 可以选择升级内核, 先选择适合自己的内核, 再按照上面介绍的三种方法之一升级内核。

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

我要反馈