16b07a14bSJoseph Chen#!/bin/bash 26b07a14bSJoseph Chen# 36b07a14bSJoseph Chen# Copyright (c) 2021 Rockchip Electronics Co., Ltd 46b07a14bSJoseph Chen# 56b07a14bSJoseph Chen# SPDX-License-Identifier: GPL-2.0 66b07a14bSJoseph Chen# 76b07a14bSJoseph Chen 86b07a14bSJoseph Chenset -e 96b07a14bSJoseph Chen 106b07a14bSJoseph Chenfunction usage() 116b07a14bSJoseph Chen{ 126b07a14bSJoseph Chen echo 136b07a14bSJoseph Chen echo "usage:" 146b07a14bSJoseph Chen echo " $0 -f [Android boot.img] -o [Distro(ext2) boot.img]" 156b07a14bSJoseph Chen echo 166b07a14bSJoseph Chen} 176b07a14bSJoseph Chen 186b07a14bSJoseph Chenfunction args_process() 196b07a14bSJoseph Chen{ 206b07a14bSJoseph Chen if [ $# -ne 4 ]; then 216b07a14bSJoseph Chen usage 226b07a14bSJoseph Chen exit 1 236b07a14bSJoseph Chen fi 246b07a14bSJoseph Chen 256b07a14bSJoseph Chen while [ $# -gt 0 ]; do 266b07a14bSJoseph Chen case $1 in 276b07a14bSJoseph Chen -f) 286b07a14bSJoseph Chen BOOT_IMG=$2 296b07a14bSJoseph Chen shift 2 306b07a14bSJoseph Chen ;; 316b07a14bSJoseph Chen -o) 326b07a14bSJoseph Chen DISTRO_IMG=$2 336b07a14bSJoseph Chen shift 2 346b07a14bSJoseph Chen ;; 356b07a14bSJoseph Chen *) 366b07a14bSJoseph Chen usage 376b07a14bSJoseph Chen exit 1 386b07a14bSJoseph Chen ;; 396b07a14bSJoseph Chen esac 406b07a14bSJoseph Chen done 416b07a14bSJoseph Chen 426b07a14bSJoseph Chen if [ ! -f ${BOOT_IMG} ]; then 436b07a14bSJoseph Chen echo "ERROR: No ${ITB}" 446b07a14bSJoseph Chen exit 1 456b07a14bSJoseph Chen fi 466b07a14bSJoseph Chen} 476b07a14bSJoseph Chen 486b07a14bSJoseph Chenfunction android2distro() 496b07a14bSJoseph Chen{ 506b07a14bSJoseph Chen rm distro/ boot/ ${DISTRO_IMG} -rf 516b07a14bSJoseph Chen mkdir -p boot 526b07a14bSJoseph Chen 536b07a14bSJoseph Chen ./scripts/unpack_bootimg --boot_img ${BOOT_IMG} --out distro/ 546b07a14bSJoseph Chen ./scripts/unpack_resource.sh distro/second distro/ 556b07a14bSJoseph Chen BOOTARGS=`fdtget -ts distro/rk-kernel.dtb /chosen bootargs` 566b07a14bSJoseph Chen 576b07a14bSJoseph Chen cp distro/rk-kernel.dtb boot/rk-kernel.dtb 586b07a14bSJoseph Chen cp distro/kernel boot/kernel 596b07a14bSJoseph Chen cp distro/ramdisk boot/ramdisk 606b07a14bSJoseph Chen mkdir -p boot/extlinux 616b07a14bSJoseph Chen touch boot/extlinux/extlinux.conf 626b07a14bSJoseph Chen echo "label rockchip-linux-kernel" >> boot/extlinux/extlinux.conf 636b07a14bSJoseph Chen echo " kernel /kernel" >> boot/extlinux/extlinux.conf 646b07a14bSJoseph Chen echo " fdt /rk-kernel.dtb" >> boot/extlinux/extlinux.conf 656b07a14bSJoseph Chen echo " initrd /ramdisk" >> boot/extlinux/extlinux.conf 666b07a14bSJoseph Chen echo " append ${BOOTARGS}" >> boot/extlinux/extlinux.conf 676b07a14bSJoseph Chen 686b07a14bSJoseph Chen SIZE_KB=`ls -lh ${BOOT_IMG} | awk '{ print $5 }' | tr -d 'M'` 69*2d2cbe25SJoseph Chen SIZE_KB=`echo "scale=0;$SIZE_KB/1"|bc -l` # for align down integer 70*2d2cbe25SJoseph Chen SIZE_KB=`expr ${SIZE_KB} + 2 + 1` 716b07a14bSJoseph Chen SIZE_BYTE=$((${SIZE_KB}*1024)) 726b07a14bSJoseph Chen genext2fs -b ${SIZE_BYTE} -B 1024 -d boot/ -i 8192 -U ${DISTRO_IMG} 736b07a14bSJoseph Chen 746b07a14bSJoseph Chen echo 756b07a14bSJoseph Chen echo "Successful: ${DISTRO_IMG} is ready." 766b07a14bSJoseph Chen echo 776b07a14bSJoseph Chen} 786b07a14bSJoseph Chen 796b07a14bSJoseph Chenargs_process $* 806b07a14bSJoseph Chenandroid2distro 81