1. Kernel手动编译
1.1 kernel查询帮助
使用./build.sh -h kernel查看kernel的详细编译命令如下所示。
图1.1编译内核
上图表示,单独编译kernel固件分为三步,进入kernel目录,选择默认配置文件,编译镜像。
1.2 kernel默认配置
对应平台的默认配置文件由./build.shlunch操作中选择的mk文件决定,如下所示。
图1.2选择SDK配置文件
配置完后,直接查看device/rockchip/rk356x/BoardConfig-rk3568-evb1-ddr4-v10.mk文件,由RK_KERNEL_DEFCONFIG和RK_KERNEL_DEFCONFIG_FRAGMENT决定,如下所示。
图1.3配置文件Kernel部分内容
另外还有RK_KERNEL_DTS指定配置的设备树。
1.3 kernel修改配置
首先导入上面指定的默认配置,操作命令如下:
cd kernel
make ARCH=arm64rockchip_linux_defconfig
进入menuconfig修改内核,命令如下所示。
make ARCH=arm64 menuconfig
进入配置界面如下所示。
图1.4内核配置
输入“/”可以进入menuconfig的搜索功能,如下所示。
图1.5内核查找配置
搜索功能可在复制的配置路径中快速寻找到所需的目标配置,例如输入“dhcp”查看该选项的描述,如下所示。
图1.6目标配置帮助
选项名为IP_PNP_DHCP,在menuconfig的名称由Prompt指定,选项配置的路径由Location指定,选项的依赖关系由Depends on指定。
使用空格键可以修改配置,按ESC键可以退出menuconfig。
1.4 kernel保存默认配置
输入以下命令可以覆盖默认配置。
make ARCH=arm64 savedefconfig
cp defconfig arch/arm64/configs/rockchip_linux_defconfig
注:建议覆盖前备份一下原始rockchip_linux_defconfig.
1.5 kernel编译固件
进入kernel目录,输入以下命令单独编译内核固件。
make ARCH=arm64rk3568-evb1-ddr4-v10-linux.img -j12
内核的编译结果如下所示。
图1.7编译完成打印
由此看出,内核固件组成部件为:resource.img(由设备树文件dtb、logo图片组成的)+Image(内核代码)。
1.6 kernel编译模块
输入以下命令可独立编译ko文件。
make ARCH=arm64 modules