diff options
-rw-r--r-- | meta/packages/zaurus-updater/akita/updater.sh | 252 | ||||
-rw-r--r-- | meta/packages/zaurus-updater/c7x0/updater.sh | 242 | ||||
-rw-r--r-- | meta/packages/zaurus-updater/poodle/updater.sh | 231 | ||||
-rwxr-xr-x | meta/packages/zaurus-updater/spitz/updater.sh | 280 | ||||
-rw-r--r-- | meta/packages/zaurus-updater/tosa/updater.sh | 241 | ||||
-rw-r--r-- | meta/packages/zaurus-updater/zaurus-updater.bb | 6 | ||||
-rw-r--r-- | meta/packages/zaurus-updater/zaurus-updater/updater.sh | 481 |
7 files changed, 486 insertions, 1247 deletions
diff --git a/meta/packages/zaurus-updater/akita/updater.sh b/meta/packages/zaurus-updater/akita/updater.sh deleted file mode 100644 index 5399e5254e..0000000000 --- a/meta/packages/zaurus-updater/akita/updater.sh +++ /dev/null | |||
@@ -1,252 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | |||
4 | DATAPATH=$1 | ||
5 | TMPPATH=/tmp/update | ||
6 | TMPDATA=$TMPPATH/tmpdata.bin | ||
7 | TMPHEAD=$TMPPATH/tmphead.bin | ||
8 | |||
9 | WFLG_KERNEL=0 | ||
10 | WFLG_INITRD=0 | ||
11 | WFLG_MVERSION=0 | ||
12 | |||
13 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
14 | if [ "$RO_MTD_LINE" = "" ]; then | ||
15 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
16 | fi | ||
17 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
18 | RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
19 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
20 | RO_MTDBLK=/dev/mtdblock$RO_MTD_NO | ||
21 | RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` | ||
22 | |||
23 | RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` | ||
24 | if [ "$RW_MTD_LINE" = "" ]; then | ||
25 | RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
26 | fi | ||
27 | RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
28 | RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` | ||
29 | RW_MTD=/dev/mtd$RW_MTD_NO | ||
30 | RW_MTDBLK=/dev/mtdblock$RW_MTD_NO | ||
31 | RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` | ||
32 | |||
33 | LOGOCAL_MTD=/dev/mtd1 | ||
34 | |||
35 | VERBLOCK=0x48000 | ||
36 | MVRBLOCK=0x70000 | ||
37 | |||
38 | RESULT=0 | ||
39 | |||
40 | Cleanup(){ | ||
41 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
42 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
43 | rm $CTRLPATH/* > /dev/null 2>&1 | ||
44 | rm $DATAPATH/* > /dev/null 2>&1 | ||
45 | exit $1 | ||
46 | } | ||
47 | trap 'Cleanup 1' 1 15 | ||
48 | trap '' 2 3 | ||
49 | |||
50 | |||
51 | ### Check model ### | ||
52 | /sbin/writerominfo | ||
53 | MODEL=`cat /proc/deviceinfo/product` | ||
54 | echo 'MODEL:'$MODEL | ||
55 | case "$MODEL" in | ||
56 | SL-C700) ;; | ||
57 | SL-C750) ;; | ||
58 | SL-C760) ;; | ||
59 | SL-C860) ;; | ||
60 | SL-C1000) ;; | ||
61 | SL-B500) ;; | ||
62 | SL-5600) ;; | ||
63 | *) | ||
64 | echo 'ERROR:Invalid model!' | ||
65 | echo 'Please reset' | ||
66 | while true | ||
67 | do | ||
68 | done | ||
69 | ;; | ||
70 | esac | ||
71 | |||
72 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
73 | |||
74 | cd $DATAPATH/ | ||
75 | |||
76 | for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN | ||
77 | do | ||
78 | if [ -e $TARGETFILE ] | ||
79 | then | ||
80 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
81 | DATASIZE=`wc -c $TARGETFILE` | ||
82 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
83 | |||
84 | #echo $TARGETFILE':'$DATASIZE'bytes' | ||
85 | TARGETTYPE=Invalid | ||
86 | case "$TARGETFILE" in | ||
87 | zImage.bin) TARGETTYPE=Kernel;; | ||
88 | zimage.bin) TARGETTYPE=Kernel;; | ||
89 | ZIMAGE.BIN) TARGETTYPE=Kernel;; | ||
90 | initrd.bin) TARGETTYPE=RoFs;; | ||
91 | INITRD.BIN) TARGETTYPE=RoFs;; | ||
92 | mversion.bin) TARGETTYPE=MasterVer;; | ||
93 | MVERSION.BIN) TARGETTYPE=MasterVer;; | ||
94 | *) | ||
95 | continue | ||
96 | ;; | ||
97 | esac | ||
98 | |||
99 | case "$TARGETTYPE" in | ||
100 | Kernel) | ||
101 | if [ $WFLG_KERNEL != 0 ] | ||
102 | then | ||
103 | continue | ||
104 | fi | ||
105 | WFLG_KERNEL=1 | ||
106 | echo 'kernel' | ||
107 | ISLOGICAL=1 | ||
108 | MODULEID=5 | ||
109 | MODULESIZE=0x13C000 | ||
110 | ADDR=`dc 0xE0000` | ||
111 | ISFORMATTED=1 | ||
112 | DATAPOS=0 | ||
113 | ONESIZE=524288 | ||
114 | HDTOP=`expr $DATASIZE - 16` | ||
115 | /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE | ||
116 | ;; | ||
117 | RoFs) | ||
118 | if [ $WFLG_INITRD != 0 ] | ||
119 | then | ||
120 | continue | ||
121 | fi | ||
122 | WFLG_INITRD=1 | ||
123 | echo 'RO file system' | ||
124 | ISLOGICAL=0 | ||
125 | MODULEID=6 | ||
126 | MODULESIZE=0x1900000 | ||
127 | ADDR=0 | ||
128 | ISFORMATTED=0 | ||
129 | TARGET_MTD=$RO_MTD | ||
130 | DATAPOS=16 | ||
131 | ONESIZE=1048576 | ||
132 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
133 | ;; | ||
134 | MasterVer) | ||
135 | if [ $WFLG_MVERSION != 0 ] | ||
136 | then | ||
137 | continue | ||
138 | fi | ||
139 | WFLG_MVERSION=1 | ||
140 | echo 'Master version' | ||
141 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
142 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
143 | /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 | ||
144 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
145 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
146 | echo 'Success!' | ||
147 | continue | ||
148 | ;; | ||
149 | *) | ||
150 | continue | ||
151 | ;; | ||
152 | esac | ||
153 | |||
154 | |||
155 | #format? | ||
156 | if [ $ISFORMATTED = 0 ] | ||
157 | then | ||
158 | echo -n 'Flash erasing...' | ||
159 | /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null | ||
160 | #/sbin/eraseall $TARGET_MTD 2 | ||
161 | echo 'done' | ||
162 | ISFORMATTED=1 | ||
163 | fi | ||
164 | |||
165 | echo '' | ||
166 | echo '0% 100%' | ||
167 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
168 | PROGSTEP=`expr 25 / $PROGSTEP` | ||
169 | if [ $PROGSTEP = 0 ] | ||
170 | then | ||
171 | PROGSTEP=1 | ||
172 | fi | ||
173 | |||
174 | #00 means header information | ||
175 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
176 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
177 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
178 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
179 | |||
180 | #echo 'found header' | ||
181 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
182 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
183 | |||
184 | if [ "$MODEL" = "SL-C1000" ] && [ $TARGETTYPE = Kernel ]; then | ||
185 | echo $TARGETFILE':'$DATASIZE'bytes' | ||
186 | echo ' ' > /tmp/data | ||
187 | /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 | ||
188 | /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 | ||
189 | /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 | ||
190 | #loop | ||
191 | else | ||
192 | while [ $DATAPOS -lt $DATASIZE ] | ||
193 | do | ||
194 | #data create | ||
195 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
196 | TMPSIZE=`wc -c $TMPDATA` | ||
197 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
198 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
199 | |||
200 | #handle data file | ||
201 | #echo 'ADDR='$ADDR | ||
202 | #echo 'SIZE='$TMPSIZE | ||
203 | #echo 'TMPDATA='$TMPDATA | ||
204 | if [ $ISLOGICAL = 0 ] | ||
205 | then | ||
206 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
207 | if [ "$next_addr" = "" ]; then | ||
208 | echo "ERROR:flash write" | ||
209 | rm $TMPDATA > /dev/null 2>&1 | ||
210 | RESULT=3 | ||
211 | break; | ||
212 | fi | ||
213 | ADDR=$next_addr | ||
214 | else | ||
215 | /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 | ||
216 | ADDR=`expr $ADDR + $TMPSIZE` | ||
217 | fi | ||
218 | |||
219 | rm $TMPDATA > /dev/null 2>&1 | ||
220 | |||
221 | #progress | ||
222 | SPNUM=0 | ||
223 | while [ $SPNUM -lt $PROGSTEP ] | ||
224 | do | ||
225 | echo -n '.' | ||
226 | SPNUM=`expr $SPNUM + 1` | ||
227 | done | ||
228 | done | ||
229 | |||
230 | fi | ||
231 | |||
232 | echo '' | ||
233 | |||
234 | #finish | ||
235 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
236 | |||
237 | if [ $RESULT = 0 ] | ||
238 | then | ||
239 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
240 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
241 | |||
242 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
243 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
244 | echo 'Success!' | ||
245 | else | ||
246 | echo 'Error!' | ||
247 | exit $RESULT | ||
248 | fi | ||
249 | fi | ||
250 | done | ||
251 | |||
252 | exit 0 | ||
diff --git a/meta/packages/zaurus-updater/c7x0/updater.sh b/meta/packages/zaurus-updater/c7x0/updater.sh deleted file mode 100644 index 290030ca2d..0000000000 --- a/meta/packages/zaurus-updater/c7x0/updater.sh +++ /dev/null | |||
@@ -1,242 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | |||
4 | DATAPATH=$1 | ||
5 | TMPPATH=/tmp/update | ||
6 | TMPDATA=$TMPPATH/tmpdata.bin | ||
7 | TMPHEAD=$TMPPATH/tmphead.bin | ||
8 | |||
9 | WFLG_KERNEL=0 | ||
10 | WFLG_INITRD=0 | ||
11 | WFLG_MVERSION=0 | ||
12 | |||
13 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
14 | if [ "$RO_MTD_LINE" = "" ]; then | ||
15 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
16 | fi | ||
17 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
18 | RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
19 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
20 | RO_MTDBLK=/dev/mtdblock$RO_MTD_NO | ||
21 | RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` | ||
22 | |||
23 | RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` | ||
24 | if [ "$RW_MTD_LINE" = "" ]; then | ||
25 | RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
26 | fi | ||
27 | RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
28 | RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` | ||
29 | RW_MTD=/dev/mtd$RW_MTD_NO | ||
30 | RW_MTDBLK=/dev/mtdblock$RW_MTD_NO | ||
31 | RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` | ||
32 | |||
33 | LOGOCAL_MTD=/dev/mtd1 | ||
34 | |||
35 | VERBLOCK=0x48000 | ||
36 | MVRBLOCK=0x70000 | ||
37 | |||
38 | RESULT=0 | ||
39 | |||
40 | Cleanup(){ | ||
41 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
42 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
43 | rm $CTRLPATH/* > /dev/null 2>&1 | ||
44 | rm $DATAPATH/* > /dev/null 2>&1 | ||
45 | exit $1 | ||
46 | } | ||
47 | trap 'Cleanup 1' 1 15 | ||
48 | trap '' 2 3 | ||
49 | |||
50 | |||
51 | ### Check model ### | ||
52 | /sbin/writerominfo | ||
53 | MODEL=`cat /proc/deviceinfo/product` | ||
54 | echo 'MODEL:'$MODEL | ||
55 | case "$MODEL" in | ||
56 | SL-7500) ;; | ||
57 | SL-C700) ;; | ||
58 | SL-C750) ;; | ||
59 | SL-C760) ;; | ||
60 | SL-C860) ;; | ||
61 | SL-B500) ;; | ||
62 | SL-5600) ;; | ||
63 | *) | ||
64 | echo 'ERROR:Invalid model!' | ||
65 | echo 'Please reset' | ||
66 | while true | ||
67 | do | ||
68 | done | ||
69 | ;; | ||
70 | esac | ||
71 | |||
72 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
73 | |||
74 | cd $DATAPATH/ | ||
75 | |||
76 | for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN | ||
77 | do | ||
78 | if [ -e $TARGETFILE ] | ||
79 | then | ||
80 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
81 | DATASIZE=`wc -c $TARGETFILE` | ||
82 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
83 | |||
84 | #echo $TARGETFILE':'$DATASIZE'bytes' | ||
85 | TARGETTYPE=Invalid | ||
86 | case "$TARGETFILE" in | ||
87 | zImage.bin) TARGETTYPE=Kernel;; | ||
88 | zimage.bin) TARGETTYPE=Kernel;; | ||
89 | ZIMAGE.BIN) TARGETTYPE=Kernel;; | ||
90 | initrd.bin) TARGETTYPE=RoFs;; | ||
91 | INITRD.BIN) TARGETTYPE=RoFs;; | ||
92 | mversion.bin) TARGETTYPE=MasterVer;; | ||
93 | MVERSION.BIN) TARGETTYPE=MasterVer;; | ||
94 | *) | ||
95 | continue | ||
96 | ;; | ||
97 | esac | ||
98 | |||
99 | case "$TARGETTYPE" in | ||
100 | Kernel) | ||
101 | if [ $WFLG_KERNEL != 0 ] | ||
102 | then | ||
103 | continue | ||
104 | fi | ||
105 | WFLG_KERNEL=1 | ||
106 | echo 'kernel' | ||
107 | ISLOGICAL=1 | ||
108 | MODULEID=5 | ||
109 | MODULESIZE=0x13C000 | ||
110 | ADDR=`dc 0xE0000` | ||
111 | ISFORMATTED=1 | ||
112 | DATAPOS=0 | ||
113 | ONESIZE=524288 | ||
114 | HDTOP=`expr $DATASIZE - 16` | ||
115 | /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE | ||
116 | ;; | ||
117 | RoFs) | ||
118 | if [ $WFLG_INITRD != 0 ] | ||
119 | then | ||
120 | continue | ||
121 | fi | ||
122 | WFLG_INITRD=1 | ||
123 | echo 'RO file system' | ||
124 | ISLOGICAL=0 | ||
125 | MODULEID=6 | ||
126 | MODULESIZE=0x1900000 | ||
127 | ADDR=0 | ||
128 | ISFORMATTED=0 | ||
129 | TARGET_MTD=$RO_MTD | ||
130 | DATAPOS=16 | ||
131 | ONESIZE=1048576 | ||
132 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
133 | ;; | ||
134 | MasterVer) | ||
135 | if [ $WFLG_MVERSION != 0 ] | ||
136 | then | ||
137 | continue | ||
138 | fi | ||
139 | WFLG_MVERSION=1 | ||
140 | echo 'Master version' | ||
141 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
142 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
143 | /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 | ||
144 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
145 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
146 | echo 'Success!' | ||
147 | continue | ||
148 | ;; | ||
149 | *) | ||
150 | continue | ||
151 | ;; | ||
152 | esac | ||
153 | |||
154 | |||
155 | #format? | ||
156 | if [ $ISFORMATTED = 0 ] | ||
157 | then | ||
158 | echo -n 'Flash erasing...' | ||
159 | /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null | ||
160 | #/sbin/eraseall $TARGET_MTD 2 | ||
161 | echo 'done' | ||
162 | ISFORMATTED=1 | ||
163 | fi | ||
164 | |||
165 | echo '' | ||
166 | echo '0% 100%' | ||
167 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
168 | PROGSTEP=`expr 25 / $PROGSTEP` | ||
169 | if [ $PROGSTEP = 0 ] | ||
170 | then | ||
171 | PROGSTEP=1 | ||
172 | fi | ||
173 | |||
174 | #00 means header information | ||
175 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
176 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
177 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
178 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
179 | |||
180 | #echo 'found header' | ||
181 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
182 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
183 | |||
184 | #loop | ||
185 | while [ $DATAPOS -lt $DATASIZE ] | ||
186 | do | ||
187 | #data create | ||
188 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
189 | TMPSIZE=`wc -c $TMPDATA` | ||
190 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
191 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
192 | |||
193 | #handle data file | ||
194 | #echo 'ADDR='$ADDR | ||
195 | #echo 'SIZE='$TMPSIZE | ||
196 | if [ $ISLOGICAL = 0 ] | ||
197 | then | ||
198 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
199 | if [ "$next_addr" = "" ]; then | ||
200 | echo "ERROR:flash write" | ||
201 | rm $TMPDATA > /dev/null 2>&1 | ||
202 | RESULT=3 | ||
203 | break; | ||
204 | fi | ||
205 | ADDR=$next_addr | ||
206 | else | ||
207 | /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 | ||
208 | ADDR=`expr $ADDR + $TMPSIZE` | ||
209 | fi | ||
210 | |||
211 | rm $TMPDATA > /dev/null 2>&1 | ||
212 | |||
213 | #progress | ||
214 | SPNUM=0 | ||
215 | while [ $SPNUM -lt $PROGSTEP ] | ||
216 | do | ||
217 | echo -n '.' | ||
218 | SPNUM=`expr $SPNUM + 1` | ||
219 | done | ||
220 | done | ||
221 | |||
222 | echo '' | ||
223 | |||
224 | #finish | ||
225 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
226 | |||
227 | if [ $RESULT = 0 ] | ||
228 | then | ||
229 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
230 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
231 | |||
232 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
233 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
234 | echo 'Success!' | ||
235 | else | ||
236 | echo 'Error!' | ||
237 | exit $RESULT | ||
238 | fi | ||
239 | fi | ||
240 | done | ||
241 | |||
242 | exit 0 | ||
diff --git a/meta/packages/zaurus-updater/poodle/updater.sh b/meta/packages/zaurus-updater/poodle/updater.sh deleted file mode 100644 index a5e3f846ea..0000000000 --- a/meta/packages/zaurus-updater/poodle/updater.sh +++ /dev/null | |||
@@ -1,231 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | |||
4 | DATAPATH=$1 | ||
5 | TMPPATH=/tmp/update | ||
6 | TMPDATA=$TMPPATH/tmpdata.bin | ||
7 | TMPHEAD=$TMPPATH/tmphead.bin | ||
8 | |||
9 | |||
10 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
11 | if [ "$RO_MTD_LINE" = "" ]; then | ||
12 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
13 | fi | ||
14 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
15 | RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
16 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
17 | RO_MTDBLK=/dev/mtdblock$RO_MTD_NO | ||
18 | RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` | ||
19 | |||
20 | RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` | ||
21 | if [ "$RW_MTD_LINE" = "" ]; then | ||
22 | RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
23 | fi | ||
24 | RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
25 | RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` | ||
26 | RW_MTD=/dev/mtd$RW_MTD_NO | ||
27 | RW_MTDBLK=/dev/mtdblock$RW_MTD_NO | ||
28 | RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` | ||
29 | |||
30 | LOGOCAL_MTD=/dev/mtd1 | ||
31 | |||
32 | VERBLOCK=0x48000 | ||
33 | MVRBLOCK=0x70000 | ||
34 | |||
35 | RESULT=0 | ||
36 | |||
37 | Cleanup(){ | ||
38 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
39 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
40 | rm $CTRLPATH/* > /dev/null 2>&1 | ||
41 | rm $DATAPATH/* > /dev/null 2>&1 | ||
42 | exit $1 | ||
43 | } | ||
44 | trap 'Cleanup 1' 1 15 | ||
45 | trap '' 2 3 | ||
46 | |||
47 | |||
48 | ### Check model ### | ||
49 | /sbin/writerominfo | ||
50 | MODEL=`cat /proc/deviceinfo/product` | ||
51 | echo 'MODEL:'$MODEL | ||
52 | case "$MODEL" in | ||
53 | SL-B500) ;; | ||
54 | SL-5600) ;; | ||
55 | *) | ||
56 | echo 'ERROR:Invalid model!' | ||
57 | echo 'Please reset' | ||
58 | while true | ||
59 | do | ||
60 | done | ||
61 | ;; | ||
62 | esac | ||
63 | |||
64 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
65 | |||
66 | cd $DATAPATH/ | ||
67 | |||
68 | if [ -e consolescroll ] | ||
69 | then | ||
70 | ./consolescroll | ||
71 | fi | ||
72 | |||
73 | for TARGETFILE in zImage zimage zimage.bin initrd.bin mversion.bin | ||
74 | do | ||
75 | if [ -e $TARGETFILE ] | ||
76 | then | ||
77 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
78 | DATASIZE=`wc -c $TARGETFILE` | ||
79 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
80 | |||
81 | #echo $TARGETFILE':'$DATASIZE'bytes' | ||
82 | case "$TARGETFILE" in | ||
83 | zImage|zimage|zimage.bin) | ||
84 | echo 'kernel' | ||
85 | ISLOGICAL=1 | ||
86 | MODULEID=5 | ||
87 | MODULESIZE=0x13C000 | ||
88 | ADDR=`dc 0xE0000` | ||
89 | ISFORMATTED=1 | ||
90 | DATAPOS=0 | ||
91 | ONESIZE=524288 | ||
92 | HDTOP=`expr $DATASIZE - 16` | ||
93 | /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE | ||
94 | ;; | ||
95 | initrd.bin) | ||
96 | echo 'RO file system' | ||
97 | ISLOGICAL=0 | ||
98 | MODULEID=6 | ||
99 | MODULESIZE=0x1600000 | ||
100 | ADDR=0 | ||
101 | ISFORMATTED=0 | ||
102 | TARGET_MTD=$RO_MTD | ||
103 | DATAPOS=16 | ||
104 | ONESIZE=1048576 | ||
105 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
106 | ;; | ||
107 | mversion.bin) | ||
108 | echo 'Master version' | ||
109 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
110 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
111 | /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 | ||
112 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
113 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
114 | echo 'Success!' | ||
115 | continue | ||
116 | ;; | ||
117 | *) | ||
118 | continue; | ||
119 | ;; | ||
120 | esac | ||
121 | |||
122 | #check version | ||
123 | /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD | ||
124 | if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 | ||
125 | then | ||
126 | #no version info... | ||
127 | rm -f $TMPHEAD > /dev/null 2>&1 | ||
128 | DATAPOS=0 | ||
129 | fi | ||
130 | |||
131 | #format? | ||
132 | if [ $ISFORMATTED = 0 ] | ||
133 | then | ||
134 | echo -n 'Flash erasing...' | ||
135 | /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null | ||
136 | #/sbin/eraseall $TARGET_MTD 2 | ||
137 | echo 'done' | ||
138 | ISFORMATTED=1 | ||
139 | fi | ||
140 | |||
141 | echo '' | ||
142 | echo '0% 100%' | ||
143 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
144 | PROGSTEP=`expr 25 / $PROGSTEP` | ||
145 | if [ $PROGSTEP = 0 ] | ||
146 | then | ||
147 | PROGSTEP=1 | ||
148 | fi | ||
149 | |||
150 | #header information | ||
151 | if [ -e $TMPHEAD ] | ||
152 | then | ||
153 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
154 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
155 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
156 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
157 | |||
158 | #echo 'found header' | ||
159 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
160 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
161 | fi | ||
162 | |||
163 | #loop | ||
164 | while [ $DATAPOS -lt $DATASIZE ] | ||
165 | do | ||
166 | #data create | ||
167 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
168 | TMPSIZE=`wc -c $TMPDATA` | ||
169 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
170 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
171 | |||
172 | #handle data file | ||
173 | #echo 'ADDR='$ADDR | ||
174 | #echo 'SIZE='$TMPSIZE | ||
175 | if [ $ISLOGICAL = 0 ] | ||
176 | then | ||
177 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
178 | if [ "$next_addr" = "" ]; then | ||
179 | echo "ERROR:flash write" | ||
180 | rm $TMPDATA > /dev/null 2>&1 | ||
181 | RESULT=3 | ||
182 | break; | ||
183 | fi | ||
184 | ADDR=$next_addr | ||
185 | else | ||
186 | /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 | ||
187 | ADDR=`expr $ADDR + $TMPSIZE` | ||
188 | fi | ||
189 | |||
190 | rm $TMPDATA > /dev/null 2>&1 | ||
191 | |||
192 | #progress | ||
193 | SPNUM=0 | ||
194 | while [ $SPNUM -lt $PROGSTEP ] | ||
195 | do | ||
196 | echo -n '.' | ||
197 | SPNUM=`expr $SPNUM + 1` | ||
198 | done | ||
199 | done | ||
200 | |||
201 | echo '' | ||
202 | |||
203 | #finish | ||
204 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
205 | |||
206 | if [ $RESULT = 0 ] | ||
207 | then | ||
208 | if [ -e $VTMPNAME ] | ||
209 | then | ||
210 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
211 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
212 | fi | ||
213 | if [ -e $MTMPNAME ] | ||
214 | then | ||
215 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
216 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
217 | fi | ||
218 | echo 'Success!' | ||
219 | else | ||
220 | echo 'Error!' | ||
221 | # exit $RESULT | ||
222 | fi | ||
223 | fi | ||
224 | done | ||
225 | |||
226 | #exit 0 | ||
227 | |||
228 | echo 'Please reset' | ||
229 | while true | ||
230 | do | ||
231 | done | ||
diff --git a/meta/packages/zaurus-updater/spitz/updater.sh b/meta/packages/zaurus-updater/spitz/updater.sh deleted file mode 100755 index a748334cc7..0000000000 --- a/meta/packages/zaurus-updater/spitz/updater.sh +++ /dev/null | |||
@@ -1,280 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # | ||
4 | # Noodles' simpler update script. SL-C3000 only for the moment. | ||
5 | # | ||
6 | |||
7 | DATAPATH=$1 | ||
8 | TMPPATH=/tmp/update | ||
9 | TMPDATA=$TMPPATH/tmpdata.bin | ||
10 | TMPHEAD=$TMPPATH/tmphead.bin | ||
11 | |||
12 | WFLG_KERNEL=0 | ||
13 | WFLG_INITRD=0 | ||
14 | WFLG_HDD=0 | ||
15 | |||
16 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
17 | if [ "$RO_MTD_LINE" = "" ]; then | ||
18 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
19 | fi | ||
20 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
21 | RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
22 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
23 | RO_MTDBLK=/dev/mtdblock$RO_MTD_NO | ||
24 | RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` | ||
25 | |||
26 | RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` | ||
27 | if [ "$RW_MTD_LINE" = "" ]; then | ||
28 | RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
29 | fi | ||
30 | RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
31 | RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` | ||
32 | RW_MTD=/dev/mtd$RW_MTD_NO | ||
33 | RW_MTDBLK=/dev/mtdblock$RW_MTD_NO | ||
34 | RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` | ||
35 | |||
36 | LOGOCAL_MTD=/dev/mtd1 | ||
37 | |||
38 | VERBLOCK=0x48000 | ||
39 | MVRBLOCK=0x70000 | ||
40 | |||
41 | RESULT=0 | ||
42 | |||
43 | Cleanup(){ | ||
44 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
45 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
46 | rm $CTRLPATH/* > /dev/null 2>&1 | ||
47 | exit $1 | ||
48 | } | ||
49 | trap 'Cleanup 1' 1 15 | ||
50 | trap '' 2 3 | ||
51 | |||
52 | get_dev_pcmcia() | ||
53 | { | ||
54 | while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR; | ||
55 | do | ||
56 | echo $DEVS | ||
57 | done | ||
58 | } | ||
59 | get_dev_pcmcia_slot() | ||
60 | { | ||
61 | grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia | ||
62 | } | ||
63 | sleep 1 | ||
64 | IDE1=`get_dev_pcmcia_slot 1` | ||
65 | if [ "$IDE1" = "" ]; then | ||
66 | echo "Error!! There is no HDD. Now retrying..." | ||
67 | while [ "$IDE1" = "" ]; do | ||
68 | IDE1=`get_dev_pcmcia_slot 1` | ||
69 | done | ||
70 | echo "Found HDD!!" | ||
71 | fi | ||
72 | |||
73 | #LINUXFMT=ext2 | ||
74 | LINUXFMT=ext3 | ||
75 | MKE2FSOPT= | ||
76 | if [ "$LINUXFMT" = "ext3" ]; then | ||
77 | MKE2FSOPT=-j | ||
78 | fi | ||
79 | |||
80 | |||
81 | ### Check model ### | ||
82 | /sbin/writerominfo | ||
83 | MODEL=`cat /proc/deviceinfo/product` | ||
84 | if [ "$MODEL" != "SL-C3000" ] && [ "$MODEL" != "SL-C3100" ] && [ "$MODEL" != "SL-C3200" ] | ||
85 | then | ||
86 | echo 'MODEL:'$MODEL | ||
87 | echo 'ERROR:Invalid model!' | ||
88 | echo 'Please reset' | ||
89 | while true | ||
90 | do | ||
91 | done | ||
92 | fi | ||
93 | |||
94 | ### Check that we have a valid tar | ||
95 | for TARNAME in gnu-tar GNU-TAR | ||
96 | do | ||
97 | if [ -e $DATAPATH/$TARNAME ] | ||
98 | then | ||
99 | TARBIN=$DATAPATH/$TARNAME | ||
100 | fi | ||
101 | done | ||
102 | |||
103 | if [ ! -e $TARBIN ]; then | ||
104 | echo 'Please place a valid copy of tar as "gnu-tar" on your card' | ||
105 | echo 'Please reset' | ||
106 | while true | ||
107 | do | ||
108 | done | ||
109 | fi | ||
110 | |||
111 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
112 | |||
113 | cd $DATAPATH/ | ||
114 | |||
115 | # | ||
116 | # First do the kernel. | ||
117 | # | ||
118 | for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN | ||
119 | do | ||
120 | if [ -e $TARGETFILE -a $WFLG_KERNEL = 0 ] | ||
121 | then | ||
122 | # Get the size of the kernel. | ||
123 | DATASIZE=`wc -c $TARGETFILE` | ||
124 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
125 | |||
126 | echo 'Updating kernel.' | ||
127 | echo $TARGETFILE':'$DATASIZE' bytes' | ||
128 | /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE \ | ||
129 | $TARGETFILE > /dev/null 2>&1 | ||
130 | |||
131 | WFLG_KERNEL=1 | ||
132 | |||
133 | fi | ||
134 | done | ||
135 | |||
136 | # | ||
137 | # Now do the initrd. | ||
138 | # | ||
139 | for TARGETFILE in initrd.bin INITRD.BIN | ||
140 | do | ||
141 | if [ -e $TARGETFILE -a $WFLG_INITRD = 0 ] | ||
142 | then | ||
143 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
144 | DATASIZE=`wc -c $TARGETFILE` | ||
145 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
146 | |||
147 | WFLG_INITRD=1 | ||
148 | echo 'RO file system' | ||
149 | MODULEID=6 | ||
150 | MODULESIZE=0x500000 | ||
151 | ADDR=0 | ||
152 | TARGET_MTD=$RO_MTD | ||
153 | DATAPOS=16 | ||
154 | ONESIZE=1048576 | ||
155 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
156 | |||
157 | echo -n 'Flash erasing...' | ||
158 | /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null | ||
159 | echo 'done' | ||
160 | |||
161 | echo '' | ||
162 | echo '0% 100%' | ||
163 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
164 | PROGSTEP=`expr 28 / $PROGSTEP` | ||
165 | if [ $PROGSTEP = 0 ] | ||
166 | then | ||
167 | PROGSTEP=1 | ||
168 | fi | ||
169 | |||
170 | #00 means header information | ||
171 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
172 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
173 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
174 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
175 | |||
176 | #echo 'found header' | ||
177 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
178 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
179 | |||
180 | #loop | ||
181 | while [ $DATAPOS -lt $DATASIZE ] | ||
182 | do | ||
183 | #data create | ||
184 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
185 | TMPSIZE=`wc -c $TMPDATA` | ||
186 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
187 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
188 | |||
189 | #handle data file | ||
190 | #echo 'ADDR='$ADDR | ||
191 | #echo 'SIZE='$TMPSIZE | ||
192 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
193 | if [ "$next_addr" = "" ]; then | ||
194 | echo "ERROR:flash write" | ||
195 | rm $TMPDATA > /dev/null 2>&1 | ||
196 | RESULT=3 | ||
197 | break; | ||
198 | fi | ||
199 | ADDR=$next_addr | ||
200 | |||
201 | rm $TMPDATA > /dev/null 2>&1 | ||
202 | |||
203 | #progress | ||
204 | SPNUM=0 | ||
205 | while [ $SPNUM -lt $PROGSTEP ] | ||
206 | do | ||
207 | echo -n '.' | ||
208 | SPNUM=`expr $SPNUM + 1` | ||
209 | done | ||
210 | done | ||
211 | |||
212 | echo '' | ||
213 | |||
214 | #finish | ||
215 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
216 | |||
217 | if [ $RESULT = 0 ] | ||
218 | then | ||
219 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
220 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
221 | |||
222 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
223 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
224 | echo 'Success!' | ||
225 | else | ||
226 | echo 'Error!' | ||
227 | exit $RESULT | ||
228 | fi | ||
229 | fi | ||
230 | done | ||
231 | |||
232 | ## HDD image | ||
233 | for TARGETFILE in hdimage1.tgz HDIMAGE1.TGZ | ||
234 | do | ||
235 | if [ -e $TARGETFILE ]; then | ||
236 | if [ $WFLG_HDD != 0 ] | ||
237 | then | ||
238 | continue | ||
239 | fi | ||
240 | WFLG_HDD=1 | ||
241 | echo '' | ||
242 | echo 'HDD RO file system' | ||
243 | if [ ! -f /hdd1/NotAvailable ]; then | ||
244 | umount /hdd1 | ||
245 | fi | ||
246 | echo 'Now formatting...' | ||
247 | mke2fs $MKE2FSOPT /dev/${IDE1}1 2> /dev/null > /dev/null | ||
248 | e2fsck -p /dev/${IDE1}1 > /dev/null | ||
249 | if [ "$?" != "0" ]; then | ||
250 | echo "Error!" | ||
251 | exit "$?" | ||
252 | fi | ||
253 | |||
254 | mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1 | ||
255 | if [ "$?" != "0" ]; then | ||
256 | echo "Error!" | ||
257 | exit "$?" | ||
258 | fi | ||
259 | |||
260 | cd /hdd1 | ||
261 | echo 'Now extracting...' | ||
262 | gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf - | ||
263 | if [ "$?" != "0" ]; then | ||
264 | echo "Error!" | ||
265 | exit "$?" | ||
266 | fi | ||
267 | |||
268 | echo 'Success!' | ||
269 | |||
270 | #This can be useful for debugging | ||
271 | #/bin/sh -i | ||
272 | |||
273 | # remount as RO | ||
274 | cd / | ||
275 | umount /hdd1 | ||
276 | mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 | ||
277 | fi | ||
278 | done | ||
279 | |||
280 | exit 0 | ||
diff --git a/meta/packages/zaurus-updater/tosa/updater.sh b/meta/packages/zaurus-updater/tosa/updater.sh deleted file mode 100644 index 6d30aba231..0000000000 --- a/meta/packages/zaurus-updater/tosa/updater.sh +++ /dev/null | |||
@@ -1,241 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | |||
4 | DATAPATH=$1 | ||
5 | TMPPATH=/tmp/update | ||
6 | TMPDATA=$TMPPATH/tmpdata.bin | ||
7 | TMPHEAD=$TMPPATH/tmphead.bin | ||
8 | |||
9 | |||
10 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
11 | if [ "$RO_MTD_LINE" = "" ]; then | ||
12 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
13 | fi | ||
14 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
15 | RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
16 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
17 | RO_MTDBLK=/dev/mtdblock$RO_MTD_NO | ||
18 | RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` | ||
19 | |||
20 | RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` | ||
21 | if [ "$RW_MTD_LINE" = "" ]; then | ||
22 | RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
23 | fi | ||
24 | RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
25 | RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` | ||
26 | RW_MTD=/dev/mtd$RW_MTD_NO | ||
27 | RW_MTDBLK=/dev/mtdblock$RW_MTD_NO | ||
28 | RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` | ||
29 | |||
30 | LOGOCAL_MTD=/dev/mtd1 | ||
31 | |||
32 | VERBLOCK=0x48000 | ||
33 | MVRBLOCK=0x70000 | ||
34 | |||
35 | RESULT=0 | ||
36 | |||
37 | Cleanup(){ | ||
38 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
39 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
40 | rm $CTRLPATH/* > /dev/null 2>&1 | ||
41 | rm $DATAPATH/* > /dev/null 2>&1 | ||
42 | exit $1 | ||
43 | } | ||
44 | trap 'Cleanup 1' 1 15 | ||
45 | trap '' 2 3 | ||
46 | |||
47 | |||
48 | ### Check model ### | ||
49 | /sbin/writerominfo | ||
50 | MODEL=`cat /proc/deviceinfo/product` | ||
51 | if [ "$MODEL" != "SL-6000" ] > /dev/null 2>&1 | ||
52 | then | ||
53 | echo 'MODEL:'$MODEL | ||
54 | echo 'ERROR:Invalid model!' | ||
55 | echo 'Please reset' | ||
56 | while true | ||
57 | do | ||
58 | done | ||
59 | fi | ||
60 | |||
61 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
62 | |||
63 | cd $DATAPATH/ | ||
64 | |||
65 | if [ -e consolescroll ] | ||
66 | then | ||
67 | ./consolescroll | ||
68 | fi | ||
69 | |||
70 | for TARGETFILE in zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN | ||
71 | do | ||
72 | if [ -e $TARGETFILE ] | ||
73 | then | ||
74 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
75 | DATASIZE=`wc -c $TARGETFILE` | ||
76 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
77 | |||
78 | #echo $TARGETFILE':'$DATASIZE'bytes' | ||
79 | TARGETTYPE=Invalid | ||
80 | case "$TARGETFILE" in | ||
81 | zImage) TARGETTYPE=Kernel;; | ||
82 | zimage.bin) TARGETTYPE=Kernel;; | ||
83 | ZIMAGE) TARGETTYPE=Kernel;; | ||
84 | initrd.bin) TARGETTYPE=RoFs;; | ||
85 | INITRD.BIN) TARGETTYPE=RoFs;; | ||
86 | mversion.bin) TARGETTYPE=MasterVer;; | ||
87 | MVERSION.BIN) TARGETTYPE=MasterVer;; | ||
88 | *) | ||
89 | continue | ||
90 | ;; | ||
91 | esac | ||
92 | case "$TARGETTYPE" in | ||
93 | Kernel) | ||
94 | echo 'kernel' | ||
95 | ISLOGICAL=1 | ||
96 | MODULEID=5 | ||
97 | MODULESIZE=0x13C000 | ||
98 | ADDR=`dc 0xE0000` | ||
99 | ISFORMATTED=1 | ||
100 | DATAPOS=0 | ||
101 | ONESIZE=524288 | ||
102 | HDTOP=`expr $DATASIZE - 16` | ||
103 | /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE | ||
104 | ;; | ||
105 | RoFs) | ||
106 | echo 'RO file system' | ||
107 | ISLOGICAL=0 | ||
108 | MODULEID=6 | ||
109 | MODULESIZE=0x1E00000 | ||
110 | ADDR=0 | ||
111 | ISFORMATTED=0 | ||
112 | TARGET_MTD=$RO_MTD | ||
113 | DATAPOS=16 | ||
114 | ONESIZE=1048576 | ||
115 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
116 | ;; | ||
117 | MasterVer) | ||
118 | echo 'Maser version' | ||
119 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
120 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
121 | /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 | ||
122 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
123 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
124 | echo 'Success!' | ||
125 | continue | ||
126 | ;; | ||
127 | *) | ||
128 | continue; | ||
129 | ;; | ||
130 | esac | ||
131 | |||
132 | #check version | ||
133 | /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD | ||
134 | if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 | ||
135 | then | ||
136 | #no version info... | ||
137 | rm -f $TMPHEAD > /dev/null 2>&1 | ||
138 | DATAPOS=0 | ||
139 | fi | ||
140 | |||
141 | #format? | ||
142 | if [ $ISFORMATTED = 0 ] | ||
143 | then | ||
144 | echo -n 'Flash erasing...' | ||
145 | /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null | ||
146 | #/sbin/eraseall $TARGET_MTD 2 | ||
147 | echo 'done' | ||
148 | ISFORMATTED=1 | ||
149 | fi | ||
150 | |||
151 | echo '' | ||
152 | echo '0% 100%' | ||
153 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
154 | PROGSTEP=`expr 28 / $PROGSTEP` | ||
155 | if [ $PROGSTEP = 0 ] | ||
156 | then | ||
157 | PROGSTEP=1 | ||
158 | fi | ||
159 | |||
160 | #header information | ||
161 | if [ -e $TMPHEAD ] | ||
162 | then | ||
163 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
164 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
165 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
166 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
167 | |||
168 | #echo 'found header' | ||
169 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
170 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 | ||
171 | fi | ||
172 | |||
173 | #loop | ||
174 | while [ $DATAPOS -lt $DATASIZE ] | ||
175 | do | ||
176 | #data create | ||
177 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
178 | TMPSIZE=`wc -c $TMPDATA` | ||
179 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
180 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
181 | |||
182 | #handle data file | ||
183 | #echo 'ADDR='$ADDR | ||
184 | #echo 'SIZE='$TMPSIZE | ||
185 | if [ $ISLOGICAL = 0 ] | ||
186 | then | ||
187 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
188 | if [ "$next_addr" = "" ]; then | ||
189 | echo "ERROR:flash write" | ||
190 | rm $TMPDATA > /dev/null 2>&1 | ||
191 | RESULT=3 | ||
192 | break; | ||
193 | fi | ||
194 | ADDR=$next_addr | ||
195 | else | ||
196 | /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 | ||
197 | ADDR=`expr $ADDR + $TMPSIZE` | ||
198 | fi | ||
199 | |||
200 | rm $TMPDATA > /dev/null 2>&1 | ||
201 | |||
202 | #progress | ||
203 | SPNUM=0 | ||
204 | while [ $SPNUM -lt $PROGSTEP ] | ||
205 | do | ||
206 | echo -n '.' | ||
207 | SPNUM=`expr $SPNUM + 1` | ||
208 | done | ||
209 | done | ||
210 | |||
211 | echo '' | ||
212 | |||
213 | #finish | ||
214 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
215 | |||
216 | if [ $RESULT = 0 ] | ||
217 | then | ||
218 | if [ -e $VTMPNAME ] | ||
219 | then | ||
220 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
221 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
222 | fi | ||
223 | if [ -e $MTMPNAME ] | ||
224 | then | ||
225 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
226 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
227 | fi | ||
228 | echo 'Success!' | ||
229 | else | ||
230 | echo 'Error!' | ||
231 | # exit $RESULT | ||
232 | fi | ||
233 | fi | ||
234 | done | ||
235 | |||
236 | #exit 0 | ||
237 | |||
238 | echo 'Please reset' | ||
239 | while true | ||
240 | do | ||
241 | done | ||
diff --git a/meta/packages/zaurus-updater/zaurus-updater.bb b/meta/packages/zaurus-updater/zaurus-updater.bb index 05c7a9ca3a..052560dcc9 100644 --- a/meta/packages/zaurus-updater/zaurus-updater.bb +++ b/meta/packages/zaurus-updater/zaurus-updater.bb | |||
@@ -1,7 +1,7 @@ | |||
1 | DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update" | 1 | DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update" |
2 | DEPENDS = "encdec-updater-native" | 2 | DEPENDS = "encdec-updater-native" |
3 | LICENSE = "zaurus-updater" | 3 | LICENSE = "zaurus-updater" |
4 | PR = "r6" | 4 | PR = "r20" |
5 | 5 | ||
6 | PACKAGES = "" | 6 | PACKAGES = "" |
7 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 7 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
@@ -11,6 +11,10 @@ SRC_URI = "file://updater.sh \ | |||
11 | file://gnu-tar.gz" | 11 | file://gnu-tar.gz" |
12 | S = "${WORKDIR}" | 12 | S = "${WORKDIR}" |
13 | 13 | ||
14 | do_configure() { | ||
15 | sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh" | ||
16 | } | ||
17 | |||
14 | do_compile() { | 18 | do_compile() { |
15 | encdec-updater -e updater.sh | 19 | encdec-updater -e updater.sh |
16 | } | 20 | } |
diff --git a/meta/packages/zaurus-updater/zaurus-updater/updater.sh b/meta/packages/zaurus-updater/zaurus-updater/updater.sh new file mode 100644 index 0000000000..22d4b3914d --- /dev/null +++ b/meta/packages/zaurus-updater/zaurus-updater/updater.sh | |||
@@ -0,0 +1,481 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # One updater.sh to rule them all | ||
4 | # | ||
5 | # 2006.10.24 Marcin 'Hrw' Juszkiewicz | ||
6 | # - started work on common updater.sh | ||
7 | # - works on poodle, c760, spitz | ||
8 | # - breaks on tosa | ||
9 | # | ||
10 | # 2007.10.08 Marcin 'Hrw' Juszkiewicz | ||
11 | # - do not allow to flash files bigger then partition size | ||
12 | # - created functions for common stuff | ||
13 | # | ||
14 | # 2007.11.18 Dmitry 'Lumag' Baryshkov | ||
15 | # - fixes | ||
16 | # - tosa unbreak | ||
17 | # | ||
18 | # 2007.11.19 Marcin 'Hrw' Juszkiewicz | ||
19 | # - size check unbreak | ||
20 | # - c760/c860 has bigger rootfs - use it | ||
21 | # | ||
22 | # 2007.11.23 Koen Kooi | ||
23 | # - consistent error messages | ||
24 | # - fix flashing from case sensitive filesystem (e.g. ext2) | ||
25 | # | ||
26 | # 2007.11.23 Matthias 'CoreDump' Hentges | ||
27 | # - Always treat MTD_PART_SIZE as HEX when comparing sizes | ||
28 | # - Thanks to ZeroChaos for debugging | ||
29 | # | ||
30 | # 2007.12.04 Matthias 'CoreDump' Hentges | ||
31 | # - Unb0rk flashing of Akita kernels | ||
32 | # | ||
33 | # 2007.12.10 Marcin 'Hrw' Juszkiewicz | ||
34 | # - Reformatted file - please use spaces not tabs | ||
35 | # - "version check" is only on Tosa and Poodle - breaks other machines | ||
36 | # | ||
37 | # 2007.12.23 Matthias 'CoreDump' Hentges | ||
38 | # - Fix kernel install on spitz machines | ||
39 | # - Unify format of do_flashing()... | ||
40 | # - Display ${PR} of zaurus-updater.bb to the user | ||
41 | # - Polish HDD installer messages | ||
42 | # | ||
43 | # 2007.12.25 Matthias 'CoreDump' Hentges | ||
44 | # -Add support for installing / updating u-boot | ||
45 | |||
46 | # Set to "yes" to enable | ||
47 | ENABLE_UBOOT_UPDATER="no" | ||
48 | |||
49 | DATAPATH=$1 | ||
50 | TMPPATH=/tmp/update | ||
51 | TMPDATA=$TMPPATH/tmpdata.bin | ||
52 | TMPHEAD=$TMPPATH/tmphead.bin | ||
53 | |||
54 | FLASHED_KERNEL=0 | ||
55 | FLASHED_ROOTFS=0 | ||
56 | UNPACKED_ROOTFS=0 # spitz only | ||
57 | |||
58 | RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` | ||
59 | if [ "$RO_MTD_LINE" = "" ]; then | ||
60 | RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1` | ||
61 | fi | ||
62 | RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` | ||
63 | RO_MTD=/dev/mtd$RO_MTD_NO | ||
64 | ROOTFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2` | ||
65 | |||
66 | LOGOCAL_MTD=/dev/mtd1 | ||
67 | |||
68 | VERBLOCK=0x48000 | ||
69 | MVRBLOCK=0x70000 | ||
70 | |||
71 | RESULT=0 | ||
72 | |||
73 | Cleanup() | ||
74 | { | ||
75 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
76 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
77 | exit $1 | ||
78 | } | ||
79 | |||
80 | trap 'Cleanup 1' 1 15 | ||
81 | trap '' 2 3 | ||
82 | |||
83 | get_dev_pcmcia() | ||
84 | { | ||
85 | while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR; | ||
86 | do | ||
87 | echo $DEVS | ||
88 | done | ||
89 | } | ||
90 | |||
91 | get_dev_pcmcia_slot() | ||
92 | { | ||
93 | grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia | ||
94 | } | ||
95 | |||
96 | check_for_hdd() | ||
97 | { | ||
98 | IDE1=`get_dev_pcmcia_slot 1` | ||
99 | if [ "$IDE1" = "" ]; then | ||
100 | echo "Error: There is no microdrive. Retrying..." | ||
101 | while [ "$IDE1" = "" ]; do | ||
102 | IDE1=`get_dev_pcmcia_slot 1` | ||
103 | done | ||
104 | echo "Microdrive found." | ||
105 | fi | ||
106 | |||
107 | LINUXFMT=ext3 | ||
108 | MKE2FSOPT=-j | ||
109 | } | ||
110 | |||
111 | check_for_tar() | ||
112 | { | ||
113 | ### Check that we have a valid tar | ||
114 | for TARNAME in gnu-tar GNU-TAR | ||
115 | do | ||
116 | if [ -e $DATAPATH/$TARNAME ] | ||
117 | then | ||
118 | TARBIN=$DATAPATH/$TARNAME | ||
119 | fi | ||
120 | done | ||
121 | |||
122 | if [ ! -e $TARBIN ]; then | ||
123 | echo 'Error: Please place a valid copy of tar as "gnu-tar" on your card.' | ||
124 | echo 'Please reset' | ||
125 | while true | ||
126 | do | ||
127 | done | ||
128 | fi | ||
129 | } | ||
130 | |||
131 | do_rootfs_extraction() | ||
132 | { | ||
133 | UNPACKED_ROOTFS=1 | ||
134 | echo 'Installing HDD root file system' | ||
135 | if [ ! -f /hdd1/NotAvailable ]; then | ||
136 | umount /hdd1 | ||
137 | fi | ||
138 | echo -n '* Now formatting...' | ||
139 | mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1 | ||
140 | e2fsck -p /dev/${IDE1}1 > /dev/null | ||
141 | if [ "$?" != "0" ]; then | ||
142 | echo "FAILED" | ||
143 | echo "Error: Unable to create filesystem on microdrive!" | ||
144 | exit "$?" | ||
145 | else | ||
146 | echo "Done" | ||
147 | fi | ||
148 | |||
149 | mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1 | ||
150 | if [ "$?" != "0" ]; then | ||
151 | echo "Error: Unable to mount microdrive!" | ||
152 | exit "$?" | ||
153 | fi | ||
154 | |||
155 | cd /hdd1 | ||
156 | echo -n '* Now extracting (this can take over 5m)...' | ||
157 | gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf - | ||
158 | if [ "$?" != "0" ]; then | ||
159 | echo "FAILED" | ||
160 | echo "Error: Unable to extract root filesystem archive!" | ||
161 | exit "$?" | ||
162 | else | ||
163 | echo "Done" | ||
164 | fi | ||
165 | |||
166 | echo 'HDD Installation Finished.' | ||
167 | |||
168 | # remount as RO | ||
169 | cd / | ||
170 | umount /hdd1 | ||
171 | mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 | ||
172 | } | ||
173 | |||
174 | do_flashing() | ||
175 | { | ||
176 | if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ] | ||
177 | then | ||
178 | echo "Error: File is too big to flash!" | ||
179 | echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]" | ||
180 | return | ||
181 | fi | ||
182 | |||
183 | if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ] | ||
184 | then | ||
185 | #check version | ||
186 | /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD | ||
187 | |||
188 | if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 | ||
189 | then | ||
190 | #no version info... | ||
191 | rm -f $TMPHEAD > /dev/null 2>&1 | ||
192 | DATAPOS=0 | ||
193 | fi | ||
194 | fi | ||
195 | |||
196 | if [ $ISFORMATTED = 0 ] | ||
197 | then | ||
198 | /sbin/eraseall $TARGET_MTD > /dev/null 2>&1 | ||
199 | ISFORMATTED=1 | ||
200 | fi | ||
201 | |||
202 | if [ -e $TMPHEAD ] | ||
203 | then | ||
204 | VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' | ||
205 | MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' | ||
206 | /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
207 | /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
208 | |||
209 | /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 | ||
210 | /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 | ||
211 | fi | ||
212 | |||
213 | # Looks like Akita and Spitz are unique when it comes to kernel flashing | ||
214 | |||
215 | if [ "$ZAURUS" = "akita" -o "$ZAURUS" = "c3x00" ] && [ "$FLASH_TYPE" = "kernel" ] | ||
216 | then | ||
217 | # echo $TARGETFILE':'$DATASIZE'bytes' | ||
218 | echo "" | ||
219 | echo -n "Installing SL-Cxx00 kernel..." | ||
220 | echo ' ' > /tmp/data | ||
221 | test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 | ||
222 | /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 | ||
223 | test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 | ||
224 | echo "Done" | ||
225 | else | ||
226 | |||
227 | echo '' | ||
228 | echo '0% 100%' | ||
229 | PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` | ||
230 | PROGSTEP=`expr 25 / $PROGSTEP` | ||
231 | |||
232 | if [ $PROGSTEP = 0 ] | ||
233 | then | ||
234 | PROGSTEP=1 | ||
235 | fi | ||
236 | |||
237 | #loop | ||
238 | while [ $DATAPOS -lt $DATASIZE ] | ||
239 | do | ||
240 | #data create | ||
241 | bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE | ||
242 | TMPSIZE=`wc -c $TMPDATA` | ||
243 | TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` | ||
244 | DATAPOS=`expr $DATAPOS + $TMPSIZE` | ||
245 | |||
246 | #handle data file | ||
247 | if [ $ISLOGICAL = 0 ] | ||
248 | then | ||
249 | next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` | ||
250 | if [ "$next_addr" = "" ]; then | ||
251 | echo "Error: flash write" | ||
252 | rm $TMPDATA > /dev/null 2>&1 | ||
253 | RESULT=3 | ||
254 | break; | ||
255 | fi | ||
256 | ADDR=$next_addr | ||
257 | else | ||
258 | /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 | ||
259 | ADDR=`expr $ADDR + $TMPSIZE` | ||
260 | fi | ||
261 | |||
262 | rm $TMPDATA > /dev/null 2>&1 | ||
263 | |||
264 | #progress | ||
265 | SPNUM=0 | ||
266 | while [ $SPNUM -lt $PROGSTEP ] | ||
267 | do | ||
268 | echo -n '.' | ||
269 | SPNUM=`expr $SPNUM + 1` | ||
270 | done | ||
271 | done | ||
272 | fi | ||
273 | echo '' | ||
274 | |||
275 | #finish | ||
276 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
277 | |||
278 | if [ $RESULT = 0 ] | ||
279 | then | ||
280 | if [ -e $VTMPNAME ] | ||
281 | then | ||
282 | /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 | ||
283 | rm -f $VTMPNAME > /dev/null 2>&1 | ||
284 | fi | ||
285 | |||
286 | if [ -e $MTMPNAME ] | ||
287 | then | ||
288 | /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 | ||
289 | rm -f $MTMPNAME > /dev/null 2>&1 | ||
290 | fi | ||
291 | |||
292 | [ "$FLASH_TYPE" != "kernel" ] && echo 'Done.' | ||
293 | else | ||
294 | echo 'Error!' | ||
295 | fi | ||
296 | } | ||
297 | |||
298 | update_uboot() { | ||
299 | # The flashing part of this function is based on pdaXrom's | ||
300 | # updater.sh | ||
301 | |||
302 | if test "$ENABLE_UBOOT_UPDATER" != "yes" -o -z "$1" | ||
303 | then | ||
304 | echo "u-boot updates not allowed." | ||
305 | return | ||
306 | fi | ||
307 | |||
308 | echo "" | ||
309 | echo "Installing u-boot bootloader:" | ||
310 | |||
311 | DATASIZE=`wc -c $TARGETFILE` | ||
312 | FSIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
313 | |||
314 | echo -n "* Creating backup ($FSIZE Bytes)..." | ||
315 | if ( nandlogical /dev/mtd1 READ 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 | ||
316 | then | ||
317 | echo "Ok" | ||
318 | |||
319 | echo -n "* Flashing u-boot..." | ||
320 | if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE $1 ) > /dev/null 2>&1 | ||
321 | then | ||
322 | echo "Success" | ||
323 | else | ||
324 | echo "FAILED" | ||
325 | echo "ERROR: Installation of u-boot failed!" | ||
326 | |||
327 | echo -n "* Trying to restore backup..." | ||
328 | if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 | ||
329 | then | ||
330 | echo "Success" | ||
331 | echo "Your old bootloader has been restored" | ||
332 | else | ||
333 | echo "FAILED" | ||
334 | echo "Sorry, it's NAND-Restore time for you =(" | ||
335 | fi | ||
336 | fi | ||
337 | else | ||
338 | echo "FAILED" | ||
339 | echo "Could not create backup, aborting!" | ||
340 | echo "Your bootloader has not been altered in any way." | ||
341 | exit 1 | ||
342 | fi | ||
343 | } | ||
344 | |||
345 | ### Check model ### | ||
346 | /sbin/writerominfo | ||
347 | MODEL=`cat /proc/deviceinfo/product` | ||
348 | case "$MODEL" in | ||
349 | SL-B500|SL-5600) | ||
350 | ZAURUS='poodle' | ||
351 | ;; | ||
352 | SL-6000) | ||
353 | ZAURUS='tosa' | ||
354 | ;; | ||
355 | SL-C1000) | ||
356 | ZAURUS='akita' | ||
357 | ;; | ||
358 | SL-C700|SL-C750|SL-7500|SL-C760|SL-C860) | ||
359 | ZAURUS='c7x0' | ||
360 | ;; | ||
361 | SL-C3000|SL-C3100|SL-C3200) | ||
362 | ZAURUS='c3x00' | ||
363 | check_for_hdd | ||
364 | check_for_tar | ||
365 | ;; | ||
366 | *) | ||
367 | echo 'MODEL: '$MODEL 'is unsupported' | ||
368 | echo '' | ||
369 | echo 'Please reset' | ||
370 | while true | ||
371 | do | ||
372 | done | ||
373 | ;; | ||
374 | esac | ||
375 | |||
376 | clear | ||
377 | echo "---- Universal Zaurus Updater ZAURUS_UPDATER_VERSION ----" | ||
378 | echo 'MODEL: '$MODEL' ('$ZAURUS')' | ||
379 | |||
380 | mkdir -p $TMPPATH > /dev/null 2>&1 | ||
381 | |||
382 | cd $DATAPATH/ | ||
383 | |||
384 | for TARGETFILE in u-boot.bin U-BOOT.BIN zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ | ||
385 | do | ||
386 | if [ ! -e $TARGETFILE ] | ||
387 | then | ||
388 | continue | ||
389 | fi | ||
390 | |||
391 | rm -f $TMPPATH/*.bin > /dev/null 2>&1 | ||
392 | DATASIZE=`wc -c $TARGETFILE` | ||
393 | DATASIZE=`echo $DATASIZE | cut -d' ' -f1` | ||
394 | |||
395 | # make TARGETFILE lowercase | ||
396 | TARGETFILE_LC=`echo $TARGETFILE|tr A-Z a-z` | ||
397 | |||
398 | case "$TARGETFILE_LC" in | ||
399 | |||
400 | zimage|zimage.bin) | ||
401 | if [ $FLASHED_KERNEL != 0 ] | ||
402 | then | ||
403 | continue | ||
404 | fi | ||
405 | FLASHED_KERNEL=1 | ||
406 | ISLOGICAL=1 | ||
407 | MODULEID=5 | ||
408 | MTD_PART_SIZE=0x13C000 | ||
409 | ADDR=`dc 0xE0000` | ||
410 | ISFORMATTED=1 | ||
411 | DATAPOS=0 | ||
412 | ONESIZE=524288 | ||
413 | HDTOP=`expr $DATASIZE - 16` | ||
414 | /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE | ||
415 | FLASH_TYPE="kernel" | ||
416 | do_flashing | ||
417 | FLASH_TYPE="" | ||
418 | ;; | ||
419 | |||
420 | initrd.bin) | ||
421 | if [ $FLASHED_ROOTFS != 0 ] | ||
422 | then | ||
423 | continue | ||
424 | fi | ||
425 | echo 'root file system' | ||
426 | FLASHED_ROOTFS=1 | ||
427 | ISLOGICAL=0 | ||
428 | MODULEID=6 | ||
429 | MTD_PART_SIZE="0x$ROOTFS_SIZE" | ||
430 | ADDR=0 | ||
431 | ISFORMATTED=0 | ||
432 | TARGET_MTD=$RO_MTD | ||
433 | DATAPOS=16 | ||
434 | ONESIZE=1048576 | ||
435 | /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE | ||
436 | FLASH_TYPE="rootfs" | ||
437 | do_flashing | ||
438 | FLASH_TYPE="" | ||
439 | ;; | ||
440 | |||
441 | hdimage1.tgz) | ||
442 | if [ $UNPACKED_ROOTFS = 0 ] | ||
443 | then | ||
444 | do_rootfs_extraction | ||
445 | fi | ||
446 | ;; | ||
447 | |||
448 | u-boot.bin) | ||
449 | if [ FLASHED_UBOOT != 1 ] | ||
450 | then | ||
451 | update_uboot "$TARGETFILE" | ||
452 | FLASHED_UBOOT="1" | ||
453 | fi | ||
454 | ;; | ||
455 | |||
456 | *) | ||
457 | ;; | ||
458 | esac | ||
459 | done | ||
460 | |||
461 | # reboot | ||
462 | exit 0 | ||
463 | |||
464 | # bcut usage: bcut [OPTION] <input file> | ||
465 | |||
466 | # -a: start position | ||
467 | # -s: cut size | ||
468 | # -o: output file | ||
469 | |||
470 | # ModuleId informations used by verchg Sharp binary: | ||
471 | # | ||
472 | # 0 - master | ||
473 | # 1 - Maintaince | ||
474 | # 2 - Diagnostics | ||
475 | # 3 - rescue kernel | ||
476 | # 4 - rescue rootfs | ||
477 | # 5 - normal kernel | ||
478 | # 6 - normal rootfs | ||
479 | # 7 - /home/ | ||
480 | # 8 - parameter (whatever it means) | ||
481 | # | ||