写点什么

OpenHarmony 内核学习 [1]-- 单独编译 OpenHarmony 标准系统内核

作者:离北况归
  • 2023-03-13
    江苏
  • 本文字数:1510 字

    阅读完需:约 5 分钟

内核是操作系统的核心,学习掌握 OpenHarmony 内核对于开发人员至关重要。笔者整理学习 OpenHarmony 标准系统内核笔记如下:


  • 阅读本文大约需要 15 分钟。@toc

OpenHarmony 标准系统内核

  • OpenHarmony 标准系统类设备(参考内存≥128MiB),OpenHarmony 选择 Linux 内核作为标准系统内核。

  • OpenHarmony 标准系统从Linux内核LTS版本中选择合适的版本作为内核的基础版本,目前已完成对 Linux-4.19 及 Linux-5.10 的适配及支持。


Linux 内核版本

  • Linux 内核版本分为稳定版本以及长期支持 LTS(long term support)版本。

  • 稳定版本大约每三个月发布一个新版本,包含最新硬件支持、性能改进以及 bug 修复等。其缺点是整体维护生命周期较短,产品软件不能得到长期稳定的支持。

  • LTS 为长期支持版本,“长期支持”体现在对该版本内核的长期维护(对 bug 和安全方面的修复),一般维护周期达到 6 年之久。相较于维护周期从 6 个月到 2 年不等非 LTS 内核版本,对一款商用产品来说并不能覆盖其产品完整的生命周期,很有可能会使产品暴露于安全的风险之中。且 LTS 版本更新不会包含新的特性升级,保证了版本的稳定。


  • OpenHarmony 的 Linux 内核基于开源 Linux 内核 LTS 4.19.y / 5.10.y 分支演进,在此基线基础上,回合 CVE 补丁及 OpenHarmony 特性,作为 OpenHarmony Common Kernel 基线。针对不同的芯片,各厂商合入对应的板级驱动补丁,完成对 OpenHarmony 的基线适配。

  • Linux 社区 LTS 4.19.y 分支信息请查看kernel官网

  • Linux 社区 LTS 5.10.y 分支信息请查看kernel官网

  • 内核的 Patch 组成模块,在编译构建流程中,针对具体芯片平台,合入对应的架构驱动代码,进行编译对应的内核镜像。所有补丁来源均遵守 GPL-2.0 协议。

  • 目前 OpenHarmony Beta3 使用的内核版本为 5.10.93,Beta4 使用的内核版本为 5.10.97


OpenHarmony 标准系统内核源码目录


单独编译 OpenHarmony 标准系统内核(以 rk3568 为例)

  • 笔者编译环境:wsl2+Ubuntu18.04+OpenHarmony Beta3源码

  • 首先在 out/kernel/src_tmp/linux-5.10 目录下打开终端执行如下语句:


# 配置编译环境变量export PRODUCT_COMPANY=hihopeexport DEVICE_COMPANY=rockchipexport DEVICE_NAME=rk3568export KBUILD_OUTPUT=…/…/OBJ/linux-5.10/./make-ohos.sh TB-RK3568X0# ./make-ohos.sh TB-RK3568X10也是可以的,但是笔者不太清楚这个是用来干啥的
复制代码


单独编译结果

结果是在如下目录下生成 resource.img 内核镜像和 boot_linux.img


  • /home/jiajiahao/ohos3.2beta3/sources/out/kernel/OBJ/linux-5.10/resource.img


  • home\jiajiahao\ohos3.2beta3\sources\out\kernel\src_tmp\linux-5.10\boot_linux.img


重新编译 OpenHarmony 标准系统内核

  • 删除源码下 out 目录


rm -rf out
复制代码


  • 然后重新编译出全部的镜像文件

知识附送

  • 编译 rk64 位:用 DevEco Device Tool 工具可以编译 64 位的镜像

  • 安装最新依赖包:


for one_tools in curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list;do sudo bash -c "apt-get install -y ${one_tools}"; done
复制代码


  • OpenHarmony 环境重置


安装依赖包: unix_time=`date '+%s'`;for one_tools in `curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list`;do echo "apt-get install -y ${one_tools}">>/tmp/openharmony_deps_${unix_time}.sh; done;sudo apt-get update;sudo bash -x /tmp/openharmony_deps_${unix_time}.sh删除out: rm -rf out重置工作区(删除配置的git用户信息),删除所有修改(记得备份你的代码): repo forall -c "pwd;git reset --hard; git clean -fd"更新最新代码: repo sync -c -j8; repo forall -c "pwd;git lfs install;git lfs pull"执行prebuilts下载脚本: bash build/prebuilts_download.sh
复制代码


发布于: 刚刚阅读数: 3
用户头像

离北况归

关注

还未添加个人签名 2022-03-26 加入

OpenHarmony啃论文俱乐部PIMF团队。 位于南京一学生,可私信。

评论

发布
暂无评论
OpenHarmony内核学习[1]--单独编译OpenHarmony标准系统内核_OpenHarmony_离北况归_InfoQ写作社区