news 2026/7/3 18:49:35

openeuler/krun安装与部署完全指南:从源码编译到RPM打包的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openeuler/krun安装与部署完全指南:从源码编译到RPM打包的完整流程

openeuler/krun安装与部署完全指南:从源码编译到RPM打包的完整流程

【免费下载链接】krunkernel runtime framework项目地址: https://gitcode.com/openeuler/krun

前往项目官网免费下载:https://ar.openeuler.org/ar/

想要快速掌握openEuler内核运行时框架的完整安装部署流程吗?这篇终极指南将带你从零开始,全面了解krun框架的编译、安装、配置以及RPM打包的完整流程。无论你是新手开发者还是系统管理员,都能通过这份详细教程快速上手!

📋 项目简介与核心功能

openEuler krun(内核运行时框架)是一个创新的固件管理框架,它通过统一的架构将厂商的闭源特性固化为固件,在操作系统启动时自动识别和加载,并以标准化接口供应用程序调用。这个框架实现了固件管理的自动化和跨平台支持,是openEuler生态系统中的重要组件。

krun框架包含五个核心模块,每个模块都有特定的功能定位:

  1. SDK模块- 提供用户态固件访问接口
  2. Driver模块- 内核驱动程序,负责从主板加载和管理固件
  3. Server模块- 系统服务,监测并初始化krun用户态运行环境
  4. rtLogd模块- 日志服务,管理固件中的程序日志
  5. DevKit模块- 固件开发套件,为固件开发人员提供完整的开发工具链

🚀 环境准备与源码获取

系统要求与依赖安装

在开始之前,请确保你的系统满足以下要求:

  • openEuler操作系统(推荐最新稳定版)
  • 内核开发工具包
  • 编译工具链(gcc、make、cmake)
  • RPM构建工具

安装必要的依赖包:

sudo yum install -y gcc make kernel-devel-uname-r cmake gcc-c++ systemd-devel sudo yum install -y zlib-devel libboundscheck nlohmann-json-devel openssl-devel sudo yum install -y rpmdevtools rsync

获取krun源码

从官方仓库克隆krun项目源码:

git clone https://gitcode.com/openeuler/krun cd krun

🔧 源码编译完整流程

一键编译所有模块

krun提供了便捷的编译脚本,可以一次性编译所有五个模块:

# 进入项目根目录 cd krun # 执行编译脚本 sh scripts/build.sh

编译过程会依次处理各个模块:

  1. DevKit模块- 固件开发套件编译
  2. Driver模块- 内核驱动编译
  3. SDK模块- 用户态SDK编译
  4. Server模块- 系统服务编译
  5. rtLogd模块- 日志服务编译

模块独立编译

如果你只需要编译特定模块,可以进入对应目录单独编译:

# 编译SDK模块 cd src/sdk sh build.sh # 编译Driver模块 cd src/driver sh build.sh # 编译Server模块 cd src/server sh build.sh # 编译rtLogd模块 cd src/rtLogd sh build.sh # 编译DevKit模块 cd src/devkit sh tool_build.sh

清理编译缓存

完成开发或测试后,可以使用以下命令清理编译产生的中间文件:

# 清理所有模块的编译缓存 sh scripts/build.sh clean

📦 系统安装与配置指南

一键安装脚本

krun提供了完整的安装脚本,可以自动完成所有组件的安装和配置:

# 需要root权限执行 sudo sh scripts/install.sh

安装脚本会自动执行以下操作:

  1. 创建必要的系统目录- 包括库文件目录、配置文件目录、日志目录等
  2. 安装SDK组件- 将libkrun_sdk.so和头文件安装到系统目录
  3. 安装内核驱动- 将krun.ko驱动模块安装到内核模块目录
  4. 更新模块依赖- 执行depmod更新内核模块依赖关系
  5. 安装日志服务- 部署rtLogd服务和相关配置文件
  6. 安装系统服务- 部署krun_server服务和systemd配置
  7. 安装开发套件- 将DevKit工具复制到系统共享目录
  8. 启动系统服务- 自动启用并启动相关服务

手动安装步骤详解

如果你想了解安装的详细过程,可以查看scripts/install.sh脚本。主要安装步骤包括:

  • SDK安装:将编译好的共享库和头文件复制到系统目录
  • 驱动安装:将内核模块安装到/lib/modules/$(uname -r)/extra/目录
  • 服务配置:配置systemd服务单元和日志服务
  • 环境准备:创建必要的运行时目录和配置文件

