[][OpenWrt Dev][Add support to embed squashfs rootfs hash into kernel fit image]

[Description]
Add support to embed squashfs rootfs hash into kernel fit image

[Release-log]
N/A

Change-Id: Ic917b109ff8cb1f355ed2f954b6cfd49f0f09401
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/5605207
diff --git a/openwrt_patches-21.02/9992-fit-support-embed-squashfs-rootfs-hash.patch b/openwrt_patches-21.02/9992-fit-support-embed-squashfs-rootfs-hash.patch
new file mode 100644
index 0000000..6685427
--- /dev/null
+++ b/openwrt_patches-21.02/9992-fit-support-embed-squashfs-rootfs-hash.patch
@@ -0,0 +1,76 @@
+--- a/scripts/mkits.sh
++++ b/scripts/mkits.sh
+@@ -17,7 +17,7 @@
+ usage() {
+ 	printf "Usage: %s -A arch -C comp -a addr -e entry" "$(basename "$0")"
+ 	printf " -v version -k kernel [-D name -n address -d dtb] -o its_file"
+-	printf " [-s script] [-S key_name_hint] [-r ar_ver]"
++	printf " [-s script] [-S key_name_hint] [-r ar_ver] [-R rootfs]"
+ 
+ 	printf "\n\t-A ==> set architecture to 'arch'"
+ 	printf "\n\t-C ==> set compression type 'comp'"
+@@ -32,13 +32,14 @@ usage() {
+ 	printf "\n\t-o ==> create output file 'its_file'"
+ 	printf "\n\t-s ==> include u-boot script 'script'"
+ 	printf "\n\t-S ==> add signature at configurations and assign its key_name_hint by 'key_name_hint'"
+-	printf "\n\t-r ==> set anti-rollback version to 'fw_ar_ver' (dec)\n"
++	printf "\n\t-r ==> set anti-rollback version to 'fw_ar_ver' (dec)"
++	printf "\n\t-R ==> specify rootfs file for embedding hash\n"
+ 	exit 1
+ }
+ 
+ FDTNUM=1
+ 
+-while getopts ":A:a:c:C:D:d:e:k:n:o:v:s:S:r:" OPTION
++while getopts ":A:a:c:C:D:d:e:k:n:o:v:s:S:r:R:" OPTION
+ do
+ 	case $OPTION in
+ 		A ) ARCH=$OPTARG;;
+@@ -55,6 +56,7 @@ do
+ 		s ) UBOOT_SCRIPT=$OPTARG;;
+ 		S ) KEY_NAME_HINT=$OPTARG;;
+ 		r ) AR_VER=$OPTARG;;
++		R ) ROOTFS_FILE=$OPTARG;;
+ 		* ) echo "Invalid option passed to '$0' (options:$*)"
+ 		usage;;
+ 	esac
+@@ -89,6 +91,30 @@ if [ -n "${DTB}" ]; then
+ 	FDT_PROP="fdt = \"fdt-$FDTNUM\";"
+ fi
+ 
++# Conditionally create rootfs hash information
++if [ -f "${ROOTFS_FILE}" ]; then
++	ROOTFS_SIZE=$(stat -c %s ${ROOTFS_FILE})
++
++	ROOTFS_SHA1=$(sha1sum ${ROOTFS_FILE} | awk '{print "<0x"substr($0,1,8) " 0x"substr($0,9,8) " 0x"substr($0,17,8) " 0x"substr($0,25,8) " 0x"substr($0,33,8) ">"}')
++	ROOTFS_CRC32=$(crc32sum ${ROOTFS_FILE})
++
++	ROOTFS="
++	rootfs {
++		size = <${ROOTFS_SIZE}>;
++
++		hash-1 {
++			value = <0x${ROOTFS_CRC32}>;
++			algo = \"crc32\";
++		};
++
++		hash-2 {
++			value = ${ROOTFS_SHA1};
++			algo = \"sha1\";
++		};
++	};
++"
++fi
++
+ # Conditionally create script information
+ if [ -n "${UBOOT_SCRIPT}" ]; then
+ 	SCRIPT="\
+@@ -167,6 +193,8 @@ ${FDT_NODE}
+ ${SCRIPT}
+ 	};
+ 
++${ROOTFS}
++
+ 	configurations {
+ 		default = \"${CONFIG}\";
+ 		${CONFIG} {
diff --git a/openwrt_patches-21.02/9993-fit-embed-squashfs-rootfs-hash-into-kernel-fit-image.patch b/openwrt_patches-21.02/9993-fit-embed-squashfs-rootfs-hash-into-kernel-fit-image.patch
new file mode 100644
index 0000000..df26bf7
--- /dev/null
+++ b/openwrt_patches-21.02/9993-fit-embed-squashfs-rootfs-hash-into-kernel-fit-image.patch
@@ -0,0 +1,12 @@
+--- a/include/image-commands.mk
++++ b/include/image-commands.mk
+@@ -203,7 +203,8 @@ define Build/fit
+ 		-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+ 		$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
+ 		-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
+-		-A $(LINUX_KARCH) -v $(LINUX_VERSION)
++		-A $(LINUX_KARCH) -v $(LINUX_VERSION) \
++		$(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),-R $(ROOTFS/squashfs/$(DEVICE_NAME)))
+ 	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
+ 	@mv $@.new $@
+ endef