| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- # ******************************
- # Install u-boot to SD/EMMC card
- # ******************************
- if [ "$(id -u)" != "0" ]; then
- echo "Script must be run as root !"
- exit 0
- fi
- if [ ! -f /opt/multiboot/u-boot.bin ]; then
- echo "ERROR: u-boot.bin not found"
- exit 1
- fi
- uboot_part="/dev/mmcblk0"
- [ -b /dev/mmcblk0boot0 ] && uboot_part="/dev/mmcblk0boot0"
- # Extract installed u-boot to file
- dd if=${uboot_part} of=/tmp/this_u-boot.bin bs=512 skip=63 count=2048 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "ERROR extracting u-boot from mmcblk0"
- exit 2
- fi
- # compare
- UBOOT_SIZE=$(stat -c%s /opt/multiboot/u-boot.bin)
- cmp -s -n ${UBOOT_SIZE} /opt/multiboot/u-boot.bin /tmp/this_u-boot.bin
- if [ $? -ne 0 ]; then
- # Not equal
- if [ "${uboot_part}" = "/dev/mmcblk0boot0" ]; then
- if [ -e /sys/block/mmcblk0boot0/force_ro ]; then
- echo 0 > /sys/block/mmcblk0boot0/force_ro
- if [ $? -ne 0 ]; then
- echo "ERROR enabling boot0."
- exit 1
- fi
- else
- echo "ERROR: boot0 not found."
- exit 1
- fi
- fi
- dd if=/opt/multiboot/u-boot.bin of=${uboot_part} bs=512 seek=63 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "ERROR writting u-boot to mmcblk0"
- exit 3
- fi
- if [ "${uboot_part}" = "/dev/mmcblk0boot0" ]; then
- echo 1 > /sys/block/mmcblk0boot0/force_ro
- fi
- sync
- echo "u-boot on mmcblk0 UPDATED"
- else
- echo "u-boot on mmcblk0 OK"
- fi
- [ ! -b /dev/mmcblk1 ] && exit 0
- uboot_part="/dev/mmcblk1"
- [ -b /dev/mmcblk1boot0 ] && uboot_part="/dev/mmcblk1boot0"
- # Extract installed u-boot to file
- dd if=${uboot_part} of=/tmp/this_u-boot.bin bs=512 skip=63 count=2048 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "ERROR extracting u-boot from mmcblk1"
- exit 4
- fi
- # compare
- cmp -s -n ${UBOOT_SIZE} /opt/multiboot/u-boot.bin /tmp/this_u-boot.bin
- if [ $? -ne 0 ]; then
- # Not equal
- if [ "${uboot_part}" = "/dev/mmcblk1boot0" ]; then
- if [ -e /sys/block/mmcblk1boot0/force_ro ]; then
- echo 0 > /sys/block/mmcblk1boot0/force_ro
- if [ $? -ne 0 ]; then
- echo "ERROR enabling boot0."
- exit 1
- fi
- else
- echo "ERROR: boot0 not found."
- exit 1
- fi
- fi
- dd if=/opt/multiboot/u-boot.bin of=${uboot_part} bs=512 seek=63 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "ERROR writting u-boot to mmcblk1"
- exit 5
- fi
- if [ "${uboot_part}" = "/dev/mmcblk1boot0" ]; then
- echo 1 > /sys/block/mmcblk1boot0/force_ro
- fi
- sync
- echo "u-boot on mmcblk1 UPDATED"
- else
- echo "u-boot on mmcblk1 OK"
- fi
- exit 0
|