155 lines
7.5 KiB
PHP
Executable File
155 lines
7.5 KiB
PHP
Executable File
#DEPENDS += "dtbtool-native mkbootimg-native"
|
|
|
|
UNISOC_BOOTIMG_ROOTFS ?= "undefined"
|
|
|
|
KERNEL_COMPRESS_TYPE ?= "none"
|
|
|
|
# set output file names
|
|
BOOT_IMAGE_BASE_NAME = "boot"
|
|
|
|
DEPENDS += "lzop-native lz4-native bzip2-native gzip-native unisoc-sign-native"
|
|
|
|
DEPENDS += "mkkernelimg-native "
|
|
inherit sign_unisoc_binary
|
|
UNISOC_SIGN_ENABLE ?= "no"
|
|
|
|
PROVIDES += "virtual/linux-kernel"
|
|
|
|
|
|
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() {
|
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${STAGING_LIBDIR_NATIVE}"
|
|
|
|
# add symbol link for the first dtb
|
|
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/Image-${KERNEL_DTB_LINK_NAME}.$dtb_ext
|
|
break
|
|
done
|
|
|
|
# add symbol link for the first dtbo
|
|
for dtbf in ${KERNEL_DEVICETREE_OVERLAY}; do
|
|
dtb=`normalize_dtb "$dtbf"`
|
|
dtb_ext=${dtb##*.}
|
|
dtb_base_name=`basename $dtb .$dtb_ext`
|
|
ln -sf $dtb_base_name.$dtb_ext $deployDir/Image-${KERNEL_DTB_LINK_NAME}-overlay.$dtb_ext
|
|
break
|
|
done
|
|
|
|
# for kernel5.4 not use boot.img, use Image
|
|
if false; then
|
|
# mkbootimg requires an initrd file, make fake one that will be ignored
|
|
# during boot
|
|
echo "This is not an initrd" > ${B}/ramdisk.img
|
|
gzip ${B}/ramdisk.img
|
|
mv ${B}/ramdisk.img.gz ${DEPLOYDIR}/ramdisk.img
|
|
|
|
if [ -z ${KERNEL_DEVICETREE} ] ; then
|
|
mkbootimg_dtarg=""
|
|
else
|
|
DT_IMAGE_BASE_NAME="dt"
|
|
${STAGING_BINDIR_NATIVE}/dtbTool -o ${DEPLOYDIR}/${DT_IMAGE_BASE_NAME}.img \
|
|
-s ${UNISOC_BOOTIMG_PAGE_SIZE} \
|
|
-p ${B}/scripts/dtc/ \
|
|
${B}/arch/${ARCH}/boot/dts/`dirname ${KERNEL_DEVICETREE}`/
|
|
mkbootimg_dtarg="--dt ${DEPLOYDIR}/${DT_IMAGE_BASE_NAME}.img"
|
|
sign_unisoc_bin "${DEPLOYDIR}/${DT_IMAGE_BASE_NAME}.img"
|
|
fi
|
|
|
|
if [ ${KERNEL_IMAGETYPE} = "Image" ] ;then
|
|
|
|
case "${KERNEL_COMPRESS_TYPE}" in
|
|
lzo)
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.bak
|
|
${STAGING_BINDIR_NATIVE}/lzop -f ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.lzo ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}-${KERNEL_COMPRESS_TYPE}
|
|
;;
|
|
lz4)
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.bak
|
|
${STAGING_BINDIR_NATIVE}/lz4 -zf ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.lz4
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.lz4 ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}-${KERNEL_COMPRESS_TYPE}
|
|
;;
|
|
bzip2)
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.bak
|
|
${STAGING_BINDIR_NATIVE}/bzip2-native/bzip2 -zkf ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.bz2 ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}-${KERNEL_COMPRESS_TYPE}
|
|
;;
|
|
gzip)
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.bak
|
|
# ${STAGING_DIR_NATIVE}/bin/gzip -knf ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
|
|
${STAGING_DIR_NATIVE}/${bindir}/gzip -knf ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
|
|
install ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}.gz ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}-${KERNEL_COMPRESS_TYPE}
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if [ ${KERNEL_COMPRESS_TYPE} != "none" ] ;then
|
|
${STAGING_BINDIR_NATIVE}/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE}-${KERNEL_COMPRESS_TYPE} \
|
|
${UNISOC_MKBOOTIMG_ARGS} \
|
|
--ramdisk ${DEPLOYDIR}/ramdisk.img \
|
|
--output ${DEPLOYDIR}/${BOOT_IMAGE_BASE_NAME}.img \
|
|
${mkbootimg_dtarg} \
|
|
--pagesize ${UNISOC_BOOTIMG_PAGE_SIZE} \
|
|
--base ${UNISOC_BOOTIMG_KERNEL_BASE} \
|
|
--cmdline "${CMDLINE}"
|
|
else
|
|
${STAGING_BINDIR_NATIVE}/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
|
|
${UNISOC_MKBOOTIMG_ARGS} \
|
|
--ramdisk ${DEPLOYDIR}/ramdisk.img \
|
|
--output ${DEPLOYDIR}/${BOOT_IMAGE_BASE_NAME}.img \
|
|
${mkbootimg_dtarg} \
|
|
--pagesize ${UNISOC_BOOTIMG_PAGE_SIZE} \
|
|
--base ${UNISOC_BOOTIMG_KERNEL_BASE} \
|
|
--cmdline "${CMDLINE}"
|
|
fi
|
|
|
|
sign_unisoc_bin "${DEPLOYDIR}/${BOOT_IMAGE_BASE_NAME}.img"
|
|
fi
|
|
|
|
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}/ramdisk.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}
|
|
else
|
|
echo "not use packed kernel"
|
|
fi
|
|
|
|
if [ -n "${KERNEL_DEVICETREE_OVERLAY}" ] ; then
|
|
install -d ${DEPLOYDIR}
|
|
install -m 0666 ${B}/arch/${ARCH}/boot/dts/${KERNEL_DEVICETREE_OVERLAY} ${DEPLOYDIR}
|
|
# ${STAGING_BINDIR_NATIVE}/mkdtimg create ${DEPLOYDIR}/dtbo.img ${B}/arch/${ARCH}/boot/dts/${KERNEL_DEVICETREE_OVERLAY}
|
|
# sign_unisoc_bin "${DEPLOYDIR}/dtbo.img"
|
|
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}-overlay.dtbo"
|
|
fi
|
|
|
|
if [ -e "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.dtb" ] ; then
|
|
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.dtb"
|
|
fi
|
|
|
|
if [ -e "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin" ] ; then
|
|
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
|
fi
|
|
|
|
if [ -e "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" ] ; then
|
|
sign_unisoc_bin "${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin"
|
|
fi
|
|
}
|