验证安装结果

安装完成后,可以通过以下命令验证各组件是否正常运行:

# 检查内核模块是否加载 lsmod | grep krun # 检查系统服务状态 systemctl status krund systemctl status rtLogd # 检查SDK库文件 ls -la /usr/lib64/libkrun_sdk.so ls -la /usr/include/krun/ # 检查开发套件 ls -la /usr/share/krun-devkit/

🛠️ RPM打包完整流程

准备RPM构建环境

在开始RPM打包前,需要设置RPM构建环境:

# 安装RPM构建工具 sudo yum install -y rpmdevtools rpmlint # 设置RPM构建环境 rpmdev-setuptree

使用自动化打包脚本

krun项目提供了完整的RPM打包脚本,可以一键生成RPM包:

# 执行RPM打包脚本 sh scripts/rpmbuild_krun.sh

这个脚本会自动执行以下步骤:

  1. 安装构建依赖- 自动安装spec文件中定义的构建依赖
  2. 获取版本信息- 从git提交记录中提取版本号
  3. 源码打包- 调用scripts/package.sh生成源码压缩包
  4. RPM构建- 使用krun_local.spec文件构建RPM包
  5. 生成输出- 在/root/rpmbuild/RPMS/目录下生成RPM包

手动打包流程详解

如果你想深入了解RPM打包过程,可以手动执行以下步骤:

# 1. 安装构建依赖 sudo yum-builddep scripts/krun_local.spec # 2. 准备源码包 sh scripts/package.sh -v 1.0.0 -o /tmp # 3. 将源码包复制到RPM构建目录 cp /tmp/krun-1.0.0.tar.gz ~/rpmbuild/SOURCES/ # 4. 执行RPM构建 rpmbuild -ba scripts/krun_local.spec

RPM包结构说明

生成的RPM包包含以下子包:

  • krun- 主元包,依赖所有子包
  • krun-sdk- 用户态SDK库和头文件
  • krun-driver- 内核驱动模块
  • krun-rtLogd- 日志服务组件
  • krun-server- 系统服务组件
  • krun-devkit- 固件开发套件

🔄 开发与测试工作流

标准开发流程

krun项目推荐以下开发工作流:

  1. 代码开发- 在对应模块目录中编写代码
  2. 模块编译- 使用build.sh脚本编译修改的模块
  3. 系统安装- 运行install.sh安装到测试环境
  4. 功能测试- 验证新功能是否正常工作
  5. 环境清理- 使用uninstall.sh卸载测试环境
  6. 清理缓存- 使用build.sh clean清理编译中间文件
  7. 提交代码- 提交代码到版本控制系统
  8. 打包发布- 使用RPM打包脚本生成发布包

测试验证方法

krun提供了完整的测试套件,位于tests/目录:

# 运行驱动测试 cd tests/driver_test make sudo ./krun_driver_test # 运行SDK测试 cd tests/sdk_test sh build.sh ./sdk_test # 运行日志服务测试 cd tests/rtLogd_test mkdir build && cd build cmake .. make ./rtLogd_test

📚 模块详细文档

krun项目的详细使用文档位于docs/zh/目录:

  • krun_devkit_user_guide.md - DevKit开发套件使用指南
  • krun_driver_user_guide.md - 内核驱动使用说明
  • krun_rtLogd_user_guide.md - 日志服务配置指南
  • krun_sdk_user_guide.md - SDK接口使用文档
  • krun_server_user_guide.md - 系统服务管理指南

⚠️ 常见问题与解决方案

编译问题处理

问题1:内核头文件缺失

# 解决方案:安装对应内核版本的开发包 sudo yum install kernel-devel-$(uname -r)

问题2:依赖库找不到

# 解决方案:安装缺失的开发库 sudo yum install zlib-devel libboundscheck-devel nlohmann-json-devel

安装问题处理

问题1:权限不足

# 解决方案:使用root权限执行安装 sudo sh scripts/install.sh

问题2:服务启动失败

# 解决方案:查看服务日志 journalctl -u krund journalctl -u rtLogd

RPM打包问题

问题1:构建依赖缺失

# 解决方案:安装所有构建依赖 sudo yum-builddep scripts/krun_local.spec

