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
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
|