移植概述
Linux内核移植主要涉及基于linux内核基线合入三方芯片补丁后,进行基础的内核编译构建及验证。
基本信息
当前Linux内核基线是基于Linux社区 4.19 LTS版本演进,合入CVE及bugfix补丁。具体信息参考代码库,对应repo工程代码路径为kernel/linux-4.19
。
Bootloader
可以使用芯片厂商自带的Bootloader,或者是开源Uboot等加载内核镜像。比如为支持Hi3516DV300开发板,OpenHarmony引入的开源Uboot。
适配编译和烧录启动
-
准备内核config(特别是芯片相关的config)。
config文件所在源码目录:
kernel/linux/config/
以hi3516dv300芯片为例,可在对应的
linux-4.19/arch/arm/configs/
目录下新建<YOUR_CHIP>_small_defconfig,如hi3516dv300_small_defconfig
表示针对hi3516dv300小型系统的defconfig。该config文件可以由基础defconfig文件small_common_defconfig
与该芯片相关的config组合生成。 -
准备芯片补丁。
补丁文件所在源码目录:
kernel/linux/patches/linux-4.19
以hi3516dv300芯片为例,参考已有的patch目录hi3516dv300_small_patch目录,新建<YOUR_CHIP>_patch目录,放置相关芯片补丁,注意hdf.patch等驱动补丁。
-
编译。
具体内核编译入口脚本位于工程目录
kernel/linux/patches/
下面,版本级整编命令会通过BUILD.gn进入kernel_module_build.sh
和kernel.mk
,需要在这2个文件中针对性进行patch及defconfig文件路径、编译器、芯片架构、内核Image格式等的适配。通过编译错误日志调整补丁,典型错误场景:
(1)补丁合入失败,出现冲突,需要进行上下文适配修改。
(2)编译失败,内核版本差异(函数实现调整等)需要针对性进行内核适配。
注意:
-
参考
kernel.mk
,在OpenHarmon
-