Files
device_rockchip/common/mk-ramdisk.sh
Zain Wang aad3b6c633 common: add encrypt-system build operation
Signed-off-by: Zain Wang <wzz@rock-chips.com>
Change-Id: I8c20af3fa256d9f933d130f2bf371b5c9c9de053
2022-03-23 11:16:15 +08:00

150 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
set -e
rk_ramdisk_security_bootup_normal()
{
echo "[$0] Build ramdisk with sha256 digest"
ROOTFS_IMAGE_DIGEST=$(dirname $ROOTFS_IMAGE)/ramdisk.gz.digest
openssl dgst -sha256 -binary -out $ROOTFS_IMAGE_DIGEST $ROOTFS_IMAGE || exit 1
rootfs_image_digest_size=$(du -b $ROOTFS_IMAGE |sed -r -e 's/[[:space:]]+.*$//')
if [ "$RK_ARCH" == "arm" ]; then
kernel_dts_file="kernel/arch/arm/boot/dts/$RK_KERNEL_DTS.dts"
else
kernel_dts_file="kernel/arch/arm64/boot/dts/rockchip/$RK_KERNEL_DTS.dts"
fi
cp $kernel_dts_file ${kernel_dts_file}.backup
cat << EOF >> ${kernel_dts_file}
&ramdisk_c {
size = <$rootfs_image_digest_size>;
hash {
algo = "sha256";
value = /incbin/("$ROOTFS_IMAGE_DIGEST");
};
};
EOF
./build.sh kernel
mv ${kernel_dts_file}.backup $kernel_dts_file
}
rk_ramdisk_build_init()
{
echo "Try to build init for $1"
if [ "$RK_SYSTEM_CHECK_METHOD" = "DM-V" ]; then
SYSTEM_IMAGE=$TOP_DIR/buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.squashfs
else
SYSTEM_IMAGE=$TOP_DIR/buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.${RK_ROOTFS_TYPE}
fi
if [ ! -e "$SYSTEM_IMAGE" ]; then
echo "ERROR: Please build system first"
exit -1
fi
$COMMON_DIR/mk-dm.sh $1 $SYSTEM_IMAGE
}
COMMON_DIR=$(cd `dirname $0`; pwd)
if [ -h $0 ]
then
CMD=$(readlink $0)
COMMON_DIR=$(dirname $CMD)
fi
cd $COMMON_DIR
cd ../../..
TOP_DIR=$(pwd)
RAMDISK_IMG=$1
RAMDISK_CFG=$2
RAMDISK_TYPE=$RK_RAMBOOT_TYPE
echo "config is $RAMDISK_CFG"
if [ -z $RAMDISK_CFG ]
then
echo "config for building $RAMDISK_IMG doesn't exist, skip!"
exit 0
fi
BOARD_CONFIG=$TOP_DIR/device/rockchip/.BoardConfig.mk
source $BOARD_CONFIG
if [ -z $RK_KERNEL_ZIMG ]; then
KERNEL_IMAGE=$TOP_DIR/$RK_KERNEL_IMG
else
KERNEL_IMAGE=$TOP_DIR/$RK_KERNEL_ZIMG
fi
KERNEL_DTB=$TOP_DIR/kernel/resource.img
# build kernel
if [ -f $KERNEL_IMAGE ]
then
echo "found kernel image"
else
echo "kernel image doesn't exist, now build kernel image"
$TOP_DIR/build.sh kernel
if [ $? -eq 0 ]; then
echo "build kernel done"
else
exit 1
fi
fi
source $TOP_DIR/buildroot/build/envsetup.sh $RAMDISK_CFG
CPIO_IMG=$TOP_DIR/buildroot/output/$RAMDISK_CFG/images/rootfs.cpio.gz
ROMFS_IMG=$TOP_DIR/buildroot/output/$RAMDISK_CFG/images/rootfs.romfs
TARGET_IMAGE=$TOP_DIR/buildroot/output/$RAMDISK_CFG/images/$RAMDISK_IMG
if [ -z $RAMDISK_TYPE ]
then
RAMDISK_TYPE=CPIO
fi
eval ROOTFS_IMAGE=\$${RAMDISK_TYPE}_IMG
if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then
case "$RK_SYSTEM_CHECK_METHOD" in
"DM-V" | "DM-E")
rk_ramdisk_build_init $RK_SYSTEM_CHECK_METHOD
;;
*)
echo "do nothing ($RK_SYSTEM_CHECK_METHOD)"
esac
fi
# build ramdisk
echo "====Start build $RAMDISK_CFG===="
$TOP_DIR/buildroot/utils/brmake
if [ $? -eq 0 ]; then
echo "log saved on $TOP_DIR/br.log"
echo "====Build $RAMDISK_CFG ok!===="
else
echo "log saved on $TOP_DIR/br.log"
echo "====Build $RAMDISK_CFG failed!===="
tail -n 100 $TOP_DIR/br.log
exit 1
fi
if [ $RAMDISK_TYPE == ROMFS ]
then
# Do compress for tinyrootfs
cat $ROOTFS_IMAGE | gzip -n -f -9 > $ROOTFS_IMAGE.gz
cat $KERNEL_IMAGE | gzip -n -f -9 > $KERNEL_IMAGE.gz
ROOTFS_IMAGE=$ROOTFS_IMAGE.gz
KERNEL_IMAGE=$KERNEL_IMAGE.gz
fi
echo -n "pack $RAMDISK_IMG..."
if [ -f "$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_RECOVERY_FIT_ITS" ];then
if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then
if [ -z "$RK_SYSTEM_CHECK_METHOD" ]; then
rk_ramdisk_security_bootup_normal $0
fi
fi
$COMMON_DIR/mk-fitimage.sh $TARGET_IMAGE $TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_RECOVERY_FIT_ITS $ROOTFS_IMAGE $KERNEL_IMAGE
else
$TOP_DIR/kernel/scripts/mkbootimg --kernel $KERNEL_IMAGE --ramdisk $ROOTFS_IMAGE --second $KERNEL_DTB -o $TARGET_IMAGE
fi
echo "done."