# SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) [ -z "${SYSTEM_ROOT}" ] && SYSTEM_ROOT="" [ -z "${BOOT_ROOT}" ] && BOOT_ROOT="/flash" [ -z "${BOOT_PART}" ] && BOOT_PART=$(df "${BOOT_ROOT}" | tail -1 | awk {' print $1 '}) if [ -z "${BOOT_DISK}" ]; then case ${BOOT_PART} in /dev/sd[a-z][0-9]*) BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,[0-9]*,,g") ;; /dev/mmcblk*) BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,p[0-9]*,,g") ;; esac fi # mount ${BOOT_ROOT} r/w mount -o remount,rw ${BOOT_ROOT} # update device tree for all_dtb in ${BOOT_ROOT}/*.dtb; do dtb=$(basename ${all_dtb}) # device tree mappings for update from vendor to mainline kernel case "${dtb}" in rk3288-miniarm.dtb) new_dtb=rk3288-tinker-s.dtb ;; rk3328-box.dtb|rk3328-box-trn9.dtb|rk3328-box-z28.dtb|rk3328-rockbox.dtb) new_dtb=rk3328-a1.dtb ;; rk3399-rock-pi-4.dtb) new_dtb=rk3399-rock-pi-4b.dtb ;; *) new_dtb="${dtb}" ;; esac if [ "${dtb}" != "${new_dtb}" -a -f ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ]; then echo -n "Replacing ${dtb} with ${new_dtb} ... " cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ${BOOT_ROOT} && \ sed -e "s/FDT \/${dtb}/FDT \/${new_dtb}/g" \ -i ${BOOT_ROOT}/extlinux/extlinux.conf && \ rm -f ${BOOT_ROOT}/${dtb} echo "done" else if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ]; then echo -n "Updating ${dtb}... " cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ${BOOT_ROOT} echo "done" elif [ "$(grep -c "FDT /${dtb}" ${BOOT_ROOT}/extlinux/extlinux.conf)" -ne 0 ]; then non_existend_dtb="${dtb}" fi fi done # update bootloader if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img ]; then echo -n "Updating idbloader.img... " dd if=${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img of=${BOOT_DISK} bs=32k seek=1 conv=fsync &>/dev/null echo "done" fi if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/uboot.img ]; then echo -n "Updating uboot.img... " dd if=${SYSTEM_ROOT}/usr/share/bootloader/uboot.img of=${BOOT_DISK} bs=64k seek=128 conv=fsync &>/dev/null echo "done" fi if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/trust.img ]; then echo -n "Updating trust.img... " dd if=${SYSTEM_ROOT}/usr/share/bootloader/trust.img of=${BOOT_DISK} bs=64k seek=192 conv=fsync &>/dev/null echo "done" fi # mount ${BOOT_ROOT} r/o sync mount -o remount,ro ${BOOT_ROOT} # warning if device tree was not updated if [ -n "${non_existend_dtb}" ]; then echo "The device tree ${non_existend_dtb} your installation uses does not exist in this update package." echo "The updated system will continue to use the device tree from the previous system and your installation might be broken." echo "Please check documentation to find out which boards are supported by this package." sleep 10 fi