1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.6 KiB

#!/bin/bash
#
# Copyright (c) 2021 Rockchip Electronics Co., Ltd
#
# SPDX-License-Identifier: GPL-2.0
#
set -e
function usage()
{
echo
echo "usage:"
echo " $0 -f [Android boot.img] -o [Distro(ext2) boot.img]"
echo
}
function args_process()
{
if [ $# -ne 4 ]; then
usage
exit 1
fi
while [ $# -gt 0 ]; do
case $1 in
-f)
BOOT_IMG=$2
shift 2
;;
-o)
DISTRO_IMG=$2
shift 2
;;
*)
usage
exit 1
;;
esac
done
if [ ! -f ${BOOT_IMG} ]; then
echo "ERROR: No ${ITB}"
exit 1
fi
}
function android2distro()
{
rm distro/ boot/ ${DISTRO_IMG} -rf
mkdir -p boot
./scripts/unpack_bootimg --boot_img ${BOOT_IMG} --out distro/
./scripts/unpack_resource.sh distro/second distro/
BOOTARGS=`fdtget -ts distro/rk-kernel.dtb /chosen bootargs`
cp distro/rk-kernel.dtb boot/rk-kernel.dtb
cp distro/kernel boot/kernel
cp distro/ramdisk boot/ramdisk
mkdir -p boot/extlinux
touch boot/extlinux/extlinux.conf
echo "label rockchip-linux-kernel" >> boot/extlinux/extlinux.conf
echo " kernel /kernel" >> boot/extlinux/extlinux.conf
echo " fdt /rk-kernel.dtb" >> boot/extlinux/extlinux.conf
echo " initrd /ramdisk" >> boot/extlinux/extlinux.conf
echo " append ${BOOTARGS}" >> boot/extlinux/extlinux.conf
SIZE_KB=`ls -lh ${BOOT_IMG} | awk '{ print $5 }' | tr -d 'M'`
SIZE_KB=`echo "scale=0;$SIZE_KB/1"|bc -l` # for align down integer
SIZE_KB=`expr ${SIZE_KB} + 2 + 1`
SIZE_BYTE=$((${SIZE_KB}*1024))
genext2fs -b ${SIZE_BYTE} -B 1024 -d boot/ -i 8192 -U ${DISTRO_IMG}
echo
echo "Successful: ${DISTRO_IMG} is ready."
echo
}
args_process $*
android2distro