首页 > 其他分享 >OpenHarmony内核学习[1]--单独编译OpenHarmony标准系统内核

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

时间:2023-02-02 12:01:08浏览次数:64  
标签:OpenHarmony -- 编译 5.10 内核 版本 Linux

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

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

OpenHarmony标准系统内核

  • OpenHarmony标准系统类设备(参考内存≥128MiB),OpenHarmony选择Linux内核作为标准系统内核。
  • OpenHarmony标准系统从Linux内核LTS版本中选择合适的版本作为内核的基础版本,目前已完成对Linux-4.19及Linux-5.10的适配及支持。 image.png

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 image.png image.png

OpenHarmony标准系统内核源码目录

image.png image.png

单独编译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也是可以的,但是笔者不太清楚这个是用来干啥的

image.png

单独编译结果

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

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

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

重新编译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,--,编译,5.10,内核,版本,Linux
From: https://blog.51cto.com/harmonyos/6033458

相关文章

  • 转投高通平台,大众展露主导自动驾驶的野心
    2022年,英特尔几乎以亏本的价格推动Mobileye上市,成为市场上的一大看点。出现这种情况的原因,除了整个美国自动驾驶大环境不好,和Mobileye接连失去几个大客户......
  • 云原生场景下实现编译加速
    作者:京东零售王雷背景云原生下的流水线是通过启动容器来运行具体的功能步骤,每次运行流水线可能会被调度到不同的计算节点上。这会导致一个问题:容器运行完是不会保存数据的,......
  • 物联网毕业设计项目选题:harmonyos鸿蒙系统开发智能小车案例-hi3861v100开发板-留言领
    华清远见FS-Hi3861开发套件,支持HarmonyOS3.0系统。开发板主控Hi3861芯片内置WiFi功能,开发板板载资源丰富,包括传感器、执行器、NFC、显示屏等,同时还配套丰富的拓展模块。开......
  • 神奇的更改序号
    这是因为错误数据的原因,所以加上了groupby去去除重复的值SELECTCOUNT(p2.report_id)FROM(SELECTp.report_idFROM(SELECTpr.r......
  • 开启并分析DNS debug日志
    开启DNS调试日志,记录DNS查询日志  当文件达到20M后,会自动重写新日志DNSDeugLog,使用如下脚本进行分析脚本:##################################################......
  • js-设计模式-行为型-策略模式与状态模式的区别
    在js行为型设计模式中。策略模式与状态模式大同小异。下面,来说说它的区别。相同点:都会使用行为函数封装行为,通过委托来分发行为。不同点:策略模式中的行为函数会更加割裂,......
  • MySQL基础-约束
    1. 概念约束是作用域表中字段上的规则,用于限制存储子啊表中的数据2. 目的保证数据库中数据的正确、有效性和完整性3.分类注意: 约束是作用于表中字段......
  • H3C7506在同网段下ping出现间歇性延迟大,并伴随掉包和DUP!
    一、故障二、故障分析1、Vrrp震荡的原因因为bfd震荡,bfd震荡原因因为超时震荡。2、日志中发现设备会频繁收到TC报文,收到tc报文会导致arp进行老化处理,可能导致bfd震荡。......
  • 公共字段自动填充
    公共字段自动填充在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间和修改人等字段。这些字段属于公共字段,也就是很多表中都有......
  • Higher Order Functions Continued (array methods, function methods)
    HigherOrderFunctionsGreeeaaaat. What'sahigherorderfunction,though? →A higherorderfunction isafunctionthatdoesatleastoneofthefollowing......