Pudding_LWGW_BR2/external_tree/customizations/overlay/opt/sdcard_upgrade.sh

74 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
LED_INDICATOR_NAME="green:status"
LED_INDICATOR_PATH="/sys/class/leds/${LED_INDICATOR_NAME}"
LED_INDICATOR_TRIG="none"
MMC_CARD_DEVICE="/dev/mmcblk0"
MMC_CARD_PART_USER="${MMC_CARD_DEVICE}p3"
MMC_EMMC_DEVICE="/dev/mmcblk2"
MMC_EMMC_PART_BOOT="${MMC_EMMC_DEVICE}p1"
MMC_EMMC_PART_ROOT="${MMC_EMMC_DEVICE}p2"
UPGRADE_PART_MOUNT_POINT="/mnt"
UPGRADE_ROOT_IMAGE_NAME="rootfs.ext2"
UPGRADE_ROOT_IMAGE_PATH="${UPGRADE_PART_MOUNT_POINT}/${UPGRADE_ROOT_IMAGE_NAME}"
UPGRADE_BOOT_IMAGE_NAME="u-boot-sunxi-with-spl.bin"
UPGRADE_BOOT_IMAGE_PATH="${UPGRADE_PART_MOUNT_POINT}/${UPGRADE_BOOT_IMAGE_NAME}"
if [ ! -b "${MMC_CARD_PART_USER}" ]; then
echo "No user partition present on SD card."
exit -1
fi
echo "Mount user partition on /mnt ..."
mount "${MMC_CARD_PART_USER}" /mnt
# Update eMMC ROOTFS partition
if [ -f "${UPGRADE_ROOT_IMAGE_PATH}" ]; then
echo "Flashing rootfs image to eMMC, please wait..."
dd if="${UPGRADE_ROOT_IMAGE_PATH}" of="${MMC_EMMC_PART_ROOT}" bs=4M
echo "Flash complete, resizing FS to fill the partition..."
resize2fs "${MMC_EMMC_PART_ROOT}"
echo "Finished updating rootfs."
fi
# Update eMMC BOOT partition
if [ -f "${UPGRADE_BOOT_IMAGE_PATH}" ]; then
echo "Flashing bootloader to eMMC, please wait..."
dd if="${UPGRADE_BOOT_IMAGE_PATH}" of="${MMC_EMMC_DEVICE}" bs=8k seek=1
echo "Finished updating bootloader."
fi
echo "Syncing disks..."
sync
echo "Unmounting upgrade partition..."
umount "${MMC_CARD_PART_USER}"
echo "Flash completed, remove SD card and reboot."
if [ ! -f "${LED_INDICATOR_PATH}/trigger" ]; then
echo "Status LED not available, exiting..."
exit 0
fi
echo none > "${LED_INDICATOR_PATH}/trigger"
# Blink STATUS LED (on base board)
while true; do
echo 0 > "${LED_INDICATOR_PATH}/brightness"
sleep 0.1
echo 1 > "${LED_INDICATOR_PATH}/brightness"
sleep 0.1
done