1#!/bin/bash 2 3# Copyright (c) 2021-2023 HiHope Open Source Organization . 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16set -e 17 18pushd ${1} 19ROOT_DIR=${5} 20export PRODUCT_PATH=${4} 21export DEVICE_COMPANY=${6} 22export DEVICE_NAME=${7} 23export PRODUCT_COMPANY=${8} 24KERNEL_FORM=${9} 25KERNEL_PROD=${10} 26ENABLE_LTO_O0=${11} 27 28KERNEL_SRC_TMP_PATH=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10 29KERNEL_OBJ_TMP_PATH=${ROOT_DIR}/out/kernel/OBJ/linux-5.10 30KERNEL_SOURCE=${ROOT_DIR}/kernel/linux/linux-5.10 31KERNEL_PATCH_PATH=${ROOT_DIR}/kernel/linux/patches/linux-5.10 32KERNEL_PATCH=${ROOT_DIR}/kernel/linux/patches/linux-5.10/rk3568_patch/kernel.patch 33BUILD_SCRIPT_PATH=${3} 34NEWIP_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/newip/apply_newip.sh 35TZDRIVER_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/tzdriver/apply_tzdriver.sh 36XPM_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/xpm/apply_xpm.sh 37CED_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/container_escape_detection/apply_ced.sh 38HIDEADDR_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/memory_security/apply_hideaddr.sh 39QOS_AUTH_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/qos_auth/apply_qos_auth.sh 40UNIFIED_COLLECTION_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/ucollection/apply_ucollection.sh 41CODE_SIGN_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/code_sign/apply_code_sign.sh 42 43HARMONY_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10 44DEVICE_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10/${DEVICE_NAME} 45DEFCONFIG_BASE_FILE=${HARMONY_CONFIG_PATH}/base_defconfig 46DEFCONFIG_TYPE_FILE=${HARMONY_CONFIG_PATH}/type/standard_defconfig 47DEFCONFIG_FORM_FILE=${HARMONY_CONFIG_PATH}/form/${KERNEL_FORM}_defconfig 48DEFCONFIG_ARCH_FILE=${DEVICE_CONFIG_PATH}/arch/arm64_defconfig 49DEFCONFIG_PROC_FILE=${DEVICE_CONFIG_PATH}/product/${KERNEL_PROD}_defconfig 50 51RAMDISK_ARG="disable_ramdisk" 52MAKE_OHOS_ENV="GPUDRIVER=mali" 53export KBUILD_OUTPUT=${KERNEL_OBJ_TMP_PATH} 54 55source ${BUILD_SCRIPT_PATH}/kernel/kernel_source_checker.sh 56 57for i in "$@" 58do 59 case $i in 60 enable_ramdisk) 61 RAMDISK_ARG=enable_ramdisk 62 ;; 63 enable_mesa3d) 64 MAKE_OHOS_ENV="GPUDRIVER=mesa3d" 65 ;; 66 esac 67done 68 69function copy_and_patch_kernel_source() 70{ 71 rm -rf ${KERNEL_SRC_TMP_PATH} 72 mkdir -p ${KERNEL_SRC_TMP_PATH} 73 74 rm -rf ${KERNEL_OBJ_TMP_PATH} 75 mkdir -p ${KERNEL_OBJ_TMP_PATH} 76 77 cp -arf ${KERNEL_SOURCE}/* ${KERNEL_SRC_TMP_PATH}/ 78 79 cd ${KERNEL_SRC_TMP_PATH} 80 81 #HDF patch 82 bash ${ROOT_DIR}/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${KERNEL_PATCH_PATH} ${DEVICE_NAME} 83 84 #kernel patch 85 patch -p1 < ${KERNEL_PATCH} 86 87 #newip 88 if [ -f $NEWIP_PATCH_FILE ]; then 89 bash $NEWIP_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 90 fi 91 92 #tzdriver 93 if [ -f $TZDRIVER_PATCH_FILE ]; then 94 bash $TZDRIVER_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 95 fi 96 97 #xpm 98 if [ -f $XPM_PATCH_FILE ]; then 99 bash $XPM_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 100 fi 101 102 #ced 103 if [ -f $CED_PATCH_FILE ]; then 104 bash $CED_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 105 fi 106 107 #qos_auth 108 if [ -f $QOS_AUTH_PATCH_FILE ]; then 109 bash $QOS_AUTH_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 110 fi 111 112 #hideaddr 113 if [ -f $HIDEADDR_PATCH_FILE ]; then 114 bash $HIDEADDR_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 115 fi 116 117 #ucollection 118 if [ -f $UNIFIED_COLLECTION_PATCH_FILE ]; then 119 bash $UNIFIED_COLLECTION_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 120 fi 121 122 #code_sign 123 if [ -f $CODE_SIGN_PATCH_FILE ]; then 124 bash $CODE_SIGN_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 125 fi 126 127 cp -rf ${BUILD_SCRIPT_PATH}/kernel/logo* ${KERNEL_SRC_TMP_PATH}/ 128 129 #config 130 if [ ! -f "$DEFCONFIG_FORM_FILE" ]; then 131 DEFCONFIG_FORM_FILE= 132 echo "warning no form config file $(DEFCONFIG_FORM_FILE)" 133 fi 134 if [ ! -f "$DEFCONFIG_PROC_FILE" ]; then 135 DEFCONFIG_PROC_FILE= 136 echo "warning no prod config file $(DEFCONFIG_PROC_FILE)" 137 fi 138 bash ${ROOT_DIR}/kernel/linux/linux-5.10/scripts/kconfig/merge_config.sh -O ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/ -m ${DEFCONFIG_TYPE_FILE} ${DEFCONFIG_FORM_FILE} ${DEFCONFIG_ARCH_FILE} ${DEFCONFIG_PROC_FILE} ${DEFCONFIG_BASE_FILE} 139 mv ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/.config ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig 140 141 #selinux config patch 142 for arg in "$@"; do 143 if [ "$arg" = "is_release" ]; then 144 echo "close selinux kernel config CONFIG_SECURITY_SELINUX_DEVELOP in release version" 145 ${KERNEL_SOURCE}/scripts/config --file ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig -d SECURITY_SELINUX_DEVELOP 146 fi 147 done 148 149 if [ $MAKE_OHOS_ENV == "GPUDRIVER=mesa3d" ]; then 150 python ${ROOT_DIR}/third_party/mesa3d/ohos/modifyDtsi.py ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/rk3568.dtsi 151 fi 152} 153 154set +e 155is_kernel_change ${ROOT_DIR} 156KERNEL_SOURCE_CHANGED=$? 157set -e 158if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then 159 echo "kernel or it's deps changed, start source update." 160 copy_and_patch_kernel_source 161else 162 echo "no changes to kernel, skip source copy." 163fi 164 165cd ${KERNEL_SRC_TMP_PATH} 166 167eval $MAKE_OHOS_ENV ./make-ohos.sh TB-RK3568X0 $RAMDISK_ARG ${ENABLE_LTO_O0} 168 169mkdir -p ${2} 170 171if [ "enable_ramdisk" != "${12}" ]; then 172 cp ${KERNEL_OBJ_TMP_PATH}/boot_linux.img ${2}/boot_linux.img 173fi 174cp ${KERNEL_OBJ_TMP_PATH}/resource.img ${2}/resource.img 175cp ${3}/loader/MiniLoaderAll.bin ${2}/MiniLoaderAll.bin 176cp ${3}/loader/uboot.img ${2}/uboot.img 177 178if [ "enable_absystem" == "${14}" ]; then 179 cp ${3}/loader/parameter_ab.txt ${2}/parameter_ab.txt 180 cp ${3}/loader/config_ab.cfg ${2}/config_ab.cfg 181else 182 cp ${3}/loader/parameter.txt ${2}/parameter.txt 183 cp ${3}/loader/config.cfg ${2}/config.cfg 184fi 185 186popd 187 188../kernel/src_tmp/linux-5.10/make-boot.sh .. 189 190if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then 191 cp ${ROOT_DIR}/out/kernel/checkpoint/last_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.backup 192 cp ${ROOT_DIR}/out/kernel/checkpoint/current_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.info 193 echo "kernel compile finish, save build info." 194else 195 echo "kernel compile finish." 196fi 197