前言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内核页配置打开添加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 |关闭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 |