OpenEuler 25.09系统编译 kernel7.0.7 完整指南

OpenEuler 25.09系统编译 kernel7.0.7 完整指南

一、编译内核

1. 准备编译环境

首先,需要安装编译内核所必需的工具和依赖库。

在终端中执行以下命令:

# 1. 安装"Development Tools"组包,包含 gcc, make 等基础编译工具
sudo dnf groupinstall "Development Tools"
​
# 2. 安装内核编译的特定依赖
# ncurses-devel: make menuconfig 的图形界面支持
# elfutils-libelf-devel: 处理 ELF 格式文件
# bc: 编译过程中的计算工具
# openssl-devel: 内核签名等安全功能所需
# bison, flex: 语法解析器生成工具
​
sudo dnf install ncurses-devel elfutils-libelf-devel bc openssl-devel bison flex

如果编译失败并提示缺少某个头文件或工具,你可以尝试使用 sudo dnf builddep kernel 来自动安装 kernel 源码包的所有构建依赖。


2. 获取内核源码

由于 openEuler 25.09 源内暂无预编译的 7.0.7 RPM 源码包,我们选择从 kernel.org 手动下载官方源码。

2.1 下载内核源码压缩包

你可以在 https://www.kernel.org 上查找你想要的版本:

wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.0.7.tar.xz

2.2 解压源码

tar -xvf linux-7.0.7.tar.xz

2.3 进入源码目录

cd linux-7.0.7

3. 配置内核选项

通过复用现有配置并微调,可以确保新内核包含当前系统的驱动和功能,简化定制流程。

3.1 复用当前配置

将系统当前运行内核的配置文件复制到源码目录,作为基础配置:

cp /boot/config-$(uname -r) .config

3.2 修改内核配置(关键步骤)

使用 sed 命令清空证书路径,避免编译报错:

sed -i 's|CONFIG_SYSTEM_TRUSTED_KEYS=.*|CONFIG_SYSTEM_TRUSTED_KEYS=\"\"|' .config
sed -i 's|CONFIG_SYSTEM_EXTRA_CERTIFICATE=.*|CONFIG_SYSTEM_EXTRA_CERTIFICATE=\"\"|' .config
make olddefconfig

注意:以上命令修改内核配置,不然编译会有报错。

3.3 更新配置项(可选)

由于新版本内核会引入新选项,需要先更新.config 文件。运行此命令后,它会逐个提示你处理所有新增的配置项,直接按 Enter 键选择默认值即可。

make menuconfig

界面操作提示:

  • 使用方向键移动

  • 按空格键切换选择状态(* 表示编译进内核,M 表示编译为模块,[ ] 表示不编译)

  • 选择 Save 保存配置,然后 Exit 退出

3.4 定制配置(可选)

如果需要进一步裁剪模块或开启特定功能,可使用图形化界面进行配置。


4. 编译内核

配置完成后,即可开始编译:

make -j$(nproc)

注意:编译过程耗时较长(半小时至数小时不等),如果在过程中遇到错误,可以尝试去掉 -j 参数,以便清晰地定位错误信息。


5. 安装内核与模块

编译成功后,需要将内核镜像、模块等文件安装到系统指定位置。

5.1 安装内核模块

sudo make modules_install

5.2 安装内核文件(vmlinuz, System.map 等)到 /boot 目录

sudo make install

执行 sudo make install 后,它会自动:

  • 复制内核到/boot

  • 生成对应的 initramfs

  • 将新内核条目添加到 GRUB 的启动菜单中

5.3 更新配置文件

cp .config /boot/config-7.0.7

6. 更新引导与重启验证

6.1 手动更新 GRUB 以确保配置生效,并重启系统以加载新内核。

对于使用 UEFI 引导的系统:
GRUB 配置文件路径通常是 /boot/efi/EFI/openEuler/grub.cfg。如果不确定,可检查 /boot/efi/EFI/ 下的具体目录名:

# 请将路径替换为你的实际 GRUB 配置文件路径
sudo grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

如果你使用的是传统的 BIOS 引导:
命令通常是:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

6.2 重启系统

sudo reboot

7. 验证

成功登录后,执行以下命令,如果终端输出 7.0.7,则代表新内核已成功运行:

