xref: /rk3399_rockchip-uboot/scripts/android2distro.sh (revision 6b07a14baa8c2df166c9d58855bde82b16761453)
1*6b07a14bSJoseph Chen#!/bin/bash
2*6b07a14bSJoseph Chen#
3*6b07a14bSJoseph Chen# Copyright (c) 2021 Rockchip Electronics Co., Ltd
4*6b07a14bSJoseph Chen#
5*6b07a14bSJoseph Chen# SPDX-License-Identifier: GPL-2.0
6*6b07a14bSJoseph Chen#
7*6b07a14bSJoseph Chen
8*6b07a14bSJoseph Chenset -e
9*6b07a14bSJoseph Chen
10*6b07a14bSJoseph Chenfunction usage()
11*6b07a14bSJoseph Chen{
12*6b07a14bSJoseph Chen	echo
13*6b07a14bSJoseph Chen	echo "usage:"
14*6b07a14bSJoseph Chen	echo "    $0 -f [Android boot.img] -o [Distro(ext2) boot.img]"
15*6b07a14bSJoseph Chen	echo
16*6b07a14bSJoseph Chen}
17*6b07a14bSJoseph Chen
18*6b07a14bSJoseph Chenfunction args_process()
19*6b07a14bSJoseph Chen{
20*6b07a14bSJoseph Chen	if [ $# -ne 4 ]; then
21*6b07a14bSJoseph Chen		usage
22*6b07a14bSJoseph Chen		exit 1
23*6b07a14bSJoseph Chen	fi
24*6b07a14bSJoseph Chen
25*6b07a14bSJoseph Chen	while [ $# -gt 0 ]; do
26*6b07a14bSJoseph Chen		case $1 in
27*6b07a14bSJoseph Chen			-f)
28*6b07a14bSJoseph Chen				BOOT_IMG=$2
29*6b07a14bSJoseph Chen				shift 2
30*6b07a14bSJoseph Chen				;;
31*6b07a14bSJoseph Chen			-o)
32*6b07a14bSJoseph Chen				DISTRO_IMG=$2
33*6b07a14bSJoseph Chen				shift 2
34*6b07a14bSJoseph Chen				;;
35*6b07a14bSJoseph Chen			*)
36*6b07a14bSJoseph Chen				usage
37*6b07a14bSJoseph Chen				exit 1
38*6b07a14bSJoseph Chen				;;
39*6b07a14bSJoseph Chen		esac
40*6b07a14bSJoseph Chen	done
41*6b07a14bSJoseph Chen
42*6b07a14bSJoseph Chen	if [ ! -f ${BOOT_IMG} ]; then
43*6b07a14bSJoseph Chen		echo "ERROR: No ${ITB}"
44*6b07a14bSJoseph Chen		exit 1
45*6b07a14bSJoseph Chen	fi
46*6b07a14bSJoseph Chen}
47*6b07a14bSJoseph Chen
48*6b07a14bSJoseph Chenfunction android2distro()
49*6b07a14bSJoseph Chen{
50*6b07a14bSJoseph Chen	rm distro/ boot/ ${DISTRO_IMG} -rf
51*6b07a14bSJoseph Chen	mkdir -p boot
52*6b07a14bSJoseph Chen
53*6b07a14bSJoseph Chen	./scripts/unpack_bootimg --boot_img ${BOOT_IMG} --out distro/
54*6b07a14bSJoseph Chen	./scripts/unpack_resource.sh distro/second distro/
55*6b07a14bSJoseph Chen	BOOTARGS=`fdtget -ts distro/rk-kernel.dtb /chosen bootargs`
56*6b07a14bSJoseph Chen
57*6b07a14bSJoseph Chen	cp distro/rk-kernel.dtb boot/rk-kernel.dtb
58*6b07a14bSJoseph Chen	cp distro/kernel boot/kernel
59*6b07a14bSJoseph Chen	cp distro/ramdisk boot/ramdisk
60*6b07a14bSJoseph Chen	mkdir -p boot/extlinux
61*6b07a14bSJoseph Chen	touch boot/extlinux/extlinux.conf
62*6b07a14bSJoseph Chen	echo "label rockchip-linux-kernel" >> boot/extlinux/extlinux.conf
63*6b07a14bSJoseph Chen	echo "    kernel /kernel" >> boot/extlinux/extlinux.conf
64*6b07a14bSJoseph Chen	echo "    fdt /rk-kernel.dtb" >> boot/extlinux/extlinux.conf
65*6b07a14bSJoseph Chen	echo "    initrd /ramdisk" >> boot/extlinux/extlinux.conf
66*6b07a14bSJoseph Chen	echo "    append ${BOOTARGS}" >> boot/extlinux/extlinux.conf
67*6b07a14bSJoseph Chen
68*6b07a14bSJoseph Chen	SIZE_KB=`ls -lh ${BOOT_IMG} | awk '{ print $5 }' | tr -d 'M'`
69*6b07a14bSJoseph Chen	SIZE_KB=`expr ${SIZE_KB} + 2`
70*6b07a14bSJoseph Chen	SIZE_BYTE=$((${SIZE_KB}*1024))
71*6b07a14bSJoseph Chen	genext2fs -b ${SIZE_BYTE} -B 1024 -d boot/ -i 8192 -U ${DISTRO_IMG}
72*6b07a14bSJoseph Chen
73*6b07a14bSJoseph Chen	echo
74*6b07a14bSJoseph Chen	echo "Successful: ${DISTRO_IMG} is ready."
75*6b07a14bSJoseph Chen	echo
76*6b07a14bSJoseph Chen}
77*6b07a14bSJoseph Chen
78*6b07a14bSJoseph Chenargs_process $*
79*6b07a14bSJoseph Chenandroid2distro
80