rockbox/utils/nwztools/scripts/exec_file.sh
Amaury Pouly 13d892eef1 nwztools: update makefile and add script
The new script allows the upgrade to execute a file found on the user partition.

Change-Id: I564941d01bcdbae050002e77cb119f3d95ecdc21
2016-10-19 17:09:04 +02:00

62 lines
1.5 KiB
Bash

#!/bin/sh
# The updater script on the NWZ has a major bug/feature:
# it does NOT clear the update flag if the update scrit fails
# thus causing a update/reboot loop and a bricked device
# always clear to make sure we don't end up being screwed
nvpflag fup 0xFFFFFFFF
#
# This script extracts the second file from the UPG to /tmp and runs it
#
# go to /tmp
cd /tmp
# get content partition path
CONTENTS="/contents"
CONTENTS_PART=`mount | grep contents | awk '{ print $1 }'`
lcdmsg -c -f /usr/local/bin/font_08x12.bmp -l 0,3 "Contents partition:\n$CONTENTS_PART"
# 2) We need to remount the contents partition in read-write mode be able to
# write something on it
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,6 "Remount $CONTENTS rw"
if ! mount -o remount,rw $CONTENTS_PART $CONTENTS
then
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,7 "ERROR: remount failed"
sleep 3
exit 0
fi
# get update filename
_UPDATE_FN_=`nvpstr ufn`
# extract second file
fwpchk -f /contents/$_UPDATE_FN_.UPG -c -1 exec
if [ "$?" != 0 ]; then
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,7 "ERROR: no file to execute"
sleep 3
exit 0
fi
# make it executable
chmod 755 exec
if [ "$?" != 0 ]; then
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,7 "ERROR: cannot make it executable"
sleep 3
exit 0
fi
# run it and redirect all outputs to exec.txt
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,7 "Running file..."
/tmp/exec >$CONTENTS/exec.txt 2>&1
# 4) Success screen
lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "Rebooting in 3 seconds."
sleep 3
sync
# finish
exit 0