问题2:版本号冲突

# 解决方案:指定自定义版本号 sh scripts/package.sh -v 2.0.0 -r 1

🎯 最佳实践建议

开发环境配置

  1. 使用开发分支- 在独立的开发分支上进行功能开发
  2. 定期同步主分支- 保持与主分支的同步,避免冲突
  3. 编写单元测试- 为新增功能编写对应的测试用例
  4. 文档更新- 及时更新相关文档和注释

生产环境部署

  1. 版本控制- 使用明确的版本号进行部署
  2. 回滚计划- 准备完整的回滚方案
  3. 监控配置- 配置系统监控和告警
  4. 备份策略- 定期备份配置和数据

性能优化建议

  1. 模块化编译- 只编译需要修改的模块
  2. 增量构建- 利用make的增量构建特性
  3. 并行编译- 使用多核CPU加速编译过程
  4. 缓存利用- 配置ccache等编译缓存工具

📈 总结与下一步

通过本指南,你已经掌握了openEuler krun框架从源码编译到RPM打包的完整流程。无论是开发环境搭建、模块编译、系统安装还是打包发布,都有了全面的了解。

下一步建议:

  1. 深入模块开发- 选择感兴趣的模块进行深入学习
  2. 参与社区贡献- 查看项目文档,了解贡献流程
  3. 实践固件开发- 使用DevKit套件开发自定义固件
  4. 性能调优- 针对特定场景进行性能优化

krun框架作为openEuler生态系统的重要组成部分,为固件管理和硬件特性抽象提供了强大的支持。掌握其安装部署流程,将为你深入理解openEuler系统架构和硬件抽象层打下坚实基础!

【免费下载链接】krunkernel runtime framework项目地址: https://gitcode.com/openeuler/krun

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 18:45:53

构建健壮的GPG密钥体系:主密钥与子密钥分离架构实战指南

1. 项目概述:为什么现代开发者需要一个坚实的GPG密钥体系?如果你在开源社区提交过代码,或者在某个安全邮件列表里发过邮件,很可能已经接触过GPG(GNU Privacy Guard)。它看起来像是一串神秘的字符&#xff0…

作者头像 李华
网站建设 2026/7/3 18:44:16

困难任务推进不动时,我用0.1%最小成功法自救

目录1. 你真正卡住的,不是事情难,而是“成功阈值太高”2. 什么叫“0.1%最小成功”?第一,足够小第二,真实推进第三,可验证3. 你急躁时,最该做的是“降目标”,不是“加鸡血”4. 一个很…

作者头像 李华
网站建设 2026/7/3 18:44:14

终极指南:如何用SecGPT网络安全大模型提升你的安全防御能力

终极指南:如何用SecGPT网络安全大模型提升你的安全防御能力 【免费下载链接】SecGPT SecGPT网络安全大模型 项目地址: https://gitcode.com/gh_mirrors/se/SecGPT 在当今数字化的世界里,网络安全已成为每个组织和个人的核心关切。面对日益复杂的网…

作者头像 李华
网站建设 2026/7/3 18:43:51

Dynamsoft_Barcode_Reader_Python 11.4.3000

​Robust Barcode Scanner SDK with Flexible APIs Whether it’s distorted, dark, distant, blurred, DPM, batch or moving, we can scan it. At speed. Engineered for High-Performance Barcode Scanning Scan 500 Barcodes per Minute--Dynamsoft_Barcode_Reader_Python…

作者头像 李华
网站建设 2026/7/3 18:42:00

BiSheng JDK 21模块化系统深度解析:Java模块化架构最佳实践

BiSheng JDK 21模块化系统深度解析:Java模块化架构最佳实践 【免费下载链接】bishengjdk-21 BiSheng JDK 21 is a high-performance, production-ready distribution of OpenJDK 21. 项目地址: https://gitcode.com/openeuler/bishengjdk-21 前往项目官网免费…

作者头像 李华
网站建设 2026/7/3 18:39:29

超节点应用场景及技术演进 — 阅读笔记

原文:中兴通讯 毛磊《超节点应用场景及技术演进》 一、概览 1.1 一句话 大模型参数越堆越大,单卡算力又撞上了制程墙,于是业界开始把多块 GPU 用超高带宽互联捏成一台"巨型服务器"来用——这就是超节点。说白了,它不是…

作者头像 李华