summaryrefslogtreecommitdiff
path: root/utils/nwztools/scripts/install_dualboot.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/nwztools/scripts/install_dualboot.sh')
-rw-r--r--utils/nwztools/scripts/install_dualboot.sh129
1 files changed, 129 insertions, 0 deletions
diff --git a/utils/nwztools/scripts/install_dualboot.sh b/utils/nwztools/scripts/install_dualboot.sh
new file mode 100644
index 0000000000..ece5b9e3a3
--- /dev/null
+++ b/utils/nwztools/scripts/install_dualboot.sh
@@ -0,0 +1,129 @@
1#!/bin/sh
2
3# The updater script on the NWZ has a major bug/feature:
4# it does NOT clear the update flag if the update scrit fails
5# thus causing a update/reboot loop and a bricked device
6# always clear to make sure we don't end up being screwed
7nvpflag fup 0xFFFFFFFF
8
9#
10# FIXME document this
11#
12
13
14# go to /tmp
15cd /tmp
16
17# get content partition path
18CONTENTS="/contents"
19CONTENTS_PART=`mount | grep contents | awk '{ print $1 }'`
20
21lcdmsg -c -f /usr/local/bin/font_08x12.bmp -l 0,3 "Contents partition:\n$CONTENTS_PART"
22
23# We need to remount the contents partition in read-write mode be able to
24# write something on it
25lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,6 "Remount $CONTENTS rw"
26mount -o remount,rw $CONTENTS_PART $CONTENTS
27if [ "$?" != 0 ]; then
28 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: remount failed"
29 sleep 3
30 exit 0
31fi
32
33# import constants
34. /install_script/constant.txt
35_UPDATE_FN_=`nvpstr ufn`
36ROOTFS_TMP_DIR=/tmp/rootfs
37ROCKBOX_NAME=Rockbox
38ROCKBOX_PATH=$ROOTFS_TMP_DIR/usr/local/bin/$ROCKBOX_NAME
39SPIDERAPP_PATH=$ROOTFS_TMP_DIR/usr/local/bin/SpiderApp
40
41# mount root partition
42lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,7 "Mount root filesystem"
43mkdir $ROOTFS_TMP_DIR
44if [ "$?" != 0 ]; then
45 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: mkdir failed"
46 sleep 3
47 exit 0
48fi
49
50# NOTE some platforms use ext3 and some ext4 with a custom mount program
51# (/usr/local/bin/icx_mount.ext4), some probably use an mtd too
52mount -t ext2 $COMMON_ROOTFS_PARTITION $ROOTFS_TMP_DIR
53if [ "$?" != 0 ]; then
54 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: mount failed"
55 sleep 3
56 exit 0
57fi
58
59# rename the previous main application unless there is already a copy
60lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,8 "Backup OF"
61if [ ! -e $SPIDERAPP_PATH.of ]; then
62 mv $SPIDERAPP_PATH $SPIDERAPP_PATH.of
63fi
64
65# extract our payload executable
66lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,9 "Install rockbox"
67fwpchk -f /contents/$_UPDATE_FN_.UPG -c -1 $SPIDERAPP_PATH
68if [ "$?" != 0 ]; then
69 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: no file to extract"
70 sleep 3
71 exit 0
72fi
73
74# make it executable and change user/group
75chmod 775 $SPIDERAPP_PATH
76if [ "$?" != 0 ]; then
77 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot make it executable"
78 sleep 3
79 exit 0
80fi
81chown 500:500 $SPIDERAPP_PATH
82if [ "$?" != 0 ]; then
83 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: cannot change owner"
84 sleep 3
85 exit 0
86fi
87
88# # change main application
89# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,9 "Modify app list"
90# sed -i 's/Rockbox/SpiderApp/' $ROOTFS_TMP_DIR/etc/AppList.conf
91# if [ "$?" != 0 ]; then
92# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,14 "ERROR: sed failed"
93# sleep 3
94# exit 0
95# fi
96# # and fix ownership
97# chown 500:500 $ROOTFS_TMP_DIR/etc/AppList.conf
98# if [ "$?" != 0 ]; then
99# lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,14 "ERROR: cannot change group"
100# sleep 3
101# exit 0
102# fi
103cat $ROOTFS_TMP_DIR/etc/AppList.conf >$CONTENTS/AppList.conf
104ls -l $ROOTFS_TMP_DIR/usr/local/bin/ >$CONTENTS/ls.txt
105ls -l $ROOTFS_TMP_DIR/etc/ >$CONTENTS/ls2.txt
106
107# unmount root partition
108lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,10 "Unmount root filesystem"
109sync
110if [ "$?" != 0 ]; then
111 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: sync failed"
112 sleep 3
113 exit 0
114fi
115
116umount $ROOTFS_TMP_DIR
117if [ "$?" != 0 ]; then
118 lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "ERROR: umount failed"
119 sleep 3
120 exit 0
121fi
122
123# Success screen
124lcdmsg -f /usr/local/bin/font_08x12.bmp -l 0,15 "Rebooting in 3 seconds."
125sleep 3
126sync
127
128# finish
129exit 0