c876d3bbef
rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them. This also allows other utils to easily use libtools.make without the need to navigate to a different folder. Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21
122 lines
2.9 KiB
Bash
122 lines
2.9 KiB
Bash
#!/bin/sh
|
|
|
|
# NOTE: busybox is using ash, a very posix and very pedantic shell, make sure
|
|
# you test your scripts with
|
|
# busybox sh -n <script>
|
|
# and if you really, really don't want to download busybox to try it, then go
|
|
# ahead and brick your device
|
|
|
|
# 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
|
|
|
|
# go to /tmp
|
|
cd /tmp
|
|
|
|
# get content partition path
|
|
CONTENTS="/contents"
|
|
CONTENTS_PART=`mount | grep contents | awk '{ print $1 }'`
|
|
|
|
# print a message to the screen and also on the standard output
|
|
# lcdprint x,y msg
|
|
lcdprint ()
|
|
{
|
|
echo $2
|
|
lcdmsg -f /usr/local/bin/font_08x12.bmp -l $1 "$2"
|
|
}
|
|
|
|
# clear screen
|
|
lcdmsg -c ""
|
|
lcdprint 0,3 "Contents partition:\n$CONTENTS_PART"
|
|
|
|
# We need to remount the contents partition in read-write mode be able to
|
|
# write something on it
|
|
lcdprint 0,6 "Remount $CONTENTS rw"
|
|
mount -o remount,rw $CONTENTS_PART $CONTENTS
|
|
if [ "$?" != 0 ]; then
|
|
lcdprint 0,15 "ERROR: remount failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
# redirect all output to a log file
|
|
exec > "$CONTENTS/uninstall_dualboot_log.txt" 2>&1
|
|
|
|
# import constants
|
|
. /install_script/constant.txt
|
|
ROOTFS_TMP_DIR=/tmp/rootfs
|
|
SPIDERAPP_PATH=$ROOTFS_TMP_DIR/usr/local/bin/SpiderApp
|
|
|
|
# mount root partition
|
|
lcdprint 0,7 "Mount root filesystem"
|
|
mkdir $ROOTFS_TMP_DIR
|
|
if [ "$?" != 0 ]; then
|
|
lcdprint 0,15 "ERROR: mkdir failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
# If there is an ext4 mounter, try it. Otherwise or on failure, try ext3 and
|
|
# then ext2.
|
|
# NOTE some platforms probably use an mtd and this might need some fixing
|
|
if [ -e /usr/local/bin/icx_mount.ext4 ]; then
|
|
/usr/local/bin/icx_mount.ext4 $COMMON_ROOTFS_PARTITION $ROOTFS_TMP_DIR
|
|
else
|
|
false
|
|
fi
|
|
if [ "$?" != 0 ]; then
|
|
mount -t ext3 $COMMON_ROOTFS_PARTITION $ROOTFS_TMP_DIR
|
|
fi
|
|
if [ "$?" != 0 ]; then
|
|
mount -t ext2 $COMMON_ROOTFS_PARTITION $ROOTFS_TMP_DIR
|
|
fi
|
|
if [ "$?" != 0 ]; then
|
|
lcdprint 0,15 "ERROR: mount failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
# the installer renames the OF to $SPIDERAPP_PATH.of so if it does not exists
|
|
# print an error
|
|
lcdprint 0,8 "Restore OF"
|
|
if [ ! -e $SPIDERAPP_PATH.of ]; then
|
|
lcdprint 0,15 "ERROR: cannot find OF"
|
|
lcdprint 0,16 "ERROR: is Rockbox installed?"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
# restore the OF
|
|
mv $SPIDERAPP_PATH.of $SPIDERAPP_PATH
|
|
if [ "$?" != 0 ]; then
|
|
lcdprint 0,15 "ERROR: restore failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
# unmount root partition
|
|
lcdprint 0,11 "Unmount root filesystem"
|
|
sync
|
|
if [ "$?" != 0 ]; then
|
|
umount "$ROOTFS_TMP_DIR"
|
|
lcdprint 0,15 "ERROR: sync failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
umount $ROOTFS_TMP_DIR
|
|
if [ "$?" != 0 ]; then
|
|
lcdprint 0,15 "ERROR: umount failed"
|
|
sleep 3
|
|
exit 0
|
|
fi
|
|
|
|
# Success screen
|
|
lcdprint 0,15 "Rebooting in 3 seconds."
|
|
sleep 3
|
|
sync
|
|
|
|
echo "Uninstallation successful"
|
|
# finish
|
|
exit 0
|