Files
BPI-M2C/source_sync_rls_25c/layers/meta-unisoc/recipes-kernel/linux/recovery.inc
T

101 lines
4.3 KiB
PHP
Raw Normal View History

2026-09-22 09:38:26 +08:00
DESCRIPTION = "Recovery image"
SRCREV_FORMAT = "kernel"
KERNEL_IMAGETYPE ?= "Image"
KERNEL_PACKAGE_NAME := "recovery-kernel"
KERNEL_DEPLOYSUBDIR := "recovery"
UNISOC_SUBDIR_RECOVERY := "${KERNEL_DEPLOYSUBDIR}"
PROVIDES += "virtual/recovery-kernel"
KERNEL_IMAGE_BASE_NAME := "recovery"
KERNEL_PATCH_FOR_RECOVERY ?= "${KERNEL_MACHINE_PATCH}"
KERNEL_RECOVERY_DEVICETREE ?= ""
KERNEL_RECOVERY_DEFCONFIG ?= "${KERNEL_DEFCONFIG}"
KERNEL_DEVICETREE := "${KERNEL_RECOVERY_DEVICETREE}"
KBUILD_DEFCONFIG := "${KERNEL_RECOVERY_DEFCONFIG}"
UNISOC_RECOVERY_CMDLINE ?= "${CMDLINE}"
inherit sign_unisoc_binary
UNISOC_SIGN_ENABLE ?= "no"
inherit pythonnative
#inherit kernel
#do_compile[depends] += "recovery-image:do_image_complete"
#DEPENDS += "dtbtool-native mkbootimg-native unisoc-sign-native"
DEPENDS += "unisoc-sign-native"
DEPENDS += "mkkernelimg-native "
normalize_dtb () {
dtb="$1"
if echo $dtb | grep -q '/dts/'; then
bbwarn "$dtb contains the full path to the the dts file, but only the dtb name should be used."
dtb=`basename $dtb | sed 's,\.dts$,.dtb,g'`
fi
echo "$dtb"
}
do_deploy:append() {
##mv ${DEPLOYDIR}//*.dtb ${DEPLOYDIR}/${UNISOC_SUBDIR_RECOVERY}/
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
dtb_ext=${dtb##*.}
dtb_base_name=`basename $dtb .$dtb_ext`
ln -sf $dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext $deployDir/recovery-${KERNEL_DTB_LINK_NAME}.$dtb_ext
break
done
if false; then
mkbootimg_dtarg=""
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${STAGING_LIBDIR_NATIVE}"
${STAGING_BINDIR_NATIVE}/dtbTool -o ${DEPLOYDIR}/${UNISOC_SUBDIR_RECOVERY}/dt.img -s ${UNISOC_BOOTIMG_PAGE_SIZE} -p ${B}/scripts/dtc/ ${B}/arch/${ARCH}/boot/dts/`dirname ${KERNEL_DEVICETREE}`/
mkbootimg_dtarg="--dt ${DEPLOYDIR}/${UNISOC_SUBDIR_RECOVERY}/dt.img"
${STAGING_BINDIR_NATIVE}/mkbootimg --kernel ${DEPLOYDIR}/${UNISOC_SUBDIR_RECOVERY}/${KERNEL_IMAGETYPE} \
${UNISOC_MKBOOTIMG_ARGS} \
--ramdisk ${DEPLOY_DIR_IMAGE}/swupdate-image-${MACHINE}.cpio.gz \
--output ${DEPLOYDIR}/recovery.img \
$mkbootimg_dtarg \
--pagesize ${UNISOC_BOOTIMG_PAGE_SIZE} \
--base ${UNISOC_BOOTIMG_KERNEL_BASE} \
--cmdline \
"${UNISOC_RECOVERY_CMDLINE}"
sign_unisoc_bin "${DEPLOYDIR}/recovery.img"
fi
if [ -e "${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin" ] ; then
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
fi
if [ -e "${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/recovery-${MACHINE}.dtb" ] ; then
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/recovery-${MACHINE}.dtb"
fi
}
# kernel new packed: Image + ramdisk + dt = kernel.img (boot.img)
# ${PYTHON} ${STAGING_BINDIR_NATIVE}/mkkernelimg.py --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
# --ramdisk ${DEPLOYDIR}/ramdisk.img \
# --output ${DEPLOYDIR}/kernel.img \
# --dt ${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.dtb \
# --pagesize ${UNISOC_BOOTIMG_PAGE_SIZE}
do_deploy:append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'packed-kernel', 'true', 'false', d)}; then
echo "use packed kernel"
echo "This is not an initrd" > ${B}/ramdisk.img
gzip ${B}/ramdisk.img
mv ${B}/ramdisk.img.gz ${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/ramdisk.img
${PYTHON} ${STAGING_BINDIR_NATIVE}/mkkernelimg.py \
--kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
--ramdisk ${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/ramdisk.img \
--output ${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/recovery-kernel.img \
--dt ${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}/recovery-${MACHINE}.dtb \
--pagesize ${UNISOC_BOOTIMG_PAGE_SIZE}
else
echo "not use packed kernel"
fi
}
do_deploy[nostamp] = "1"