154 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| # Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd.
 | |
| set -e
 | |
| 
 | |
| usage() {
 | |
| 	cat >&2 << USAGE
 | |
| usage: $0 [-h] [-z] --boot_img BOOT_IMG [--out OUT] [--kernel KERNEL] [--ramdisk RAMDISK] [--second SECOND] [--dtb DTB ] [--recovery_dtbo RECOVERY_DTBO] -o OUTPUT
 | |
| 
 | |
| optional arguments:
 | |
|   -h, --help            show this help message and exit
 | |
|   -z                    pack compressed kernel image
 | |
|   --boot_img BOOT_IMG   path to the original boot image
 | |
|   --out OUT             path to out binaries (default: out)
 | |
|   --kernel KERNEL       path to the new kernel
 | |
|   --ramdisk RAMDISK     path to the new ramdisk
 | |
|   --second SECOND       path to the new 2nd bootloader (default: resource.img)
 | |
|   --dtb DTB             path to the new dtb
 | |
|   --recovery_dtbo RECOVERY_DTBO
 | |
|                         path to the new recovery DTBO
 | |
|   -o OUTPUT, --output OUTPUT
 | |
|                         output file name
 | |
| USAGE
 | |
| }
 | |
| 
 | |
| # Parse command-line arguments
 | |
| while [ $# -gt 0 ]; do
 | |
| 	case $1 in
 | |
| 		--boot_img)
 | |
| 			boot_img=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--out)
 | |
| 			out=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--kernel)
 | |
| 			kernel=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--ramdisk)
 | |
| 			ramdisk=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--second)
 | |
| 			second=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--dtb)
 | |
| 			dtb=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--recovery_dtbo)
 | |
| 			recovery_dtbo=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		-h)
 | |
| 			usage
 | |
| 			exit 0
 | |
| 			;;
 | |
| 		--help)
 | |
| 			usage
 | |
| 			exit 0
 | |
| 			;;
 | |
| 		-z)
 | |
| 			compressed_kernel=y
 | |
| 			shift
 | |
| 			;;
 | |
| 		-o)
 | |
| 			output=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		--output)
 | |
| 			output=$2
 | |
| 			shift 2
 | |
| 			;;
 | |
| 		*)
 | |
| 			shift
 | |
| 			;;
 | |
|         esac
 | |
| done
 | |
| 
 | |
| if [ "$boot_img" == "" -o ! -e "$boot_img" ]; then
 | |
| 	echo "No boot img"
 | |
| 	usage
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| if [ "$output" == "" ]; then
 | |
| 	echo "No output file name"
 | |
| 	usage
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| srctree=${srctree-"."}
 | |
| objtree=${objtree-"."}
 | |
| out=${out-"out"}
 | |
| 
 | |
| if [ "$kernel" == "" ]; then
 | |
| 	kernel=${kernel-$out/kernel}
 | |
| fi
 | |
| 
 | |
| if [ "$second" == "" ]; then
 | |
| 	second=${second-$out/second}
 | |
| fi
 | |
| 
 | |
| if [ "$ramdisk" == "" ]; then
 | |
| 	ramdisk=${ramdisk-$out/ramdisk}
 | |
| fi
 | |
| 
 | |
| if [ "$dtb" == "" ]; then
 | |
| 	dtb=${dtb-$out/dtb}
 | |
| fi
 | |
| 
 | |
| recovery_dtbo=${recovery_dtbo-$out/recovery_dtbo}
 | |
| log="$out/unpack.log"
 | |
| 
 | |
| mkdir -p $out
 | |
| $srctree/scripts/unpack_bootimg --boot_img $boot_img --out $out > $log
 | |
| 
 | |
| cmdline=$(grep -a "^command line args: " $log | tr '\0' '\n'| sed "s/^command line args: //")
 | |
| extra_cmdline=$(grep -a "^additional command line args: " $log | tr '\0' '\n'| sed "s/^additional command line args: //")
 | |
| version=$(grep -a "^boot image header version: " $log | sed "s/^boot image header version: //")
 | |
| os_version=$(grep -a "^os version: " $log | sed "s/^os version: //")
 | |
| os_patch_level=$(grep -a "^os patch level: " $log | sed "s/^os patch level: //")
 | |
| 
 | |
| dtb_size=$(grep -a "^dtb size: " $log | sed "s/^dtb size: //")
 | |
| dtb_size=${dtb_size:-0}
 | |
| if [ $dtb_size -gt 0 -a -e "$dtb" ]; then
 | |
| 	DTB="--dtb $dtb"
 | |
| fi
 | |
| 
 | |
| recovery_dtbo_size=$(grep -a "^recovery dtbo size: " $log | sed "s/^recovery dtbo size: //")
 | |
| recovery_dtbo_size=${recovery_dtbo_size:-0}
 | |
| if [ $recovery_dtbo_size -gt 0 -a -e "$recovery_dtbo" ]; then
 | |
| 	RECOVERY_DTBO="--recovery_dtbo $recovery_dtbo"
 | |
| fi
 | |
| 
 | |
| if [ $version -lt 3 ]; then
 | |
| 	SECOND="--second $second"
 | |
| fi
 | |
| 
 | |
| $srctree/scripts/mkbootimg \
 | |
| --kernel $kernel \
 | |
| $SECOND \
 | |
| --ramdisk $ramdisk \
 | |
| $DTB \
 | |
| $RECOVERY_DTBO \
 | |
| --cmdline "${cmdline}${extra_cmdline}" \
 | |
| --header_version $version \
 | |
| --os_version $os_version \
 | |
| --os_patch_level $os_patch_level \
 | |
| --output $output
 |