autoclaw+Deepseek生成的openeuler2509系统中编译kernel 6.19.14内核方法 |
| 发表者:admin分类:Devops2026-05-16 03:50:14 阅读[3] |
autoclaw+Deepseek生成的openeuler2509系统中编译kernel 6.19.14内核方法
一,编译内核
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源内暂无预编译的 6.19.14 RPM源码包,我们选择从 kernel.org 手动下载官方源码。
# 1. 下载内核源码压缩包
# 你可以在 https://www.kernel.org 上查找你想要的版本
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.19.14.tar.xz
# 2. 解压源码
tar -xvf linux-6.19.14.tar.xz
# 3. 进入源码目录
cd linux-6.19.14
3. 配置内核选项
通过复用现有配置并微调,可以确保新内核包含当前系统的驱动和功能,简化定制流程。
复用当前配置:将系统当前运行内核的配置文件复制到源码目录,作为基础配置。
cp /boot/config-$(uname -r) .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
以上命令修改内核配置,不然编译会有报错。
更新配置项:由于新版本内核会引入新选项,需要先更新.config文件。运行此命令后,它会逐个提示你处理所有新增的配置项,直接按Enter键选择默认值即可。
定制配置(可选):如果需要进一步裁剪模块或开启特定功能,可使用图形化界面进行配置。
make menuconfig
界面操作提示:
使用 方向键 移动。
按 空格键 切换选择状态(* 表示编译进内核,M 表示编译为模块,[ ] 表示不编译)。
选择 Save 保存配置,然后 Exit 退出。
4. 编译内核
配置完成后,即可开始编译。-j$(nproc)参数会利用所有CPU核心并行编译,加速过程。
make -j$(nproc)
注意:编译过程耗时较长(半小时至数小时不等),如果在过程中遇到错误,可以尝试去掉-j参数,以便清晰地定位错误信息。
5. 安装内核与模块
编译成功后,需要将内核镜像、模块等文件安装到系统指定位置。
# 安装内核模块到 /lib/modules/ 目录下
sudo make modules_install
# 安装内核文件(vmlinuz, System.map等)到 /boot 目录,并自动更新GRUB配置
sudo make install
cp .config /boot/config-6.19.14
执行sudo make install后,它会自动复制内核到/boot,生成对应的initramfs,并将新内核条目添加到GRUB的启动菜单中。
6. 更新引导与重启验证
手动更新GRUB以确保配置生效,并重启系统以加载新内核。
更新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
重启系统:
sudo reboot
系统重启时,在GRUB启动菜单中选择你刚编译的 6.19.14 内核启动。
登录验证:
成功登录后,执行以下命令,如果终端输出6.19.14,则代表新内核已成功运行。
uname -r
二:编译报错解决方法:
1. 重新运行编译,捕获详细日志
在源码目录(/opt/linux-6.19.14)执行:
# 先清理一下(可选,但建议) 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
把这段输出贴出来,我就能直接判断了。
我这里把日志直接给autoclaw ,以下是他给出的修复方法:找到根因了!日志最后几行清楚地显示:
根因分析
你的 .config 里 CONFIG_SYSTEM_TRUSTED_KEYS 被设为了 certs/openeuler-cert.pem,但 这个文件在主线内核源码中并不存在——它是 openEuler 发行版内核专用的签名证书。
你的 .config 很可能是从 openEuler 发行版 /boot/config-* 复制过来的,所以带上了 openEuler 的证书引用。
解决方法
最简单的方法 — 把证书路径清空:
方法二:如果你是用 menuconfig / nconfig 交互式配置:
进去后找到:
Cryptographic API → Certificates for signature checking把以下两项清空(删掉路径,留空):
Additional X.509 keys for default system keyring— 删掉certs/openeuler-cert.pemX.509 certificate to be preloaded into the system blacklist keyring— 如果有也清空
保存退出后 make -j6 即可继续编译。
(基于之前的经验:openEuler 的发行版 config 带了自家签名证书路径,直接用于主线源码会报 missing target。)
转载请标明出处【autoclaw+Deepseek生成的openeuler2509系统中编译kernel 6.19.14内核方法】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
| Tags: | [阅读全文...] |
最新评论