[oe-commits] org.oe.oz354x zaurus-updater-reloaded: Add a new version of the zaurus updater.sh.
coredump commit
openembedded-commits at lists.openembedded.org
Sun Nov 5 17:52:03 UTC 2006
zaurus-updater-reloaded: Add a new version of the zaurus updater.sh.
Author: coredump at openembedded.org
Branch: org.openembedded.oz354x
Revision: d3b6b9d347a95a101dce765e56f874cc2280fc42
ViewMTN: http://monotone.openembedded.org/revision.psp?id=d3b6b9d347a95a101dce765e56f874cc2280fc42
Files:
1
packages/zaurus-updater-reloaded
packages/zaurus-updater-reloaded/files
packages/zaurus-updater-reloaded/files/gnu-tar.gz
packages/zaurus-updater-reloaded/files/updater.sh
packages/zaurus-updater-reloaded/zaurus-updater-reloaded.bb
mtn:manual_merge
true
Diffs:
#
# mt diff -ra311c0ba103bb3b54eb9878e0e17504e3368ec21 -rd3b6b9d347a95a101dce765e56f874cc2280fc42
#
#
#
# add_dir "packages/zaurus-updater-reloaded"
#
# add_dir "packages/zaurus-updater-reloaded/files"
#
# add_file "packages/zaurus-updater-reloaded/files/gnu-tar.gz"
# content [31454e1f0eeff432fc0749d0ad8ec760f8c55822]
#
# add_file "packages/zaurus-updater-reloaded/files/updater.sh"
# content [237fcf452aa6cfb3e61b0cfdb52166d84b48fd9f]
#
# add_file "packages/zaurus-updater-reloaded/zaurus-updater-reloaded.bb"
# content [2276b1799fca0002ed074145a1884723177bf7a6]
#
# set "packages/zaurus-updater-reloaded/files/gnu-tar.gz"
# attr "mtn:manual_merge"
# value "true"
#
============================================================
# packages/zaurus-updater-reloaded/files/gnu-tar.gz is binary
============================================================
--- packages/zaurus-updater-reloaded/files/updater.sh 237fcf452aa6cfb3e61b0cfdb52166d84b48fd9f
+++ packages/zaurus-updater-reloaded/files/updater.sh 237fcf452aa6cfb3e61b0cfdb52166d84b48fd9f
@@ -0,0 +1,406 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel at hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: updater.sh
+# Date: 04-Nov-06
+#
+#########################################################################################
+#
+# How to add a new machine:
+# - Add an entry in get_model() for the machine, using the parameters found in the machines
+# original updater.sh
+# - Set KERNEL_TYPES and ROOTFS_TYPES to the supported kernel and rootfs types:
+# - done ;)
+#
+
+SCRIPT_VERSION="0.0.0-developer-snapshot"
+ENABLE_DEBUG=1
+
+SRC_PATH=$1
+
+C_RED="\033[31m"
+C_WHITE="\033[38m"
+C_RESET="\033[0m"
+
+# Generic variables for Sharp's flashing code
+TMPPATH=/tmp/update
+TMPDATA=$TMPPATH/tmpdata.bin
+TMPHEAD=$TMPPATH/tmphead.bin
+RESULT=0
+LOGOCAL_MTD=/dev/mtd1
+
+# This is for debugging only
+test -z "$SRC_PATH" && SRC_PATH="/mnt/cf"
+test -e "$SRC_PATH/shell" && /bin/sh
+
+die(){
+ echo -e "$1"
+ echo "Please reset."
+ while true
+ do
+ done
+}
+
+debug_echo(){
+ test "$ENABLE_DEBUG" = 1 && echo -e "$1"
+}
+
+get_model(){
+ # w/o writerominfo /proc/deviceinfo/product returns "unknown"
+ /sbin/writerominfo
+ PDA_MODEL=`cat /proc/deviceinfo/product`
+
+ case "$PDA_MODEL" in
+ SL-B500|SL-5600) PDA_NAME="Poodle"
+ KERNEL_TYPES="NAND"
+ ROOTFS_TYPES="NAND sdimage"
+
+ KERNEL_ISLOGICAL=1
+ KERNEL_MODULEID=5
+ KERNEL_MODULESIZE=0x13C000
+ KERNEL_ADDR=`dc 0xE0000`
+ KERNEL_ISFORMATTED=1
+ KERNEL_DATAPOS=0
+ KERNEL_ONESIZE=524288
+
+ ROOTFS_ISLOGICAL=0
+ ROOTFS_MODULEID=6
+ ROOTFS_MODULESIZE=0x1600000
+ ROOTFS_ADDR=0
+ ROOTFS_ISFORMATTED=0
+ ROOTFS_DATAPOS=16
+ ROOTFS_ONESIZE=1048576
+ ;;
+ *) die "Error: Unknown model: [$PDA_MODEL]"
+ ;;
+ esac
+
+ echo "Found a $PDA_MODEL aka $PDA_NAME "
+ echo -e "\nKernel types: $KERNEL_TYPES"
+ echo -e "Rootfs types: $ROOTFS_TYPES"
+
+ echo -e "\n------------------------------"
+}
+
+update_model(){
+ for ktype in $KERNEL_TYPES
+ do
+ case "$ktype" in
+ NAND) update_nand_kernel;;
+ esac
+
+ echo -e "\n------------------------------"
+ done
+
+ for rtype in $ROOTFS_TYPES
+ do
+ case "$rtype" in
+ NAND) update_nand_rootfs;;
+ sdimage) update_sdimage_rootfs;;
+ esac
+
+ echo -e "\n------------------------------"
+ done
+}
+
+update_sdimage_rootfs(){
+ cd "$SRC_PATH"
+
+ for sdimage_src in sdimage1.tgz sdimage1.TGZ SIMAGE1.TGZ
+ do
+ if test -e "$sdimage_src" -a -z "$SDIMAGE_ROOTFS_IS_DONE"
+ then
+ if ! ( mount | grep -q "^/dev/mmcda" )
+ then
+ echo ""
+ echo "${C_RESET}Note: No SD card found!${C_WHITE}"
+ return
+ fi
+
+ if ! test -e ./gnu-tar
+ then
+ echo ""
+ echo "${C_RESET}Note: gnu-tar is missing!${C_WHITE}"
+ return
+ fi
+
+ echo ""
+ echo "Updating SD/MMC rootfs"
+
+ echo ""
+ echo -e "Do you want me to format \nthe first partition of \nyour SD/MMC card?"
+ echo -e "\nPlease note that this"
+ echo -e "a) is optional"
+ echo -e "b) will destroy any data on \n that partition"
+ echo -e ""
+
+ while true
+ do
+ echo -n "Format? [y|N]: "
+ read junk
+
+ case "$junk" in
+ y|Y) SD_FORMAT=yes
+ break ;;
+ n|N|"") SD_FORMAT=no
+ break ;;
+ esac
+ done
+
+ if test "$SD_FORMAT" = yes
+ then
+ umount /dev/mmcda1 >/dev/null 2>&1
+ echo ""
+ echo -n "Formatting to ext2..."
+
+ if ! mkfs.ext2 -m0 /dev/mmcda1 >/dev/null 2>&1
+ then
+ echo FAILED
+ die "mkfs.ext2 -m0 /dev/mmcda1 FAILED"
+ else
+ echo -e "done\n"
+ fi
+ else
+ echo -e "\nRemoving directories of your \nold installation:"
+
+ echo -n "*"
+ for dir in bin dev media proc sys usr boot etc lib mnt sbin tmp var
+ do
+ echo -n " $dir"
+ test -e "/mnt/card/$dir" && rm -rf "/mnt/card/$dir"
+ done
+
+ echo " *"
+ fi
+
+ # Well, as a last resort, rely on SHARPs auto-mounter
+ if test -e /mnt/card/NotAvailable
+ then
+ echo -e "\nPlease eject the SD/MMC \ncard and re-insert it."
+ echo "Press <ENTER> when finished"
+ read junk
+ sleep 2
+ fi
+
+ if test -e /mnt/card/NotAvailable
+ then
+ echo ""
+ echo "Couldn't mount SD/MMC card!"
+ else
+ echo -e "\nExtracting $sdimage_src \nThis can take up to 30m!"
+ ./gnu-tar -C /mnt/card -xzf ./$sdimage_src
+ fi
+
+ SDIMAGE_ROOTFS_IS_DONE=1
+ fi
+ done
+
+ test -z "$SDIMAGE_ROOTFS_IS_DONE" && echo -e "\nNote: No SD/MMC rootfs found!"
+}
+
+update_nand_kernel(){
+ cd "$SRC_PATH"
+
+ # Please note that zImage and zimage are the same on FAT16...
+ for kernel_src in zImage zimage zImage.bin zimage.bin
+ do
+ if test -e "$kernel_src" -a -z "$NAND_KERNEL_IS_DONE"
+ then
+ echo ""
+ echo "Updating NAND kernel"
+
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+ DATASIZE=`wc -c $kernel_src`
+ DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
+ HDTOP=`expr $DATASIZE - 16`
+ /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $kernel_src
+
+ generic_flash "$KERNEL_ISLOGICAL" "$KERNEL_MODULEID" "$KERNEL_MODULESIZE" \
+ "$KERNEL_ADDR" "$KERNEL_ISFORMATTED" "$KERNEL_DATAPOS" "$KERNEL_ONESIZE" "$kernel_src"
+
+ NAND_KERNEL_IS_DONE=1
+ fi
+ done
+
+ test -z "$NAND_KERNEL_IS_DONE" && echo -e "\nNote: No NAND kernel found!"
+}
+
+update_nand_rootfs(){
+ cd "$SRC_PATH"
+
+ RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
+ if [ "$RO_MTD_LINE" = "" ]; then
+ RO_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
+ fi
+ RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
+ RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2`
+ RO_MTD=/dev/mtd$RO_MTD_NO
+ RO_MTDBLK=/dev/mtdblock$RO_MTD_NO
+ RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /`
+
+ LOGOCAL_MTD=/dev/mtd1
+
+ # Please note that initrd.BIN and initrd.bin are the same on FAT16...
+ for rootfs_src in initrd.bin initrd.BIN
+ do
+ if test -e "$rootfs_src" -a -z "$NAND_ROOTFS_IS_DONE"
+ then
+ echo ""
+ echo "Updating NAND rootfs"
+
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+ DATASIZE=`wc -c $rootfs_src`
+ DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
+
+ TARGET_MTD=$RO_MTD
+ /sbin/bcut -s 16 -o $TMPHEAD $rootfs_src
+
+ generic_flash "$ROOTFS_ISLOGICAL" "$ROOTFS_MODULEID" "$ROOTFS_MODULESIZE" \
+ "$ROOTFS_ADDR" "$ROOTFS_ISFORMATTED" "$ROOTFS_DATAPOS" "$ROOTFS_ONESIZE" "$rootfs_src"
+
+ NAND_ROOTFS_IS_DONE=1
+ fi
+ done
+
+ test -z "$NAND_ROOTFS_IS_DONE" && echo -e "\nNote: No NAND rootfs found!"
+}
+
+# The following function is almost a 1-to-1 copy from Sharps updater.sh for Poodle
+# Guess why....
+generic_flash(){
+ ISLOGICAL="$1"
+ MODULEID="$2"
+ MODULESIZE="$3"
+ ADDR="$4"
+ ISFORMATTED="$5"
+ DATAPOS="$6"
+ ONESIZE="$7"
+ TARGETFILE="$8"
+
+ #check version
+ /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
+ if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
+ then
+ #no version info...
+ rm -f $TMPHEAD > /dev/null 2>&1
+ DATAPOS=0
+ fi
+
+ #format?
+ if [ $ISFORMATTED = 0 ]
+ then
+ echo ""
+ echo -n "Flash erasing..."
+ /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null
+
+ echo 'done'
+ ISFORMATTED=1
+ fi
+
+ echo ''
+ echo '0% 100%'
+ PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
+ PROGSTEP=`expr 25 / $PROGSTEP`
+ if [ $PROGSTEP = 0 ]
+ then
+ PROGSTEP=1
+ fi
+
+ #header information
+ if [ -e $TMPHEAD ]
+ then
+ VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
+ MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
+ /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+
+ #echo 'found header'
+ /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
+ /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
+ fi
+
+ #loop
+ while [ $DATAPOS -lt $DATASIZE ]
+ do
+ #data create
+ bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
+ TMPSIZE=`wc -c $TMPDATA`
+ TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
+ DATAPOS=`expr $DATAPOS + $TMPSIZE`
+
+ #handle data file
+ #echo 'ADDR='$ADDR
+ #echo 'SIZE='$TMPSIZE
+ if [ $ISLOGICAL = 0 ]
+ then
+ next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
+ if [ "$next_addr" = "" ]; then
+ echo "ERROR:flash write"
+ rm $TMPDATA > /dev/null 2>&1
+ RESULT=3
+ break;
+ fi
+ ADDR=$next_addr
+ else
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
+ ADDR=`expr $ADDR + $TMPSIZE`
+ fi
+
+ rm $TMPDATA > /dev/null 2>&1
+
+ #progress
+ SPNUM=0
+ while [ $SPNUM -lt $PROGSTEP ]
+ do
+ echo -n '.'
+ SPNUM=`expr $SPNUM + 1`
+ done
+ done
+
+ echo ''
+
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+
+ if [ $RESULT = 0 ]
+ then
+ if [ -e $VTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ rm -f $VTMPNAME > /dev/null 2>&1
+ fi
+ if [ -e $MTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+ rm -f $MTMPNAME > /dev/null 2>&1
+ fi
+ echo 'Success!'
+ else
+ echo 'Error!'
+# exit $RESULT
+ fi
+
+}
+
+cleanup(){
+ rm -f $VTMPNAME > /dev/null 2>&1
+ rm -f $MTMPNAME > /dev/null 2>&1
+ rm $CTRLPATH/* > /dev/null 2>&1
+ rm $DATAPATH/* > /dev/null 2>&1
+}
+
+main(){
+ clear
+ echo -e "${C_WHITE}\nupdater.sh reloaded v${SCRIPT_VERSION}"
+ echo -e "------------------------------\n"
+ get_model
+ update_model
+
+ cleanup
+
+ die "\n\nUpdate finished.${C_RESET}"
+}
+
+
+main
============================================================
--- packages/zaurus-updater-reloaded/zaurus-updater-reloaded.bb 2276b1799fca0002ed074145a1884723177bf7a6
+++ packages/zaurus-updater-reloaded/zaurus-updater-reloaded.bb 2276b1799fca0002ed074145a1884723177bf7a6
@@ -0,0 +1,35 @@
+DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update"
+DEPENDS = "encdec-updater-native"
+LICENSE = "zaurus-updater"
+
+PR = "r0"
+PV= "0.0.1"
+
+SRC_URI = "file://updater.sh \
+ file://gnu-tar.gz"
+S = "${WORKDIR}"
+
+do_compile() {
+ encdec-updater -e updater.sh
+}
+
+do_configure(){
+ cat ${WORKDIR}/updater.sh | sed "/^SCRIPT_VERSION/s/.*/SCRIPT_VERSION=\"${PV}\"/" > ${WORKDIR}/updater.sh_
+ mv ${WORKDIR}/updater.sh_ ${WORKDIR}/updater.sh
+
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 updater.sh ${DEPLOY_DIR_IMAGE}/updater.sh
+
+ case ${MACHINE} in
+ spitz|poodle )
+ install -m 0755 gnu-tar ${DEPLOY_DIR_IMAGE}/gnu-tar
+ ;;
+ *)
+ ;;
+ esac
+}
+
+addtask deploy before do_package after do_compile
More information about the Openembedded-commits
mailing list