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
 |