diff options
Diffstat (limited to 'target/linux/mvebu/base-files/lib/upgrade/sdcard.sh')
-rw-r--r-- | target/linux/mvebu/base-files/lib/upgrade/sdcard.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/target/linux/mvebu/base-files/lib/upgrade/sdcard.sh b/target/linux/mvebu/base-files/lib/upgrade/sdcard.sh new file mode 100644 index 0000000..de6e1a9 --- /dev/null +++ b/target/linux/mvebu/base-files/lib/upgrade/sdcard.sh @@ -0,0 +1,32 @@ +get_magic_at() { + local file="$1" + local pos="$2" + get_image "$file" | dd bs=1 count=2 skip="$pos" 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"' +} + +platform_check_image_sdcard() { + local file="$1" + local magic + + magic=$(get_magic_at "$file" 510) + [ "$magic" != "55aa" ] && { + echo "Failed to verify MBR boot signature." + return 1 + } + + return 0; +} + +platform_do_upgrade_sdcard() { + sync + get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync + sleep 1 +} + +platform_copy_config_sdcard() { + mkdir -p /boot + [ -f /boot/kernel.img ] || mount -o rw,noatime /dev/mmcblk0p1 /boot + cp -af "$CONF_TAR" /boot/ + sync + umount /boot +} |