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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenHarmony内核学习[1]--单独编译OpenHarmony标准系统内核相关的知识,希望对你有一定的参考价值。

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

  • 阅读本文大约需要15分钟。 (目录)

OpenHarmony标准系统内核

  • OpenHarmony标准系统类设备(参考内存≥128MiB),OpenHarmony选择Linux内核作为标准系统内核。
  • OpenHarmony标准系统从Linux内核LTS版本中选择合适的版本作为内核的基础版本,目前已完成对Linux-4.19及Linux-5.10的适配及支持。
  • 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=hihope
export DEVICE_COMPANY=rockchip
export DEVICE_NAME=rk3568
export 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
重置工作区,删除所有修改(记得备份你的代码): 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

本文作者:离北况归

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​

以上是关于OpenHarmony内核学习[1]--单独编译OpenHarmony标准系统内核的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式AI全志 XR806 OpenHarmony 鸿蒙系统固件编译

鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 百篇博客分析OpenHarmony源码 | v65.01

鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码 | v64.01

鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码 | v63.01

#冲刺创作新星# O了个H(OpenHarmony羊了个羊复刻学习)

嵌入式AI全志 XR806 OpenHarmony 鸿蒙系统固件烧录