当前位置: 首页 > 科技观察

OpenHarmony内核学习(一)——单独编译OpenHarmony标准系统内核

时间:2023-03-12 10:07:33 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com内核是内核的核心操作系统,学习掌握OpenHarmony内核对开发者来说至关重要。笔者整理学习OpenHarmony标准系统内核笔记如下:OpenHarmony标准系统内核OpenHarmony标准系统设备(参考内存≥128MiB),OpenHarmony选择Linux内核作为标准系统内核。OpenHarmony标准体系从Linux内核的LTS版本中选择合适的版本作为内核的基础版本。目前已经完成对Linux-4.19和Linux-5.10的适配和支持。Linux内核版本Linux内核版本分为稳定版和长期支持LTS(longtermsupport)版。稳定版大约每三个月发布一个新版本,包括最新的硬件支持、性能改进和错误修复。缺点是整体维护生命周期短,产品软件得不到长期稳定的支持。LTS是一个长期支持版本。“长期支持”体现在该版本内核的长期维护(bug和安全修复),一般维护周期达到6年。与维护周期为6个月到2年的非LTS内核版本相比,商业产品无法覆盖其完整的生命周期,这可能会使产品面临安全风险。并且LTS版本更新不会包含新的功能升级,保证了版本的稳定性。OpenHarmony的Linux内核是基于开源Linux内核LTS4.19.y/5.10.y分支进化而来的。基于此基线,圆形CVE补丁和OpenHarmony功能被用作OpenHarmonyCommonKernel基线。针对不同的芯片,各厂商集成相应的板级驱动补丁,完成对OpenHarmony的基线适配。Linux社区LTS4.19.y分支信息请查看内核官网。Linux社区LTS5.10.y分支信息请查看内核官网。内核的Patch组件模块,在编译构建过程中,针对特定的芯片平台集成相应的架构驱动代码,编译出相应的内核镜像。所有补丁源均遵守GPL-2.0协议。当前OpenHarmonyBeta3使用的内核版本是5.10.93,Beta4使用的内核版本是5.10.97。OpenHarmony标准系统内核源码目录单独编译OpenHarmony标准系统内核(以rk3568为例)。作者编译环境:wsl2+Ubuntu18.04+OpenHarmonyBeta3源码。首先在out/kernel/src_tmp/linux-5.10目录下打开终端,执行如下语句:#配置编译环境变量exportPRODUCT_COMPANY=hihopeexportDEVICE_COMPANY=rockchipexportDEVICE_NAME=rk3568exportKBUILD_OUTPUT=…/…/OBJ/linux-5.10/./make-ohos.shTB-RK3568X0#./make-ohos.shTB-RK3568X10也可以,但我不知道这是干嘛的。单独编译的结果是在.img目录下生成resource.img内核镜像和boot_linux。/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-rfout然后重新编译所有镜像文件知识来了withcompilingrk64Bit:使用DevEcoDeviceTool编译64位镜像并安装最新的依赖包:forone_toolsincurl-s-khttps://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list;做sudobash-c"apt-getinstall-y${one_tools}";doneOpenHarmony环境重置安装依赖:unix_time=`date'+%s'`;对于`curl-s-khttps://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list`中的one_tools;做echo"apt-getinstall-y${one_tools}">>/tmp/openharmony_deps_${unix_time}.sh;完毕;sudoapt-get更新;sudobash-x/tmp/openharmony_deps_${unix_time}.shdeleteout:rm-rfoutresetworkspace,deleteallchanges(记得备份你的代码):repoforall-c"p??wd;gitreset--hard;gitclean-fd”更新最新代码:reposync-c-j8;repoforall-c"p??wd;gitlfsinstall;gitlfspull"执行prebuilts下载脚本:bashbuild/prebuilts_download.sh想了解更多开源,请访问:开源基础软件社区https://ost.51cto.com