uname -r

二、编译报错解决方法

1. 重新运行编译,捕获详细日志

在源码目录(/opt/linux-7.0.7)执行:

# 先清理一下(可选,但建议)
make clean
​
# 使用单线程编译,并输出详细命令,同时保存到文件
make -j1 V=1 2>&1 | tee build.log
-j1:只用 1 个核心,让错误信息按顺序输出,不被并行日志打乱。
​
V=1:显示完整编译命令,便于定位哪个环节出错。
​
tee build.log:将所有输出同时显示在屏幕并保存到 build.log,方便事后搜索。

等待编译中断后,执行以下命令查看最后的错误:

grep -i "error:" build.log | tail -20

把这段输出贴出来,我就能直接判断了。


2. 根因分析

日志最后几行清楚地显示:

make[3]: *** 没有规则可制作目标"certs/openeuler-cert.pem",由"certs/x509_certificate_list"需求。停止。
make[2]: *** [scripts/Makefile.build:546:certs] 错误 2
make[1]: *** [/opt/linux-6.19.14/Makefile:2065:.] 错误 2

根因分析:
你的 .configCONFIG_SYSTEM_TRUSTED_KEYS 被设为了 certs/openeuler-cert.pem,但这个文件在主线内核源码中并不存在——它是 openEuler 发行版内核专用的签名证书。

你的 .config 很可能是从 openEuler 发行版 /boot/config-* 复制过来的,所以带上了 openEuler 的证书引用。


3. 解决方法

方法一:直接改 .config,把证书路径设为空

sed -i 's|CONFIG_SYSTEM_TRUSTED_KEYS=.*|CONFIG_SYSTEM_TRUSTED_KEYS=\"\"|' .config
# 也检查一下这个:
sed -i 's|CONFIG_SYSTEM_EXTRA_CERTIFICATE=.*|CONFIG_SYSTEM_EXTRA_CERTIFICATE=\"\"|' .config
# 然后重新生成完整配置并编译
make olddefconfig
make -j6

方法二:如果你是用 menuconfig / nconfig 交互式配置

make menuconfig
进去后找到:Cryptographic API → Certificates for signature checking
​
把以下两项清空(删掉路径,留空):
​
Additional X.509 keys for default system keyring — 删掉 certs/openeuler-cert.pem
X.509 certificate to be preloaded into the system blacklist keyring — 如果有也清空
​
保存退出后 make -j6 即可继续编译。

三、安全提示

  • 避免执行系统命令:编译过程可能会生成敏感文件,确保在安全环境中操作。

  • 更新 GRUB:使用最新版本的 GRUB 配置以支持新内核。

  • 标注来源:转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。


四、引用信息

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。


五、注意事项

  1. 编译环境要求

    • 必须安装 Development Tools 组包(包含 gcc, make 等)

    • 需要特定依赖:ncurses-devel, elfutils-libelf-devel, bc, openssl-devel, bison, flex

  2. 配置关键项

    • CONFIG_SYSTEM_TRUSTED_KEYS 必须是空字符串,不能是路径

    • CONFIG_SYSTEM_EXTRA_CERTIFICATE 也必须是空字符串

  3. 编译时间较长

    • 使用 -j$(nproc) 可以加速,但建议先清理日志再重新编译以定位问题
  4. 验证方式

    • 编译成功后运行 uname -r 应显示 7.0.7

    • 登录后执行 sudo systemctl status openeuler 确认内核启动正常

  5. 错误排查

    • 查看 build.log 中的具体错误行,例如:

      • make[3]: *** 没有规则可制作目标"certs/openeuler-cert.pem"

      • make[2]: *** [certs] 错误 2


六、参考资源

  • 官方内核下载https://www.kernel.org/pub/linux/kernel/v7.x/

  • 编译工具安装:使用 sudo dnf groupinstall "Development Tools"

  • 依赖包安装:使用 sudo dnf install <package-name>-devel

  • 源码解压:使用 tar -xvf <filename>.tar.xz


文档生成时间:2026-05-21
来源:华为云开发者社区博客(bbs.huaweicloud.com
作者:AutoClaw+Deepseek 生成的示例内容