银河麒麟系统安装特定版本kernel-devel是为了编译第三方驱动或定制内核模块,需严格匹配目标内核版本号与架构后缀;可通过yum精准安装、离线rpm部署或从源码树执行make modules_prepare三种方式实现。

银河麒麟系统安装特定内核开发包,是为了编译第三方驱动(如NVIDIA、海光GPU)、定制内核模块或调试内核问题。若仅用yum install kernel-devel,默认安装的是当前运行内核版本对应的开发包;但当你升级了内核却未同步更新开发包,或需为其他已安装但未激活的内核版本准备头文件时,就必须手动指定版本安装——否则执行make时会报错“Unable to find kernel source tree”。
确认目标内核版本并匹配开发包
执行uname -r查看当前运行内核,例如输出5.10.0-133.ky10.x86_64;再用rpm -qa | grep kernel列出所有已安装的内核,找到你真正要为其安装开发包的版本(比如5.10.0-135.ky10.x86_64)。【必须严格匹配版本号和架构后缀,缺一不可】
执行sudo yum list kernel-devel --showduplicates | grep 5.10.0-135,确认仓库中是否存在该精确版本的kernel-devel包。若无结果,说明该版本开发包未上架官方源,需转向离线方式或手动构建。
方法一:YUM精准安装指定版本开发包
第一步:清理缓存确保元数据最新
sudo yum clean all && sudo yum makecache
第二步:安装对应版本的开发包(含完整版本字符串)
sudo yum install -y kernel-devel-5.10.0-135.ky10.x86_64
第三步:验证安装路径是否生成
ls /usr/src/kernels/5.10.0-135.ky10.x86_64/Makefile
注意:若提示“Nothing to do”,说明该版本开发包在当前启用的仓库中不存在,需检查是否启用了正确的源(如kylin-updates或kylin-security),或改用离线方式。
方法二:离线部署指定版本kernel-devel RPM包
方法一适用场景是网络可达且仓库有包;若目标版本仅存在于内部补丁包或监管下发介质中,则需离线安装。
① 在联网环境(或另一台同版本麒麟系统)中,使用yumdownloader --resolve kernel-devel-5.10.0-135.ky10.x86_64下载该RPM及其全部依赖(如kernel-headers、glibc-devel等)。
② 将下载的.rpm文件全部拷贝至离线机的/tmp/kernel-dev-pkgs/目录。
③ 进入该目录并一次性安装:
cd /tmp/kernel-dev-pkgs && sudo rpm -ivh *.rpm
④ 若提示Failed dependencies,说明遗漏了某个基础依赖,需回溯补全——此时rpm -qpR *.rpm | grep "is needed"可快速定位缺失项。
方法三:从源码树构建kernel-devel(适用于无RPM包的定制内核)
当使用手动替换/boot/vmlinuz方式升级过内核,或编译过自定义内核(如打过特定补丁),官方仓库必然没有对应开发包。此时必须从原始内核源码重建。
下载与vmlinuz版本完全一致的内核源码包(如linux-5.10.0-135.ky10.tar.xz),解压至/usr/src/kernels/下并重命名为5.10.0-135.ky10.x86_64。
进入该目录,执行:
make mrproper && make modules_prepare
这一步会生成include/generated/uapi/linux/version.h及Module.symvers等关键文件,使外部模块编译器能识别该内核树结构。无需执行完整编译,【modules_prepare是唯一必需步骤】。











