前言

openEuler的kernel.spec本身支持构建64K内核的版本,因此本文介绍如何通过修改kernel.spec,构建出64K版本的相关kernel rpm包及相关内核衍生包。

kernel source软件包下载与安装

下面以修改22.03 SP2 LTS版本的kernel.spec为例。

首先,需要下载openEuler 22.03 SP2 LTS的内核source软件包,并安装。

https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP2/source/Packages/kernel-5.10.0-153.12.0.92.oe2203sp2.src.rpm

如果需要其他版本,https://repo.huaweicloud.com/openeuler仓库中自行搜索即可。

下载后,安装src rpm包。

|  |  |
| --- | --- |
| 1 | yum install -y rpm-build |
| 2 | rpm -ivh kernel-5.10.0-153.12.0.92.oe2203sp2.src.rpm |

安装后,可在/root/rpmbuild/SOURCE找下kernel源码包及相关文件,可在/root/rpmbuild/SPECS找到kernel.spec文件。

kernel.spec启用64K内核页配置

  1. 打开添加CONFIG_ARM64_64K_PAGES配置项的开关

    在kernel.spec 32行前面添加_with_64kb的定义如下:

    |  |  |
    | --- | --- |
    | 1 | %global _with_64kb 1  # 新增行,使能64K内核配置 |
    | 2 | %ifarch aarch64 |
    | 3 | %define with_64kb  %{?_with_64kb: 1} %{?!_with_64kb: 0} |
    | 4 | %if %{with_64kb} |
    | 5 | %global package64kb -64kb |
    | 6 | %endif |
    | 7 | %else |
    | 8 | %define with_64kb  0 |
    | 9 | %endif |
    
  2. 关闭kabi检查(可选)

    如果不关注kabi变化,可在kernel.spec中选择关闭,关闭后构建内核将不再检查kabi前后是否变化。修改如下:

    |  |  |
    | --- | --- |
    | 1 | %global with_kabichk 0  # 新增行,关闭kabi检查 |
    | 2 | %if 0%{?with_kabichk} |
    | 3 | Source18: check-kabi |
    | 4 | Source20: Module.kabi_aarch64 |
    | 5 | Source21: Module.kabi_x86_64 |
    | 6 | %endif |
    

安装内核构建所需的依赖包

执行构建命令:rpmbuild -ba kernel.spec将提示需要安装的依赖包。基本为如下依赖包,可检查后自行安装。

|  |  |
| --- | --- |
| 1 | yum install -y asciidoc audit-libs-devel binutils-devel clang dwarves gtk2-devel java-1.8.0-openjdk java-devel libbabeltrace-devel libcap-devel libcap-ng-devel libunwind-devel llvm pciutils-devel newt-devel perl-generators python3-docutils xmlto |

安装后,确认当前java环境是否为JDK8,执行javac -version若是则依赖包安装正确,否则若JDK回显非JDK8,则需要重新安装软件包java-1.8.0-openjdk和java-1.8.0-openjdk-devel,并再次确认。

构建64K版本内核的相关软件包

执行如下命令,等待构建成功即可。

|  |  |
| --- | --- |
| 1 | cd /root/rpmbuild/SPECS |
| 2 | rpmbuild -ba kernel.spec |
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