13d0407baSopenharmony_ci#!/bin/bash 23d0407baSopenharmony_ci# SPDX-License-Identifier: GPL-2.0 33d0407baSopenharmony_ci# Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. 43d0407baSopenharmony_ciset -e 53d0407baSopenharmony_ci 63d0407baSopenharmony_ciusage() { 73d0407baSopenharmony_ci cat >&2 << USAGE 83d0407baSopenharmony_ciusage: $0 [-h] [-z] --boot_img BOOT_IMG [--out OUT] [--kernel KERNEL] [--ramdisk RAMDISK] [--second SECOND] [--dtb DTB ] [--recovery_dtbo RECOVERY_DTBO] -o OUTPUT 93d0407baSopenharmony_ci 103d0407baSopenharmony_cioptional arguments: 113d0407baSopenharmony_ci -h, --help show this help message and exit 123d0407baSopenharmony_ci -z pack compressed kernel image 133d0407baSopenharmony_ci --boot_img BOOT_IMG path to the original boot image 143d0407baSopenharmony_ci --out OUT path to out binaries (default: out) 153d0407baSopenharmony_ci --kernel KERNEL path to the new kernel 163d0407baSopenharmony_ci --ramdisk RAMDISK path to the new ramdisk 173d0407baSopenharmony_ci --second SECOND path to the new 2nd bootloader (default: resource.img) 183d0407baSopenharmony_ci --dtb DTB path to the new dtb 193d0407baSopenharmony_ci --recovery_dtbo RECOVERY_DTBO 203d0407baSopenharmony_ci path to the new recovery DTBO 213d0407baSopenharmony_ci -o OUTPUT, --output OUTPUT 223d0407baSopenharmony_ci output file name 233d0407baSopenharmony_ciUSAGE 243d0407baSopenharmony_ci} 253d0407baSopenharmony_ci 263d0407baSopenharmony_ci# Parse command-line arguments 273d0407baSopenharmony_ciwhile [ $# -gt 0 ]; do 283d0407baSopenharmony_ci case $1 in 293d0407baSopenharmony_ci --boot_img) 303d0407baSopenharmony_ci boot_img=$2 313d0407baSopenharmony_ci shift 2 323d0407baSopenharmony_ci ;; 333d0407baSopenharmony_ci --out) 343d0407baSopenharmony_ci out=$2 353d0407baSopenharmony_ci shift 2 363d0407baSopenharmony_ci ;; 373d0407baSopenharmony_ci --kernel) 383d0407baSopenharmony_ci kernel=$2 393d0407baSopenharmony_ci shift 2 403d0407baSopenharmony_ci ;; 413d0407baSopenharmony_ci --ramdisk) 423d0407baSopenharmony_ci ramdisk=$2 433d0407baSopenharmony_ci shift 2 443d0407baSopenharmony_ci ;; 453d0407baSopenharmony_ci --second) 463d0407baSopenharmony_ci second=$2 473d0407baSopenharmony_ci shift 2 483d0407baSopenharmony_ci ;; 493d0407baSopenharmony_ci --dtb) 503d0407baSopenharmony_ci dtb=$2 513d0407baSopenharmony_ci shift 2 523d0407baSopenharmony_ci ;; 533d0407baSopenharmony_ci --recovery_dtbo) 543d0407baSopenharmony_ci recovery_dtbo=$2 553d0407baSopenharmony_ci shift 2 563d0407baSopenharmony_ci ;; 573d0407baSopenharmony_ci -h) 583d0407baSopenharmony_ci usage 593d0407baSopenharmony_ci exit 0 603d0407baSopenharmony_ci ;; 613d0407baSopenharmony_ci --help) 623d0407baSopenharmony_ci usage 633d0407baSopenharmony_ci exit 0 643d0407baSopenharmony_ci ;; 653d0407baSopenharmony_ci -z) 663d0407baSopenharmony_ci compressed_kernel=y 673d0407baSopenharmony_ci shift 683d0407baSopenharmony_ci ;; 693d0407baSopenharmony_ci -o) 703d0407baSopenharmony_ci output=$2 713d0407baSopenharmony_ci shift 2 723d0407baSopenharmony_ci ;; 733d0407baSopenharmony_ci --output) 743d0407baSopenharmony_ci output=$2 753d0407baSopenharmony_ci shift 2 763d0407baSopenharmony_ci ;; 773d0407baSopenharmony_ci *) 783d0407baSopenharmony_ci shift 793d0407baSopenharmony_ci ;; 803d0407baSopenharmony_ci esac 813d0407baSopenharmony_cidone 823d0407baSopenharmony_ci 833d0407baSopenharmony_ciif [ "$boot_img" == "" -o ! -e "$boot_img" ]; then 843d0407baSopenharmony_ci echo "No boot img" 853d0407baSopenharmony_ci usage 863d0407baSopenharmony_ci exit 1 873d0407baSopenharmony_cifi 883d0407baSopenharmony_ci 893d0407baSopenharmony_ciif [ "$output" == "" ]; then 903d0407baSopenharmony_ci echo "No output file name" 913d0407baSopenharmony_ci usage 923d0407baSopenharmony_ci exit 1 933d0407baSopenharmony_cifi 943d0407baSopenharmony_ci 953d0407baSopenharmony_cisrctree=${srctree-"."} 963d0407baSopenharmony_ciobjtree=${objtree-"."} 973d0407baSopenharmony_ciout=${out-"out"} 983d0407baSopenharmony_ciif [ "$($srctree/scripts/config --state CONFIG_ARM64)" == "y" ]; then 993d0407baSopenharmony_ci if [ "$compressed_kernel" == "y" ]; then 1003d0407baSopenharmony_ci default_kernel=arch/arm64/boot/Image.lz4 1013d0407baSopenharmony_ci else 1023d0407baSopenharmony_ci default_kernel=arch/arm64/boot/Image 1033d0407baSopenharmony_ci fi 1043d0407baSopenharmony_cielse 1053d0407baSopenharmony_ci if [ "$compressed_kernel" == "y" ]; then 1063d0407baSopenharmony_ci default_kernel=arch/arm/boot/zImage 1073d0407baSopenharmony_ci else 1083d0407baSopenharmony_ci default_kernel=arch/arm/boot/Image 1093d0407baSopenharmony_ci fi 1103d0407baSopenharmony_cifi 1113d0407baSopenharmony_cikernel=${kernel-$objtree/$default_kernel} 1123d0407baSopenharmony_cisecond=${second-$objtree/resource.img} 1133d0407baSopenharmony_ciramdisk=${ramdisk-$out/ramdisk} 1143d0407baSopenharmony_cidtb=${dtb-$out/dtb} 1153d0407baSopenharmony_cirecovery_dtbo=${recovery_dtbo-$out/recovery_dtbo} 1163d0407baSopenharmony_cilog="$out/unpack.log" 1173d0407baSopenharmony_ci 1183d0407baSopenharmony_cimkdir -p $out 1193d0407baSopenharmony_ci$srctree/scripts/unpack_bootimg --boot_img $boot_img --out $out > $log 1203d0407baSopenharmony_ci 1213d0407baSopenharmony_cicmdline=$(grep -a "^command line args: " $log | tr '\0' '\n'| sed "s/^command line args: //") 1223d0407baSopenharmony_ciextra_cmdline=$(grep -a "^additional command line args: " $log | tr '\0' '\n'| sed "s/^additional command line args: //") 1233d0407baSopenharmony_civersion=$(grep -a "^boot image header version: " $log | sed "s/^boot image header version: //") 1243d0407baSopenharmony_cios_version=$(grep -a "^os version: " $log | sed "s/^os version: //") 1253d0407baSopenharmony_cios_patch_level=$(grep -a "^os patch level: " $log | sed "s/^os patch level: //") 1263d0407baSopenharmony_ci 1273d0407baSopenharmony_cidtb_size=$(grep -a "^dtb size: " $log | sed "s/^dtb size: //") 1283d0407baSopenharmony_cidtb_size=${dtb_size:-0} 1293d0407baSopenharmony_ciif [ $dtb_size -gt 0 -a -e "$dtb" ]; then 1303d0407baSopenharmony_ci DTB="--dtb $dtb" 1313d0407baSopenharmony_cifi 1323d0407baSopenharmony_ci 1333d0407baSopenharmony_cirecovery_dtbo_size=$(grep -a "^recovery dtbo size: " $log | sed "s/^recovery dtbo size: //") 1343d0407baSopenharmony_cirecovery_dtbo_size=${recovery_dtbo_size:-0} 1353d0407baSopenharmony_ciif [ $recovery_dtbo_size -gt 0 -a -e "$recovery_dtbo" ]; then 1363d0407baSopenharmony_ci RECOVERY_DTBO="--recovery_dtbo $recovery_dtbo" 1373d0407baSopenharmony_cifi 1383d0407baSopenharmony_ci 1393d0407baSopenharmony_ciif [ $version -lt 3 ]; then 1403d0407baSopenharmony_ci SECOND="--second $second" 1413d0407baSopenharmony_cifi 1423d0407baSopenharmony_ci 1433d0407baSopenharmony_ci$srctree/scripts/mkbootimg \ 1443d0407baSopenharmony_ci--kernel $kernel \ 1453d0407baSopenharmony_ci$SECOND \ 1463d0407baSopenharmony_ci--ramdisk $ramdisk \ 1473d0407baSopenharmony_ci$DTB \ 1483d0407baSopenharmony_ci$RECOVERY_DTBO \ 1493d0407baSopenharmony_ci--cmdline "${cmdline}${extra_cmdline}" \ 1503d0407baSopenharmony_ci--header_version $version \ 1513d0407baSopenharmony_ci--os_version $os_version \ 1523d0407baSopenharmony_ci--os_patch_level $os_patch_level \ 1533d0407baSopenharmony_ci--output $output 154