xref: /rk3399_rockchip-uboot/scripts/android2distro.sh (revision 2d2cbe25dbdb9258491942e6982c6c468633aed4)
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