From 2a65ab3afc43e95c256d9126f28463cbb0426967 Mon Sep 17 00:00:00 2001 From: Zachery Wu Date: Wed, 22 Sep 2021 12:00:04 +0800 Subject: [PATCH] modify README Signed-off-by: Zachery Wu Change-Id: I55bf1eba44600c170e7fe45984718e056d8b5ca6 --- README_zh.md | 111 ++++++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/README_zh.md b/README_zh.md index 000b709..43745ea 100644 --- a/README_zh.md +++ b/README_zh.md @@ -3,27 +3,27 @@ - [简介](#section11660541593) - [内核的Config组成模块](#section28381947133910) - [目录](#section161941989596) -- [使用](#section1393789267) - - [使用说明](#section1352114469620) - - [构建指导](#section72118467716) - -- [以hi3516dv300开源开发板+ubuntu x86主机开发环境为例](#section19369206113115) - - [场景1:版本级编译原生方式](#section1025111193220) - - [场景2:单独编译修改后的内核](#section17446652173211) - +- [使用说明](#section1393789267) +- [构建说明](#section19369206113115) - [相关仓](#section1371113476307) ## 简介 -OpenHarmony的Linux内核基于开源Linux内核LTS 4.19.y分支演进,为满足不同的内核场景诉求,针对性地合入CVE补丁 + OpenHarmony 特性 + vendor厂商具体的板级芯片驱动补丁从而构成完整的内核基线。 +OpenHarmony的Linux内核基于开源Linux内核LTS **4.19.y / 5.10.y** 分支演进,在此基线基础上,回合CVE补丁及OpenHarmony特性,作为OpenHarmony Common Kernel基线。针对不同的芯片,各厂商合入对应的板级驱动补丁,完成对OpenHarmony的基线适配。 + +Linux社区LTS 4.19.y分支信息请查看[kernel官网](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-4.19.y); -Linux社区LTS 4.19.y分支信息请查看[kernel官网](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-4.19.y)。 +Linux社区LTS 5.10.y分支信息请查看[kernel官网](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.10.y)。 ## 内核的Config组成模块 1. 通用配置文件 -针对标准系统给出对应的参考通用配置文件:standard\_common\_defconfig,以便于各开发者参考。 +针对不同的内核版本,config将给出不同内核版本的对应不同的系统的参考通用配置文件,如下: + +针对标准系统给出对应的参考通用配置文件:standard\_common\_defconfig; + +针对小型系统给出对应的参考通用配置文件:small\_common\_defconfig。 2. 开源开发板配置文件 @@ -32,70 +32,71 @@ Linux社区LTS 4.19.y分支信息请查看[kernel官网](https://git.kernel.org/ ## 目录 ``` -kernel/linux/config/linux-4.19 # 内核config - └── standard_common_defconfig # 标准系统的内核的common defconfig - └── hi3516dv300_emmc_smp_hos_l2_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300标准系统的defconfig +kernel/linux/config +├── linux-4.19 +│   └── arch +│   └── arm +│   └── configs +│   ├── hi3516dv300_small_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300小型系统的defconfig +│   ├── hi3516dv300_standard_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300标准系统的defconfig +│   ├── small_common_defconfig # 小型系统的内核的common defconfig +│   └── standard_common_defconfig # 标准系统的内核的common defconfig +└── linux-5.10 + └── arch + └── arm + └── configs +    ├── hi3516dv300_small_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300小型系统的defconfig +    ├── hi3516dv300_standard_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300标准系统的defconfig +    ├── small_common_defconfig # 小型系统的内核的common defconfig +    └── standard_common_defconfig # 标准系统的内核的common defconfig ``` -## 使用 - -### 使用说明 +## 使用说明 -如需使用上述config,以Hi3516DV300开发板调试为例,需要在内核代码完成对应芯片驱动patch的合入。 +1. 合入HDF补丁 -1. 合入芯片平台驱动补丁 - -针对不同芯片平台合入对应的patch,以Hi3516DV300为例: +在kernel/linux/build仓中,按照kernel.mk中HDF的补丁合入方法,合入不同内核版本对应的HDF内核补丁: ``` -patch -p1 < device/hisilicon/hi3516dv300/sdk_linux/open_source/linux/hisi_linux-4.19_hos_l2.patch +$(OHOS_BUILD_HOME)/drivers/adapter/khdf/linux/patch_hdf.sh $(OHOS_BUILD_HOME) $(KERNEL_SRC_TMP_PATH) $(HDF_PATCH_FILE) ``` ->![](public_sys-resources/icon-notice.gif) **须知:** ->由于OpenHarmony工程的编译构建流程中会拷贝kernel/linux-4.19的代码环境后进行打补丁动作,在使用OpenHarmony的版本级编译命令前,需要kernel/linux-4.19保持原代码环境。 - -2. 复制defconfig到kernel/linux-4.19/arch/arm/configs下 - -### 构建指导 - -## 以hi3516dv300开源开发板+ubuntu x86主机开发环境为例 +2. 合入芯片平台驱动补丁 -### 场景1:版本级编译原生方式 +以Hi3516DV300为例: -使用工程的全量编译命令,编译生成uImage内核镜像 +在kernel/linux/build仓中,按照kernel.mk中的芯片组件所对应的patch路径规则及命名规则,讲对应的芯片组件patch放到对应路径下: ``` -./build.sh --product-name Hi3516DV300 # 编译hi3516dv300的uImage内核镜像 +DEVICE_PATCH_DIR := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$(DEVICE_NAME)_patch +DEVICE_PATCH_FILE := $(DEVICE_PATCH_DIR)/$(DEVICE_NAME).patch ``` -### 场景2:单独编译修改后的内核 - -1. 准备工作 - - 准备编译环境,可以使用开源arm clang/gcc编译器,或者使用工程自带编译器。 +3. 修改自己所需要编译的config - 进入工程主目录配置环境变量: +在kernel/linux/build仓中,按照kernel.mk中的芯片组件所对应的patch路径规则及命名规则,讲对应的芯片组件config放到对应路径下: - ``` - export PATH=`pwd`/prebuilts/clang/host/linux-x86/clang-r353983c/bin:`pwd`/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/:$PATH # 配置编译环境 - MAKE_OPTIONES="ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CC=clang HOSTCC=clang" # 使用工程项目自带的clang环境 - ``` - -2. 修改内核代码或内核config (OpenHarmony提供对应平台的defconfig供参考)。 -3. 创建编译目录及生成内核.config。 - - ``` - make ${MAKE_OPTIONES} hi3516dv300_emmc_smp_hos_l2_defconfig # 使用自带的默认config 构建内核 - ``` +``` +KERNEL_CONFIG_PATH := $(OHOS_BUILD_HOME)/kernel/linux/config/${KERNEL_VERSION} +DEFCONFIG_FILE := $(DEVICE_NAME)_$(BUILD_TYPE)_defconfig +``` -4. 编译生成对应的内核Image。 +>![](public_sys-resources/icon-notice.gif) **须知:** +> +>由于OpenHarmony工程的编译构建流程中会拷贝kernel/linux/linux-\*\.\*的代码环境后进行打补丁动作,在使用OpenHarmony的版本级编译命令前,需要kernel/linux/linux-\*\.\*原代码环境。 +> +>根据不同系统工程,编译完成后会在out目录下的kernel目录中生成对应实际编译的内核,基于此目录的内核,进行对应的config修改,将最后生成的\.config文件cp到config仓对应的路径文件里,即可生效。 - ``` - make ${MAKE_OPTIONES} -j32 uImage # 编译uImage内核镜像 - ``` +## 构建说明 +以hi3516dv300开源开发板+ubuntu x86主机开发环境为例 +使用工程的全量编译命令,编译生成uImage内核镜像 -## 相关仓 +``` +./build.sh --product-name Hi3516DV300 # 编译hi3516dv300镜像 + --build-target build_kernel # 编译hi3516dv300的uImage内核镜像 + --gn-args linux_kernel_version=\"linux-5.10\" # 编译指定内核版本 +``` kernel\_linux\_config -- Gitee