10DG3 Jelly Bean 4.11 Ultimate 8.X Packet

  • 77 Antworten
  • Letztes Antwortdatum
S

svenu

Fortgeschrittenes Mitglied
52
Neu ab 21.9.2013!
Download Ultimate8.6

Bitte unbedingt die Readme im Lesen!


Bei Fragen oder Problemen bitte hier im Post Schreiben, 61 Apss tools

etc vergesst es , die Flashmacke mit 61 Aps liegt am cache bzw am "nicht WIPE" vor dem Flashen!

Update auf 8.6

Soory im configfile hatte sich ein fehler eingeschlichen. wer 8.5 gesaugt hat im letzten tread von mir das korregierte fcw file.

Ich aktualllisier deshalb auf version 8.6 das sollte den store wieder gütlich stimmen. Server.andriod wurde beendet. was ein Buchstabendreher ausmacht. tztz.....

Hier im Anhang nochmal das korregierte 8.6 configfile für die die beriets die 8.5 gesaugt haben die brauchen nicht nochmal runterladen einfach im firmwareinstall/config das file im anhang reinkopiren dann damit flashen.

Store Fix sozusagen.
Hotfix für 8.5 auf 8.6

 
Zuletzt bearbeitet:
  • Danke
Reaktionen: kuki77, TheSurfer und chris tablet
Hallo,

muss die sdcard unbedingt kleiner 2gb sein.
Ich habe im Moment nur eine 32gb zur Hand.
 
und wieder keine 91optimazing
nur 65 apps optimazing
 
Kann leider heute nicht mehr probieren, morgen teste ich auch. Hoffe das es klappt.
@tekilakos: Dachte das wäre jetzt die Lösung? svenu hat da jetzt schon viel Arbeit reimgesteckt.
Noch ein großer Dank an Dich svenu, für deine Mühen.
 
Bei mir hatts funktioniert. Tab geht wieder und hat 91 Apps geladen.

Vielen Dank
 
@Tekilakos hast du die Modifizierte Android ins Rom gesteckt und das ausgeführt?
Wenn ja schreib ich genau was ich davor gemacht habe.
Ich habe ein nandroid JB 121 Skript herundergeladen.
Habe alle Daten bis auf die durchnummerierten SH Skripte und den installer
Durch die ultimate Daten ersetzt. Das Skript flasht die Daten wie die 121 Version.
Danach wäre es bis auf den bootscrenn bricket. Also der bootloader bleibt immer der selbe.
Ultimate 8.3 draufgeflascht. Was das ? 61 Apsis optimising bekam ich angezeigt.
Im Ordner installer/bin ist das flashskript versteckt und dort sind 4 Skripte drinn.
Eins ist der Flash . Und dort steht drinn was beim flash passiert.
Die apps werden auf /data/APP kopiert und gleichzeitig/.restore/app-data
Also gleichzeitig fürs laufende und fürs restore system.
Ich weis auch das die Virtuellen Laufwerke, was eigentlich nur Ordner sind im/system
Nicht gelöscht werden normal sondern nur geleert.
Einer davon system/.restore/data_APP und darin wird beim normalen flash
Die apps angelegt und auch das bei 90 % ablaufende kopieren von "coping restore.IMG To sf"
Deshalb habe ich im Firmwareordner die android4.1.tar entpackt und darin einen leeren Ordner data_APP erstellt. Unter system/.restore
Das geflasht und bei 90% wird eine Fehlermeldung ausgeworfen
"Error , can not install restore.IMG Tod SF"
Reboot und Bootscreen bleibt hängen.
Nochmal mit normalen ultimate geflasht, rodelt bei 90% ewig
Im Flaschspeicher rum. Achso nach instller Skript in den remarks
Steht deutlich das file was die 91 Apps verhinter hat auf den Tablett keinen Namen und Endung. Ist sozusagen unsichtbar.
"File named "". " steht im flashskript.
und das file wird auch nur neu erstellt wenn es gekillt wird.
Ich habe bei mir lebend mit leeren Ordner über schrieben.
Was dann denn flash dazu veranlasst diese unsichtbare Datei neu
Anzulegen.
Seht euch die Skripte im Installer/bin an dort ist das flashsystem drinn
Und dort steht auch deutlich drinn wohin die apps kopiert werden.
Leider ist es aber so das ihr mit 61 apps die sollte versteckte
Datei restore.IMG die auf den tap unsichtbar ist von 1.21 draufhabt weshalb
Nach werksresett immer 61 apps kommen.
Man muss praktisch den flash erkennen lassen, Hoppla diese
Restore.IMG ist beschädigt mach ich mal lieber neu.
Deutlich dauert der flash bei 90% länger wenn dieses
"" file auf die flashfestplatte im yaffs2 Format kopiert wird.
Bleibt bestimmt 2-4 Minuten bei 90 Prozent stehen, danach
Hat man wieder 91 apps optimising.
Das SD was du schon immer gesucht hast ist restore.IMG
Das blödeerweise nur ersetzt wird wenn es defekt ist.
1.21 restore.IMG mit 1335 system mögen sich nicht =61 Apps
Original 403 ist identisch mit 411 135 aber nicht mit dem
121. Und genau deshalb 91 oder 61 apps.
Lies das Skript autrun im fsinstall das ruft im "installer" Ordner
Das flashskript auf und dort steht drinn
Was wann wo. der restore.IMG wird auf den tap unsichtbar
Gemacht. Deshalb kannste auch mit rootexplorer das ding nie finden.
Und das muss aber per trick auf auf die neue Version gebracht werden.
Ich uberschreibs mit leeren data-app Ordner und las es dann mit
Wiederholten Flaschen neu erstellen.
Wer ein Skript freak ist kann ja versuchen diese Macke des flashers
Auszubuegeln. Ich SAG in dann welches Skript es genau ist.
Denn der flash er konnte noch mehr als nur Flashen.

Der flash löscht nur bestimmte Ordner die fürs Arnova virtuelle platten sind.
Nur files ohne Namen ersetzte das Skript erst, wenn diese "gekillt" werden.
Andere Typs von Samsung mit cwm mod haben ja auch data.img system.IMG und so weiter.
Dumm nur das die Chinesen das verstecken und zwar alles in einem Ordner.
Wie findet man Dateien ohne Name und Endung auf einer platte?
Das 1.21 Skript ist anders als das 1335 und das 121 verstaut praktisch das virtuelle gespielte von ekken.
So das die Apps nicht im .restore landen was dann das Resultat 61 bringt.
Im Skript steht deutlich das das "File". Mit "" bekannt wird.
Spezial system was da auf unseren Typs läuft. Das cwm mods nie und nimmer funktionieren
, klar wie Klosbruehe. Auch die ganzen backups kopieren dummerweise das unsichtbar gemachte nicht.
Löschen und neu.

Also bei mir sind wieder 91 am wursteln. ich hab den restore.IMG im SF von 411.1355.
Auch sollte Flaschen mit usbstick ab 1355 funzen das notwendige Skript ist im 1335 dabei.
Sowie auch der bootloader für das ganze.


Vielleicht sollte man das Skript umschreiben Erasing nand ist erassing /system bis auf das restore.img. das
Den Namen "" trägt.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: TheSurfer
ich habe es so wie beschrieben gemacht

1.tab aus Strom Kabel dran
2.die Modifizierte Android4.1.tar ins Rom gesteckt und das mit der mSD 2gb Lexar ausgeführt
Kamm dann auch bei 90% error
3.tab dann aus gemacht und mSD heraus genommen
4.das richtige Android4.1.tar ins Ultimate 8.4 Rom gesteckt und das mSD 2gb Lexar ausgeführt
ging auch bis ende und dann wieder arnova Schriftzug 65 apps otimazing fertig
 
Komisch bei mir hat nach dem Fehler wieder alle Apps angezeigt, allerdings klapt es meist mit Windowsformatierung nie mit Minitool Partionmanager Formatiert und vom Tablett
Aus aber immer. Bei dir Glaube ich so langsam das dein USB bus einen Schlag hat, da hängt auch das SD zeugs dann.
Denn wenn ich das mit Standort Windows Formatiere dann gibt es auch nicht selten 89 oder
90 Apps.

Ich hab nur Sandisk und die Gehen.
Aber 65 Apps vs 61 schon mal Steigerung. Trotzdem ich hab bei mir die Apps so
Zurückgebracht bis das ich einen flash von 1.21 mit 135 Daten davor benutzt habe, wobei dir
auch dieser Fehler gezeigt wurde und der "Normale " Flash bei 90 Prozent eigentlich etwas langer brauchen sollte.
Im Ordner bin sind noch andere Skripte drinn auch was von wegen test und so.
Schon mal Eigentlich versucht mit USB stick zu Flaschen?
Install von udisk ist doch Ordner in der Firmware.
Mhhh langsam glaub ich es liegt am Sdslot. denn Partitionen gleich, versteckte
Daten gelöscht und Trotzdem gehts nicht.
 
  • Danke
Reaktionen: TheSurfer
Hmmm, ich habs versucht und bekomme auch wieder 65 apps. leider konnte ich nicht richtig schauen ob er wirklich bei 90% lange kopiert hat, hat mir irgendwie zu kurz gedauert.
Also probiere nachher nochmal.

Der ursprüngliche Beitrag von 17:27 Uhr wurde um 19:13 Uhr ergänzt:

So, nochmal mit einer anderen mSD probiert. Das selbe Ergebnis. 65 apps optimizing.
Und wie ich vermutet habe, er macht bei 90% ca 20-30sekunden rum und ist dann fertig, also nicht wie bei Dir svenu. Ich denke, er schreibt da nicht wirklich was.
Vermute, dass er diese ominöse Datei doch nicht gelöscht hat und an dieser Stelle nichts macht.

Der ursprüngliche Beitrag von 19:13 Uhr wurde um 19:15 Uhr ergänzt:

Es sind beides sanDisk mSD, die eine hat sogar 16GB und führt zum gleichen Ergebnis, wie die 2GB. Genauso habe ich unter Windows formatiert wie auch im Tablet. Kein Unterschied. Hab sogar danach eine aus meinem Handy geholt, die bespielt war, flasht genauso gut oder schlecht wie eine leere im tablet formatierte.

Der ursprüngliche Beitrag von 19:15 Uhr wurde um 19:34 Uhr ergänzt:

Ich finde auch in den scripten nichts? Wo stehen diese Zeilen und in welchem Script genau?

Kann man diese leerr Datei anders löschen, also evtl. mit einem rootfähigen dateimanager?

Der ursprüngliche Beitrag von 19:34 Uhr wurde um 20:19 Uhr ergänzt:

Ich habe auf de
m Tablet den Ordner system/.restore mit den Dateien data.tar(107.40MB),restore.sh(3,65kB),u-boot-logo.data(24,92kB),charge_anim.data(23,23kB),ota_adon.sh(9,15kB),sys_partition_end.sh(5,73kB),uboot_env_exclude(368Byte)
und den Ordner data_app indem befinden sich 15 apks angefangen mit AdAway bis Youtube.

Vielleicht hilft das?

Der ursprüngliche Beitrag von 20:19 Uhr wurde um 21:24 Uhr ergänzt:

Ich hab mir deine android4.1.tar datei mal angeschaut. Da stimmt die Struktur irgendwie nicht. Ist das vielleicht der fehler? Da sind viel mehr Ordner drin oberhalb, also 10DG... usw?
 
Jupp der Installer der Mapan ist uprigens ein virtuelles 4.03

im ordner Firmewrinstall/installer/initrd-cpio.gz das ist das flashbetriebstsystem. iswt nebebei ein 403 minisystem. steht jedenfalls so drinn.

bspinst_api = Anweisung zum Installiern dort steh auch drinn wo was wie landet.

Code:
# bspinst_api.sh
#
# Linux BSP installer drawing API for WonderMedia ARM SoC.
#
# Written by Vincent Chen <vincentchen@wondermedia.com.tw>
#
# Copyright 2008-2009 WonderMedia Corporation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
#    this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY WONDERMEDIA CORPORATION ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL WONDERMEDIA CORPORATION OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.


install_critical_error=0

# wmt_fdisk - fdisk TF/UDisk
# @patition_cfg in shell script
# @dev_name of TF/UDisk
wmt_fdisk ()
{
#TODO: Jody, because there is no localdisk partition in 4.1, we should re coinfig MMC partition when we use MMC as boot device
    local partition_cmd=$1
    local dev_name=$2

    local t=5
    while [ $t -gt 0 ]; do
        if [ -e $dev_name ]; then
            break;
        else
            info 0 "[WMT] waiting for root device($dev_name) ..."
            if [ $t -eq 1 ]; then
                info 1 "Error: Root device($dev_name) not found, upgrading stopped!"
                return 1
            else
                sleep 1
                let "t = t - 1"
            fi
        fi
    done
    
    info 1 "Fdisk root device($dev_name) ..."
    killall udevd
    sleep 5

    if [ $instenv_bootdev == "TF" ]; then
        #Jody: does it need 'p' here?
        umount ${dev_name}p*
        ${partition_cmd} | fdisk $dev_name

        #Jody: if system don't create dev-nod for new MMC partition, we do it
        #mknod "${dev_name}p1" b 179 1
        #mknod "${dev_name}p2" b 179 2
        #mknod "${dev_name}p3" b 179 3
        #mknod "${dev_name}p5" b 179 5
        #mknod "${dev_name}p6" b 179 6
        #mknod "${dev_name}p7" b 179 7
        #mknod "${dev_name}p8" b 259 0
    elif [ $instenv_bootdev == "UDISK" ]; then
        umount ${dev_name}*
        ${partition_cmd} | fdisk $dev_name
    fi
    
    return 0
}

unmount_all ()
{
    cd /
    sync
    if [ $instenv_bootdev != "NAND" ]; then
        /bin/umount $MOUNT_BOOT
    fi
    
    /bin/umount $instenv_fs_data    2>/dev/null
    /bin/umount $instenv_fs_system    2>/dev/null

    cd $instenv_top_dir     #restore our current dir.
}

# Quiet - do command in silence
# @command
Quiet ()
{
    $@ 2>/dev/null >/dev/null
#    $@

    return $?
}



# get_mtd - get mtd device by name
# @name
get_mtd ()
{
    desc=`echo $1 | sed 's/\ /\\\ /g'`
    cat /proc/mtd | grep "\"$desc\"" | cut -d: -f1 | sed 's/mtd/\/dev\/mtd/g'
}

# get_mtdblock - get mtdblock device by name
# @name
get_mtdblock ()
{
    get_mtd "$1" | sed 's/mtd/mtdblock/g'
}

# get_mtd_len - get mtd length by name
# @name
get_mtd_len ()
{
    tmp=`cat /proc/mtd |grep "\"$1\""| cut -d\  -f 2`
    len=`printf "0x%x" 0x$tmp`

    echo $len
}

# sf_inst - copy from a file onto SPI flash
# @name
# @file
#
# The default search path is the current folder
# if $src_dir is invalid.
sf_inst ()
{
    local name=$1
    local file=$2
    local mtd=

    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "Error: No MTD partition called $name."
        return 1
    fi

    if [ -e "$file" ]; then
        printf "Update %s to %s ... " $file $mtd
        Quiet flash_erase $mtd 0 0
        if [ -e /usr/sbin/flashcp ]; then
            Quiet flashcp $file $mtd
        else
            cat $file > $mtd
        fi
        printf "done\n"
    else
        info 1 "Error: not found $file, skip update $name."
    fi
}

# nand_erase: erase nand partition
# @discription of nand partition
# 
nand_erase ()
{
    local name=$1
    local mtd=

    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "No MTD partition called $name."
        return 1
    fi

    if [ ! -e "$mtd" ]; then
        return 2
    fi
    
    info 0 "flash eraseall $mtd ... "
    Quiet flash_erase $mtd 0 0
    info 0 "flash eraseall done, ret $?"
    return 0
}

# nand_inst - copy from a file onto Nand flash
# @name
# @file
#
# The default search path is the current folder
# if $src_dir is invalid.
nand_inst ()
{
    local name=$1
    local file=$2
    local mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "Error: No MTD partition called $name."
        return 1
    fi

    if [ ! -e "$file" ]; then
        return 2
    fi

    printf "Update %s to %s ... " $file $mtd
    nand_erase $name
    nandwrite -p $mtd $file
    printf "done\n"
    
    return 0
}



get_mtd_offset ()
{
    mtdlist=`cat /proc/wmt_mtd|cut -d\  -f2,3|tr \  @|sed 's/"//g'`

    flg_error="error"
    offset=$flg_error
    for i in $mtdlist; do
        mtd=`echo $i|cut -d@ -f2`
        if [ "$mtd" == "$1" ]; then
            offset=`echo $i|cut -d@ -f1`
            break;
        fi
    done
    
    if [ "$offset" == $flg_error ]; then
        echo "[WMT] *E* Failed to get offset of $1"
    else
        echo "0x$offset"
    fi
}


# get_mtd_num
# 
# get the mtd number by mtdblock's name
#
get_mtd_num()
{
    mtd_block=`get_mtdblock "$1"`
    mtd_num=`echo ${mtd_block##*mtdblock}`
    echo $mtd_num
}

# generate a random MAC address
# random_mac
#
# Usage:
#     random_mac
random_mac ()
{
    local name=ethaddr
    local random=`head -200 /dev/urandom | cksum | cut -f1 -d" "`

    local a1=`echo $random | cut -c1-2`
    local a2=`echo $random | cut -c3-4`
    local a3=`echo $random | cut -c5-6`
    
    setenv $name 00:40:63:$a1:$a2:$a3
    info 1 "Random Mac address : 00:40:63:$a1:$a2:$a3"
}

# restore_env
# @@ uboot environment variable name
# Restore some uboot environment variables
# Usage:
#     restore_env foo bar
restore_env()
{
    for name in $@; do 

        local value=`wmtenv get $name`
        local ret=`echo $value | grep failed`
    
        if [ "$value" = "" ] || [ -n "$ret" ]; then
            info 0 "restore $name not found."
        else 
            info 0  "restore_env: $name=$value"
            setenv $name $value
        fi
    done
}

# do_setenv
# @uboot_env    U-boot script in plain text format
# @mtd        MTD device used by U-Boot env.
# @flag        active flag
#
# Save uboot environment variables from u-boot plain text script
#
# Usage:
#     do_setenv /mnt/mmcblk0p1/env/uboot_env_sf /dev/mtd3 1
do_setenv ()
{
    local infile=$1
    local mtd=$2
    local flag=$3

    local crc32=installer/bin/crc32
    local outfile=/tmp/uboot_env.raw
    local tmpfile=/tmp/uboot_env.tmp

    dd if=/dev/zero of=${outfile} bs=1k count=64

    dos2unix -u ${infile}

    cat ${infile} | \
    tr '\n' '~' | sed 's/\\~//g' | tr '~' '\n' | \
    sed 's/\ \+/ /g' | \
    grep setenv | sed 's/setenv //' | sed 's/ /=/' | \
    sed 's/\\;/;/g' | tr "\n" "\0" > ${tmpfile}

    dd if=${tmpfile} of=${outfile} bs=1 seek=5 count=65531 conv=notrunc

    $crc32 -s 5 -x 1 ${outfile}
    $crc32 -s 5 -r ${outfile} > ${tmpfile}
    printf "\x${flag}" >> ${tmpfile}
    dd if=${tmpfile} of=${outfile} bs=1 seek=0 count=5 conv=notrunc

    flash_erase $mtd 0 0
    cat ${outfile} > $mtd

    #mv ${tmpfile} ${tmpfile}.${flag}
    #cp ${outfile} ${outfile}.${flag}
    rm ${tmpfile} ${outfile}
}



#
# Add additional uboot environment variables
#
# Usage:
#     env_addon outfile
env_addon()
{         
    info 0 "Adding additionl uboot env..."

    local value=`wmtenv get wmt.ethaddr.persist`
    
    if [ "$value" = "1" ]; then
        restore_env wmt.ethaddr.persist ethaddr
        info 1 "Don't change mac address"
    else 
        info 0 "No mac address customization"
        random_mac
    fi
    restore_env serialnum androidboot.serialno pcba.serialno
    restore_env wmt.btaddr.persist btaddr
}

#
# set uboot environment variables from u-boot plain text script
inst_env ()
{
    info 1 "Installing U-Boot env. cfg. to SF."

    #clean it to remove duplicated items
    wmtclean /tmp/setenv.out > /tmp/setenv.clean

    #DEBUG
    Quiet cp /tmp/setenv.out debug/setenv.out
    Quiet cp /tmp/setenv.clean debug/setenv.clean
    
    mtd_name="u-boot env. cfg. 1-SF"
    mtd=`get_mtd "${mtd_name}"`

    if [ ! -z "${mtd}" ]; then
        do_setenv /tmp/setenv.clean ${mtd} 1
    else
        info 1 "No MTD partition called ${mtd_name}."
        install_critical_error=1
        return 1
    fi

    mtd_name="u-boot env. cfg. 2-SF"
    mtd=`get_mtd "${mtd_name}"`

    if [ ! -z "${mtd}" ]; then
        do_setenv /tmp/setenv.clean ${mtd} 0
    else
        info 0 "No MTD partition called ${mtd_name}."
    fi
}


#
# PLEASE DON'T MODIFY FUNCTIONS ABOVE THIS LINE.
# THOSE FUNCTIONS ARE THE HEART OF BSPINST2.
#
inst_wload()
{
    local wload_name=$instenv_wload

    local mtd_wload=`get_mtd "w-load-SF"`
        
    if [ -z "$instenv_wload" ]; then
        local wload_updateid=`strings ${mtd_wload}  | grep "UPDATEID_"` 
        info 0 "Select w-load according to $wload_updateid ..."
        if [ -z "$wload_updateid" ]; then
            info 0 "[WMT] old w-load in board, need to update, use default w-load."
            wload_name=firmware/w-load.bin
        else
            if [ "$wload_updateid" == "UPDATEID_DDR3_800M_800M_32bit_4_512MB" ]; then
                wload_name="*_DDR3_5_3_2_4_512MB"
            elif [ "$wload_updateid" == "UPDATEID_DDR3_800M_800M_16bit_2_256MB" ]; then
                wload_name="*_DDR3_5_3_1_2_256MB"
            else
                wload_name=`echo $wload_updateid | sed 's/UPDATEID/*/g'`
            fi
    
            info 0 wload_wild_name=$wload_name    
            wload_name=`find firmware -name ${wload_name}.bin`
            info 1 "Auto probe wload_name=$wload_name"
        fi
    fi

    if [ -z "$wload_name" ]; then
        info 1 "Error: No wload file defined. Abort!"
        install_critical_error=1
        return 1
    fi

    if [ ! -f "$wload_name" ]; then
        info 1 "Error: can not find wload: $wload_name. Abort!"
        install_critical_error=1
        return 1
    fi

 
    local buildno_board=`strings ${mtd_wload} | grep "BUILDID_"` 
    local buildno_file=`strings ${wload_name} | grep "BUILDID_"` 

    if [ -z "$buildno_file" ]; then
        info 1 "Error: wload:$wload_name invalid, Abort!"
        install_critical_error=1
        return 1
    fi
    
    info 0 "wload BUILDID board: $buildno_board"
    info 0 "wload BUILDID file : $buildno_file"

    cat ${mtd_wload} > /tmp/board.wload
    local wsize=`stat -c%s $wload_name`

    dd if=/tmp/board.wload of=/tmp/board.wload2 bs=$wsize count=1

    if diff --brief /tmp/board.wload2 $wload_name; then
        info 1 "Skipped same $wload_name."
    else
        info 1 "Installing $wload_name..."
        sf_inst "w-load-SF" "$wload_name"
    fi

    Quiet cp /tmp/board.wload debug/board.wload
    Quiet cp /tmp/board.wload2 debug/board.wload2
    rm /tmp/board.wload /tmp/board.wload2
    return 0
}

inst_uboot()
{
    if [ ! -f "$instenv_uboot" ]; then
        info 1 "Uboot:$instenv_uboot not found, Abort!"
        install_critical_error=1
        return 1
    else
        info 0 "Uboot = $instenv_uboot"
    fi
    
    local uboot_buildno_file=`strings $instenv_uboot  | grep "BUILDID_"` 
    if [ -z "$uboot_buildno_file" ] ; then
        info 1 "Error: $instenv_uboot is invalida, Abort!"
        install_critical_error=1
        return 1
    fi

    local mtd_uboot=`get_mtd "u-boot-SF"`
    local uboot_buildno_board=`strings ${mtd_uboot}  | grep "BUILDID_"` 

    info 0 "uboot BUILDID board: $uboot_buildno_board"
    info 0 "uboot BUILDID file : $uboot_buildno_file"

    if [ "$uboot_buildno_file" \> "$uboot_buildno_board" ]; then
        info 1 "Installing $instenv_uboot..."
        sf_inst "u-boot-SF" "$instenv_uboot"
    else
        info 1 "Skipped same u-boot file."
    fi
}


update_logo()
{
    info 1 "Installing u-boot logo to NAND..."
    
    local name="${BLK_NAND_LOGO}"
    local logo_dir="$instenv_logo_path"
    local mtd=
    
    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "No MTD partition called $name."
        install_critical_error=1
        return 1
    fi

    if [ ! -e "$mtd" ]; then
        info 1 "No MTD partition called $mtd."
        install_critical_error=1
        return 2
    fi

    info 1 "Erasing LOGO partition(Nand)..."
    nand_erase $name
    
    if [ -f $instenv_uboot_logo/u-boot-logo.data ]; then
        nandwrite -p $mtd $instenv_uboot_logo/u-boot-logo.data
        info 0 "update $instenv_uboot_logo/u-boot-logo.data ret $?"
    else
        info 0 "Skip $instenv_uboot_logo/u-boot-logo.data"
    fi

    if [ -f $instenv_uboot_logo/charge_anim.data ]; then
        #use customize logo first
        nandwrite -p -s $UBOOT_CHARGE_LOG_OFFSET  $mtd $instenv_uboot_logo/charge_anim.data
        info 0 "update $instenv_uboot_logo/charge_anim.data ret $?"
    elif [ -f $logo_dir/charge_anim.data ]; then
        #no customize logo, use default logo
        nandwrite -p -s $UBOOT_CHARGE_LOG_OFFSET  $mtd $logo_dir/charge_anim.data
        info 0 "update $logo_dir/charge_anim.data ret $?"
    else
        info 0 "Skip $logo_dir/charge_anim.data"
    fi
        
    return 0
}

check_ramdisk ()
{
    local org_path="firmware"
    local new_path="/tmp"
    local ramdisk_path="/tmp/new_ramdisk"
    local ret_path=
    
    if [ $instenv_bootdev == "TF" ] || [ "$instenv_ddrsize" == "1024MB" ]; then
        rm -rf $ramdisk_path
        mkdir -p $ramdisk_path
        cp firmware/ramdisk.img $new_path/ramdisk.gz 
        gunzip $new_path/ramdisk.gz 
        cd $ramdisk_path
        cpio -idm <$new_path/ramdisk 
        if [ $instenv_bootdev == "TF" ]; then
            #modify device of partiton for TF
            sed -i 's/mount yaffs2 mtd@system \/system ro remount/mount ext4 \/dev\/block\/mmcblk1p2 \/system ro remount/g' init.rc
            sed -i 's/mount yaffs2 mtd@system \/system/wait \/dev\/block\/mmcblk1p2\n wait \/dev\/block\/mmcblk1p5\n wait \/dev\/block\/mmcblk1p6\n mount ext4 \/dev\/block\/mmcblk1p2 \/system/g' init.rc
            sed -i 's/mount yaffs2 mtd@data \/data nosuid nodev/mount ext4 \/dev\/block\/mmcblk1p5 \/data/g' init.rc
            sed -i 's/mount yaffs2 mtd@cache \/cache nosuid nodev/mount ext4 \/dev\/block\/mmcblk1p6 \/cache/g' init.rc
        fi
        if [ "$instenv_ddrsize" == "1024MB" ]; then
            #modify ump_memory_size from 96MB to 128MB for 1GB DDR
            sed -i 's/ump_memory_size=100663296/ump_memory_size=134217728/g' init.rc
        fi
        #make new ramdisk after modification
        rm $new_path/ramdisk
        find . | cpio -o -H newc | gzip > $new_path/ramdisk.gz
        cd $new_path
        mv ramdisk.gz ramdisk.img
        
        cp $instenv_top_dir/firmware/ramdisk-recovery.img $new_path/
        #modify recovery.fstab in ramdisk-recovery for TF
        if [ $instenv_bootdev == "TF" ]; then
            rm -rf $ramdisk_path
            mkdir -p $ramdisk_path
            mv $new_path/ramdisk-recovery.img $new_path/ramdisk-recovery.gz 
            gunzip $new_path/ramdisk-recovery.gz 
            cd $ramdisk_path
            cpio -idm <$new_path/ramdisk-recovery 
            sed -i 's/yaffs2       system/ext4       \/dev\/block\/mmcblk1p2/g' etc/recovery.fstab
            sed -i 's/yaffs2       data/ext4       \/dev\/block\/mmcblk1p5/g' etc/recovery.fstab
            sed -i 's/yaffs2       cache/ext4       \/dev\/block\/mmcblk1p6/g' etc/recovery.fstab
            sed -i 's/mtd          misc/emmc       \/dev\/block\/mmcblk1p7/g' etc/recovery.fstab
            
            #make new ramdisk-recovery after modification
            rm $new_path/ramdisk-recovery
            find . | cpio -o -H newc | gzip > $new_path/ramdisk-recovery.gz
            cd $new_path
            mv ramdisk-recovery.gz ramdisk-recovery.img
        fi
        rm -rf $ramdisk_path
        
        cd $instenv_top_dir

        ret_path=$new_path
    else
        ret_path=$org_path
    fi

    echo "$ret_path"
}

get_ramdisk_path ()
{
    local ret_path="firmware/ramdisk.img"
    
    if [ $instenv_bootdev == "TF" ] || [ "$instenv_ddrsize" == "1024MB" ]; then
        if [ $instenv_bootdev == "TF" ]; then
            info 1 "Error: TF card as boot device is not support yet"
            install_critical_error=1
            return 1            
        fi
        if [ "$instenv_ddrsize" == "1024MB" ]; then
            if [ ! -f firmware/ramdisk-1024M.img ]; then
                info 1 "Error: no ramdisk-1024M.img found, your may need to run prepare_android_rootfs.sh again"
                install_critical_error=1
                return 1                        
            fi
            ret_path="firmware/ramdisk-1024M.img"
        fi
        
    fi

    echo "$ret_path"
}

inst_logo_bootimg()
{
    if [ ! -f "$instenv_kernel" ]; then
        info 1 "Error: can not find kernel: $instenv_kernel. Abort!"
        install_critical_error=1
        return 1
    fi

    #check if need to modify ramdisk.img/ramdisk-recovery.img
    #local ramdisk_path=`check_ramdisk`
    local ramdisk_path=`get_ramdisk_path`
    info 0 "ramdisk_path = $ramdisk_path, kernel = $instenv_kernel"
    #mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path/ramdisk.img -o /tmp/boot.img
    mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path -o /tmp/boot.img
    if [ $? -ne 0 ] ; then
        info 1  "Error: failed to make boot.img! Abort!"
        install_critical_error=1
        return 1
    fi
    #mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path/ramdisk-recovery.img -o /tmp/recovery.img
    mkbootimg --kernel $instenv_kernel --ramdisk firmware/ramdisk-recovery.img -o /tmp/recovery.img
    if [ $? -ne 0 ] ; then
        info 1  "Error: failed to make recovery.img! Abort!"
        install_critical_error=1
        return 1
    fi

    if [ $instenv_bootdev == "NAND" ]; then
        local mtd=`get_mtd "${BLK_NAND_LOGO}"`
        if [ "$mtd" == "" ] ; then
            info 1 "Error: Cannot find ${BLK_NAND_LOGO} partition in NAND, Abort!"
            install_critical_error=1
            return 1
        fi

        #disable garbage collection of yaffs2, or it will be too slow for ESLC(only for Hynix nand)
        sync
        echo 0 >  /sys/module/yaffs/parameters/yaffs_bg_enable
        info 1 "Installing boot.img to NAND..."
        nand_inst "${BLK_NAND_BOOT}" /tmp/boot.img
        setenv boot-img-len `ls /tmp/boot.img -al | sed 's/ \+/ /g' | cut -d' ' -f5`
        inc_ratio 5

        info 1 "Installing recovery.img to NAND..."
        nand_inst "${BLK_NAND_RECOV}" /tmp/recovery.img
        setenv recov-img-len `ls /tmp/recovery.img -al | sed 's/ \+/ /g' | cut -d' ' -f5`        
        inc_ratio 5

        update_logo
        #enable garbage collection of yaffs2
        echo 1 >  /sys/module/yaffs/parameters/yaffs_bg_enable
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        local mtd_kernel=
        if [ $instenv_bootdev == "TF" ]; then
            info 1 "Prepare kernel partition(TF)..."
            mtd_kernel=/dev/mmcblk1p1
        elif [ $instenv_bootdev == "UDISK" ]; then
            info 1 "Prepare kernel partition(UDISK)..."
            mtd_kernel=/dev/sda1
        fi

        umount ${mtd_kernel}
        mkdosfs ${mtd_kernel}
        if [ $? -ne 0 ] ; then
            info 1  "Error: failed to format kernel partition! Abort!"
            install_critical_error=1
            return 1
        fi

        /bin/mkdir -p $MOUNT_BOOT
        mount ${mtd_kernel} $MOUNT_BOOT
        if [ $? -ne 0 ] ; then
            info 1 "Error: failed to mount kernel partition. Abort!"
            install_critical_error=1
            return 1
        fi
        info 1 "Installing boot.img/recovery.img/logo ..."
        /bin/cp -af /tmp/boot.img $MOUNT_BOOT
        /bin/cp -af /tmp/recovery.img $MOUNT_BOOT
        /bin/cp -af $instenv_uboot_logo/u-boot-logo.data $MOUNT_BOOT
        if [ -f $instenv_uboot_logo/charge_anim.data ]; then
            #use customize logo first
            /bin/cp -af $instenv_uboot_logo/charge_anim.data $MOUNT_BOOT            
        else
            #use default logo
            /bin/cp -af $instenv_logo_path/charge_anim.data $MOUNT_BOOT            
        fi

    else
        info 1 "Error: unknown root device:$instenv_bootdev! Abort!"
        install_critical_error=1
        return 1
    fi

    #cp logo data to system/.restore folder for OTA package's tool
    mkdir -p ${instenv_fs_system}/.restore
    Quiet cp $instenv_uboot_logo/u-boot-logo.data  ${instenv_fs_system}/.restore/  
    if [ -f $instenv_uboot_logo/charge_anim.data ]; then
        #use customize logo first
        Quiet cp $instenv_uboot_logo/charge_anim.data ${instenv_fs_system}/.restore/
    else
        #use default logo
        Quiet cp $instenv_logo_path/charge_anim.data ${instenv_fs_system}/.restore/
    fi
}


format_disk()
{
    if [ $instenv_bootdev == "TF" ]; then
        if [ -e "installer/bin/partition.sh" ]; then
            wmt_fdisk "installer/bin/partition.sh" "/dev/mmcblk1"
        else
            info 1 "Partition file not found, upgrading stopped!"
            return 1
        fi
    elif [ $instenv_bootdev == "UDISK" ]; then
        if [ -e "installer/bin/partition.sh" ]; then
            wmt_fdisk "installer/bin/partition.sh" "/dev/sda"
        else
            info 1 "Partition file not found, upgrading stopped!"
            return 1
        fi
    fi
    
    return $?
}


inst_systemdata()
{
    local mnt_system=$instenv_fs_system
    local mnt_data=$instenv_fs_data

    local mtd_system=
    local mtd_data=
    local mtd_cache=

    local prev_ratio=$CompleteRatio
    local _ratio=
    local ret=

    #mount /android/data , /android/system
    if [ $instenv_bootdev == "NAND" ]; then
        mtd_system=`get_mtdblock "${BLK_NAND_SYS}"`
        mtd_data=`get_mtdblock "${BLK_NAND_ANDROIDDATA}"`

        info 1 "Erasing System partition(Nand)..."
        umount ${mtd_system} 2>/dev/null
        nand_erase ${BLK_NAND_SYS}
        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format FileSystem partition(NAND)..."
            install_critical_error=1
            return 1
        fi
        
        info 1 "Erasing Data partition(Nand)..."
        umount ${mtd_data} 2>/dev/null
        nand_erase "${BLK_NAND_ANDROIDDATA}"

        info 1 "Erasing Cache/misc partition(Nand)..."
        nand_erase "${BLK_NAND_MISC}"
        nand_erase "${BLK_NAND_ANDROIDCACHE}"
        
        mount -t yaffs2 -o rw $mtd_system $mnt_system
        mount -t yaffs2 -o rw $mtd_data $mnt_data
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        format_disk
        if [ $? -ne 0 ] ; then
            info 1 "Error: in format_disk($instenv_bootdev)"
            install_critical_error=1
            return 1
        fi
        if [ $instenv_bootdev == "TF" ]; then
            mtd_system=/dev/mmcblk1p2
            mtd_data=/dev/mmcblk1p5
            mtd_cache=/dev/mmcblk1p6
        elif [ $instenv_bootdev == "UDISK" ]; then
            mtd_system=/dev/sda2
            mtd_data=/dev/sda5
            mtd_cache=/dev/sda6
        fi

        info 1 "Erasing System partition..."
        umount ${mtd_system}
        mkfs.ext4 ${mtd_system}

        info 1 "Erasing Data partition..."
        umount ${mtd_data}
        mkfs.ext4 ${mtd_data}
        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format FileSystem partition!"
            install_critical_error=1
            return 1
        fi

        info 1 "Erasing Cache partition..."
        umount ${mtd_cache}
        mkfs.ext4 ${mtd_cache}
        
        mount -t ext4 ${mtd_system} ${mnt_system}
        mount -t ext4 ${mtd_data} ${mnt_data}
    else
        info 1 "Error: Unknown root device!"
        install_critical_error=1
        return 1
    fi
    
    if [ $? -ne 0 ] ; then
        info 1 "Error: system/data partition init error!"
        install_critical_error=1
        return 1
    fi
    

    #install all *.tgz in firmware folder
    info 1 "Installing tgz packages..."
    pkgtotal=`ls -1 firmware/*.tgz | wc -l`
    pkgcount=0
    for f in `ls -1 firmware/*.tgz` ; do
        let 'pkgcount = pkgcount + 1'
        _ratio=`expr $prev_ratio + \( 45 - $prev_ratio \) \* $pkgcount / $pkgtotal`
        ratio $_ratio
        info 1 "    $f"
        info 0 "Install $f ($pkgcount / $pkgtotal)"
        tar zxf $f -C ${instenv_fs_root} >/dev/null
    done

    # set all ko files as rw-r-r permission
    find ${instenv_fs_system}/modules -type f | xargs chmod 644

    #make backup dir for factory restore, all pre-install data/app will be backup in this folder
    mkdir -p ${instenv_fs_system}/.restore/data_app
    mkdir -p ${instenv_fs_data}/app

    #backup .fwc and modules.xml
    cp -v config/+*.fwc ${instenv_fs_system}/wmtapp/
    cp -v config/modules.xml ${instenv_fs_system}/wmtapp/
    
    sync
    
    return 0
}

# this function only format and mount localdisk
# demo file will be copied by hook in fs_patch
inst_localdisk()
{
    #no single partition for Local, it is only a folder named ""in Data partition
    return 0

    local mnt_localdisk=$instenv_fs_localdisk
    local mtd_localdisk=

    #mount /android/localdisk
    if [ $instenv_bootdev == "NAND" ]; then
        mtd_localdisk=`get_mtdblock $BLK_NAND_LOCALDISK`

        info 1 "Erasing LocalDisk partition(Nand)..."
        umount ${mtd_localdisk} 2>/dev/null
        nand_erase $BLK_NAND_LOCALDISK

        mount -t yaffs2 -o rw $mtd_localdisk $mnt_localdisk
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        if [ $instenv_bootdev == "TF" ]; then
            mtd_localdisk=/dev/mmcblk1p8
        elif [ $instenv_bootdev == "UDISK" ]; then
            mtd_localdisk=/dev/sda8
        fi

        info 1 "Erasing LocalDisk partition..."
        umount ${mtd_localdisk}
        mkfs.ext4 ${mtd_localdisk}

        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format localdisk partition!"
            install_critical_error=1
            return 1
        fi

        mount -t ext4 ${mtd_localdisk} ${mnt_localdisk}
    else
        info 1 "Error: unknown root device:$instenv_bootdev!"
        return 1
    fi
    
    if [ $? -ne 0 ] ; then
        info 1 "Error: Init localdisk partition error!"
        install_critical_error=1
        return 1
    fi
    
    return 0
}


#
# change special case after some installation steps are done.
# wload is updated so we can know ddr_size
# and uboot-env is not installed so we can setenv.
#
process_special()
{
   if [ $instenv_bootdev == "NAND" ]; then
        setenv boot-NAND_mtd `get_mtdblock ${BLK_NAND_BOOT}`
        setenv boot-NAND_ofs `get_mtd_offset ${BLK_NAND_BOOT}`
        setenv boot-NAND_len `get_mtd_len ${BLK_NAND_BOOT}`
    
        setenv recov-NAND_mtd `get_mtdblock ${BLK_NAND_RECOV}`
        setenv recov-NAND_ofs `get_mtd_offset ${BLK_NAND_RECOV}`
        setenv recov-NAND_len `get_mtd_len ${BLK_NAND_RECOV}`
    
        setenv misc-NAND_mtd `get_mtdblock ${BLK_NAND_MISC}`
        setenv misc-NAND_ofs `get_mtd_offset ${BLK_NAND_MISC}`
        setenv misc-NAND_len `get_mtd_len ${BLK_NAND_MISC}`
    
        setenv filesystem-NAND_mtd `get_mtdblock ${BLK_NAND_SYS}`
        setenv filesystem-NAND_ofs `get_mtd_offset ${BLK_NAND_SYS}`
        setenv filesystem-NAND_len `get_mtd_len ${BLK_NAND_SYS}`
    
        local uboot_logo_ofs=`get_mtd_offset ${BLK_NAND_LOGO}`
        local temp2=$(( $uboot_logo_ofs + $UBOOT_CHARGE_LOG_OFFSET )) 
        local uboot_logo_charge_anim_ofs=`printf "0x%x" $temp2`
    
        setenv wmt.nfc.mtd.u-boot-logo `printf "0x%x" $uboot_logo_ofs`
        setenv wmt.nfc.mtd.u-boot-chganim `printf "0x%x" $uboot_logo_charge_anim_ofs`
        #setenv ubi-mtd-num `get_mtd_num ${BLK_NAND_LOCALDISK}`
    elif [ $instenv_bootdev == "TF" ]; then
        info 0 "Aready modified uboot env of logocmd/ota_normal/ota_recovery for TF in modules.xml"
        setenv misc-TF_part 1:7
    elif [ $instenv_bootdev == "UDISK" ]; then
        info 0 "Aready modified uboot env of logocmd/ota_normal/ota_recovery for UDISK in modules.xml"
    else
        info 1 "Error: unkown root device:$instenv_bootdev"
    fi

    setenv wmt.boot.dev $instenv_bootdev


    ##determine mem-size
    local mtd_wload=`get_mtd "w-load-SF"`
    local wload_updateid=`strings ${mtd_wload}  | grep "UPDATEID_"` 
    local ddr_size=`echo ${wload_updateid} | cut -d_ -f7`
    instenv_ddrsize=$ddr_size
    info 0 "[WMT] wload_updateid: $wload_updateid, ddr_size = $ddr_size"
    if [ "$ddr_size" == "512MB" ]; then
        info 0 "[WMT] set memtotal for 512DDR."
        setenv memtotal 447M
        setenv wmt.kernel.animation.addr 1FC00000
    elif [ "$ddr_size" == "256MB" ]; then
        info 0 "[WMT] set memtotal for 256DDR."
        setenv memtotal 196M
        setenv wmt.kernel.animation.addr FC00000
    elif [ "$ddr_size" == "1024MB" ]; then
        info 0 "[WMT] set memtotal/mbsize for 1024DDR."
        setenv memtotal 828M
        setenv mbsize 76M
        setenv wmt.kernel.animation.addr 3FC00000
    else
        info 1 "Error: can not determine ddrsize, Abort!"
        install_critical_error=1
        return 1
    fi

    return 0
}


export_instenv()
{
    printf "\n\n=======export below instenv_ values to script=======\n"
    for i in $@; do
        export $i
        echo `export | grep $i=`
    done
}


#
# find the activated fwc file, set the basename to $instenv_model_no
# also get the $instenv_bootdev
#
find_activated_fwc()
{
    instenv_model_no=""
    local fwc=""
    for i in `ls -1 config/+*.fwc`; do
        if [ "$fwc" == "" ]; then
            fwc=$i
        else
            info 1 "Error: more than one .fwc marked as activated. Abort!"
            install_critical_error=1
            return 1
        fi
    done

    if [ "$fwc" == "" ]; then
        info 1 "Error: no .fwc marked as activated. Abort!"
        install_critical_error=1
        return 1
    else
        #remove prefix "config/+" and stufix ".fwc"
        local len=${#fwc} 
        let len=$len-12
        instenv_model_no="${fwc:8:$len}"

        #search search like <BOOTDEV name="TF" />  or <BOOTDEV name="NAND" />
        local temp
        temp=`grep "<BOOTDEV" $fwc`
        if [ $? -ne 0 ]; then
            instenv_bootdev="NAND"
        else
            instenv_bootdev=`echo $temp | cut  -d\" -f2`
        fi


        if [ $instenv_bootdev == "TF" ]; then
            :
        elif [ $instenv_bootdev == "NAND" ]; then
            :
        else
            install_critical_error=1
            info 1 "Error: unknown boot device: $instenv_bootdev. Abort!"
            return 1
        fi
                    
        return 0
    fi
}


process_fwc()
{
    local fwc_file=$1
    
    # parse fwc file and generate a sh script file then run it.
    if ! xml2sh config/modules.xml $fwc_file > /tmp/fwc.sh; then
        info 1 "File $fwc_file can not be parsed. Abort!"
        install_critical_error=1
        return 1
    fi

    chmod +x /tmp/fwc.sh
    #DEBUG
    Quiet cp /tmp/fwc.sh debug/fwc.sh

    export setprop_file=/tmp/setprop.out      #used by setprop 
    export setenv_file=/tmp/setenv.out        #used by setenv 
    rm -f /tmp/setprop.out /tmp/setenv.out

    #export below env for /tmp/fwc.sh script
    export_instenv instenv_xres instenv_yres \
        instenv_fs_root instenv_fs_system instenv_fs_data instenv_fs_localdisk  \
        instenv_model_no

    printf "\n\n=======Execute fwc script file start...=======\n\n"
    . /tmp/fwc.sh
    printf "\n=======Execute fwc script file done,ret $?=======\n"

    setenv wmt.model.no $instenv_model_no
    
    cd $instenv_top_dir #cd to instenv_top_dir again to prevent /tmp/fwc.sh changed cur dir.

    #update prop file
    printf "\n\n####### below is from $instenv_fs_system/default.prop #######\n" > /tmp/setprop.tmp
    cat $instenv_fs_system/default.prop >> /tmp/setprop.tmp
    #append version info
    printf "\n\n####### from firmware/VERSION #######\n" >> /tmp/setprop.tmp
    cat firmware/VERSION >> /tmp/setprop.tmp
    if [ -f /tmp/setprop.out ]; then
        printf "\n\n####### below is from fwc.sh file #######\n" >> /tmp/setprop.tmp
        cat /tmp/setprop.out >> /tmp/setprop.tmp
    fi
    mv /tmp/setprop.tmp /tmp/setprop.out    # now /tmp/setprop.out contains all setprop result

    #update env file
    printf "\n\n####### below is from config/uboot_env #######\n" >> /tmp/setenv.tmp
    cat config/uboot_env >> /tmp/setenv.tmp
    printf "\n\n####### below is from fwc.sh file #######\n" >> /tmp/setenv.tmp
    cat /tmp/setenv.out >> /tmp/setenv.tmp
    mv /tmp/setenv.tmp /tmp/setenv.out      # now /tmp/setenv.out contains all setenv result

    
    printf "\n\n####### below is from env_addon #######\n" >> /tmp/setenv.out
    env_addon

    inc_ratio 5

    sync
    ### run wmtinst_??_* script to get more setenv/setprop command
    ### or even copy more files to device file system. we don't konw exactly.

    printf "\n\n####### below is from wmtinst_hook script files #######\n" >> /tmp/setenv.out
    printf "\n\n####### below is from wmtinst_hook script files #######\n" >> /tmp/setprop.out
    source $instenv_top_dir/installer/bin/bspinst_addons.sh
    inc_ratio 5

    #clean setprop result and replace /system/default.prop
    info 0 "clean /tmp/setprop.out to /tmp/cleanprop"

    wmtclean /tmp/setprop.out > /tmp/default.prop

    #DEBUG
    Quiet cp /tmp/setprop.out  debug/setprop.out
    Quiet cp /tmp/default.prop debug/setprop.clean

    cp /tmp/default.prop $instenv_fs_system/default.prop
    chmod g-w,o-w $instenv_fs_system/default.prop
    chmod g-w,o-w $instenv_fs_system/build.prop
    sync

    return 0
}


#
# $1: module name, for example "wload"
# $2: inc progress, for example 5
# if $install_modules contains $1, exec inst_$1 command, for example inst_wload
try_install()
{
    local module=$1             # 
    local progress=$2
    local run_cmd=inst_$1       # run "inst_wload" command

    if [ $install_critical_error -eq 1 ];then
        return 1
    fi

    for i in $install_modules; do
        if [ "$i" == "$module" ]; then
            inc_ratio $progress
            $run_cmd
            return $?
        fi
    done
    info 1 "Skipped $module installation."
    inc_ratio $progress
    return 0
}

# install_end
install_end ()
{
    if [ $install_critical_error -eq 1 ];then
        return 1
    fi

    #remove customer key information
    /bin/rm -rf ${instenv_fs_system}/.restore/wmtpref

    local sys_inst_end="${instenv_fs_system}/.restore/sys_partition_end.sh"
    if [  -f $sys_inst_end ]; then
        chmod +x ${sys_inst_end}
        ${sys_inst_end} ${instenv_fs_system}
    fi

    /bin/chmod -R 775  ${instenv_fs_data}/app

    inc_ratio 1
    return 0
}

#
# do_install
#
do_install ()
{
    local fwc_file

    if ! find_activated_fwc; then
        return 1
    fi
    
    info 1 "Model:$instenv_model_no,BootDev:$instenv_bootdev"

    mkdir -p $instenv_fs_system
    mkdir -p $instenv_fs_data
    mkdir -p $instenv_fs_localdisk
 
    # run inst_systemdata function if $install_modules contains "systemdata", 
    try_install "systemdata" 0

    if [ $install_critical_error -eq 1 ];then
        return 1
    fi
    fwc_file="config/+"$instenv_model_no".fwc"
    process_fwc "$fwc_file"
    
    try_install "wload" 5
    try_install "uboot" 5

    if [ $install_critical_error -eq 1 ];then
        return 1
    else
        process_special
    fi
    #Must do this after process_special
    try_install "logo_bootimg" 5
    #Must install uboot-env at last
    try_install "env"   5
    ratio 90

    #do some misc task at installer end
    install_end

    sync
    return 0
}


Beispiele daraus :

#remove customer key information
/bin/rm -rf ${instenv_fs_system}/.restore/wmtpref

local sys_inst_end="${instenv_fs_system}/.restore/sys_partition_end.sh"










#no single partition for Local, it is only a folder named ""in Data partition

return 0











#make backup dir for factory restore, all pre-install data/app will be backup in this folder
mkdir -p ${instenv_fs_system}/.restore/data_app
mkdir -p ${instenv_fs_data}/app

zusamen in den beiden ordnern müssen die 91 apss stecken wenn nicht

gibts beim werksreset keine 91 apps




Zusamengebastelt wir uprigens beim Flash im Ordner /android auf den Tablett und dann das speiziele mountzeug darus gemacht

sprich von Android/locale/data etc wandert es in system/data/app und

in system/.restore/app_data (systemaps)

Der ursprüngliche Beitrag von 00:53 Uhr wurde um 01:09 Uhr ergänzt:

Jupp der Installer der Mapan ist uprigens ein virtuelles 4.03

im ordner Firmewrinstall/installer/initrd-cpio.gz das ist das flashbetriebstsystem. iswt nebebei ein 403 minisystem. steht jedenfalls so drinn.

bspinst_api = Anweisung zum Installiern dort steh auch drinn wo was wie landet.

Code:
# bspinst_api.sh
#
# Linux BSP installer drawing API for WonderMedia ARM SoC.
#
# Written by Vincent Chen <vincentchen@wondermedia.com.tw>
#
# Copyright 2008-2009 WonderMedia Corporation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
#    this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY WONDERMEDIA CORPORATION ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL WONDERMEDIA CORPORATION OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.


install_critical_error=0

# wmt_fdisk - fdisk TF/UDisk
# @patition_cfg in shell script
# @dev_name of TF/UDisk
wmt_fdisk ()
{
#TODO: Jody, because there is no localdisk partition in 4.1, we should re coinfig MMC partition when we use MMC as boot device
    local partition_cmd=$1
    local dev_name=$2

    local t=5
    while [ $t -gt 0 ]; do
        if [ -e $dev_name ]; then
            break;
        else
            info 0 "[WMT] waiting for root device($dev_name) ..."
            if [ $t -eq 1 ]; then
                info 1 "Error: Root device($dev_name) not found, upgrading stopped!"
                return 1
            else
                sleep 1
                let "t = t - 1"
            fi
        fi
    done
    
    info 1 "Fdisk root device($dev_name) ..."
    killall udevd
    sleep 5

    if [ $instenv_bootdev == "TF" ]; then
        #Jody: does it need 'p' here?
        umount ${dev_name}p*
        ${partition_cmd} | fdisk $dev_name

        #Jody: if system don't create dev-nod for new MMC partition, we do it
        #mknod "${dev_name}p1" b 179 1
        #mknod "${dev_name}p2" b 179 2
        #mknod "${dev_name}p3" b 179 3
        #mknod "${dev_name}p5" b 179 5
        #mknod "${dev_name}p6" b 179 6
        #mknod "${dev_name}p7" b 179 7
        #mknod "${dev_name}p8" b 259 0
    elif [ $instenv_bootdev == "UDISK" ]; then
        umount ${dev_name}*
        ${partition_cmd} | fdisk $dev_name
    fi
    
    return 0
}

unmount_all ()
{
    cd /
    sync
    if [ $instenv_bootdev != "NAND" ]; then
        /bin/umount $MOUNT_BOOT
    fi
    
    /bin/umount $instenv_fs_data    2>/dev/null
    /bin/umount $instenv_fs_system    2>/dev/null

    cd $instenv_top_dir     #restore our current dir.
}

# Quiet - do command in silence
# @command
Quiet ()
{
    $@ 2>/dev/null >/dev/null
#    $@

    return $?
}



# get_mtd - get mtd device by name
# @name
get_mtd ()
{
    desc=`echo $1 | sed 's/\ /\\\ /g'`
    cat /proc/mtd | grep "\"$desc\"" | cut -d: -f1 | sed 's/mtd/\/dev\/mtd/g'
}

# get_mtdblock - get mtdblock device by name
# @name
get_mtdblock ()
{
    get_mtd "$1" | sed 's/mtd/mtdblock/g'
}

# get_mtd_len - get mtd length by name
# @name
get_mtd_len ()
{
    tmp=`cat /proc/mtd |grep "\"$1\""| cut -d\  -f 2`
    len=`printf "0x%x" 0x$tmp`

    echo $len
}

# sf_inst - copy from a file onto SPI flash
# @name
# @file
#
# The default search path is the current folder
# if $src_dir is invalid.
sf_inst ()
{
    local name=$1
    local file=$2
    local mtd=

    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "Error: No MTD partition called $name."
        return 1
    fi

    if [ -e "$file" ]; then
        printf "Update %s to %s ... " $file $mtd
        Quiet flash_erase $mtd 0 0
        if [ -e /usr/sbin/flashcp ]; then
            Quiet flashcp $file $mtd
        else
            cat $file > $mtd
        fi
        printf "done\n"
    else
        info 1 "Error: not found $file, skip update $name."
    fi
}

# nand_erase: erase nand partition
# @discription of nand partition
# 
nand_erase ()
{
    local name=$1
    local mtd=

    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "No MTD partition called $name."
        return 1
    fi

    if [ ! -e "$mtd" ]; then
        return 2
    fi
    
    info 0 "flash eraseall $mtd ... "
    Quiet flash_erase $mtd 0 0
    info 0 "flash eraseall done, ret $?"
    return 0
}

# nand_inst - copy from a file onto Nand flash
# @name
# @file
#
# The default search path is the current folder
# if $src_dir is invalid.
nand_inst ()
{
    local name=$1
    local file=$2
    local mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "Error: No MTD partition called $name."
        return 1
    fi

    if [ ! -e "$file" ]; then
        return 2
    fi

    printf "Update %s to %s ... " $file $mtd
    nand_erase $name
    nandwrite -p $mtd $file
    printf "done\n"
    
    return 0
}



get_mtd_offset ()
{
    mtdlist=`cat /proc/wmt_mtd|cut -d\  -f2,3|tr \  @|sed 's/"//g'`

    flg_error="error"
    offset=$flg_error
    for i in $mtdlist; do
        mtd=`echo $i|cut -d@ -f2`
        if [ "$mtd" == "$1" ]; then
            offset=`echo $i|cut -d@ -f1`
            break;
        fi
    done
    
    if [ "$offset" == $flg_error ]; then
        echo "[WMT] *E* Failed to get offset of $1"
    else
        echo "0x$offset"
    fi
}


# get_mtd_num
# 
# get the mtd number by mtdblock's name
#
get_mtd_num()
{
    mtd_block=`get_mtdblock "$1"`
    mtd_num=`echo ${mtd_block##*mtdblock}`
    echo $mtd_num
}

# generate a random MAC address
# random_mac
#
# Usage:
#     random_mac
random_mac ()
{
    local name=ethaddr
    local random=`head -200 /dev/urandom | cksum | cut -f1 -d" "`

    local a1=`echo $random | cut -c1-2`
    local a2=`echo $random | cut -c3-4`
    local a3=`echo $random | cut -c5-6`
    
    setenv $name 00:40:63:$a1:$a2:$a3
    info 1 "Random Mac address : 00:40:63:$a1:$a2:$a3"
}

# restore_env
# @@ uboot environment variable name
# Restore some uboot environment variables
# Usage:
#     restore_env foo bar
restore_env()
{
    for name in $@; do 

        local value=`wmtenv get $name`
        local ret=`echo $value | grep failed`
    
        if [ "$value" = "" ] || [ -n "$ret" ]; then
            info 0 "restore $name not found."
        else 
            info 0  "restore_env: $name=$value"
            setenv $name $value
        fi
    done
}

# do_setenv
# @uboot_env    U-boot script in plain text format
# @mtd        MTD device used by U-Boot env.
# @flag        active flag
#
# Save uboot environment variables from u-boot plain text script
#
# Usage:
#     do_setenv /mnt/mmcblk0p1/env/uboot_env_sf /dev/mtd3 1
do_setenv ()
{
    local infile=$1
    local mtd=$2
    local flag=$3

    local crc32=installer/bin/crc32
    local outfile=/tmp/uboot_env.raw
    local tmpfile=/tmp/uboot_env.tmp

    dd if=/dev/zero of=${outfile} bs=1k count=64

    dos2unix -u ${infile}

    cat ${infile} | \
    tr '\n' '~' | sed 's/\\~//g' | tr '~' '\n' | \
    sed 's/\ \+/ /g' | \
    grep setenv | sed 's/setenv //' | sed 's/ /=/' | \
    sed 's/\\;/;/g' | tr "\n" "\0" > ${tmpfile}

    dd if=${tmpfile} of=${outfile} bs=1 seek=5 count=65531 conv=notrunc

    $crc32 -s 5 -x 1 ${outfile}
    $crc32 -s 5 -r ${outfile} > ${tmpfile}
    printf "\x${flag}" >> ${tmpfile}
    dd if=${tmpfile} of=${outfile} bs=1 seek=0 count=5 conv=notrunc

    flash_erase $mtd 0 0
    cat ${outfile} > $mtd

    #mv ${tmpfile} ${tmpfile}.${flag}
    #cp ${outfile} ${outfile}.${flag}
    rm ${tmpfile} ${outfile}
}



#
# Add additional uboot environment variables
#
# Usage:
#     env_addon outfile
env_addon()
{         
    info 0 "Adding additionl uboot env..."

    local value=`wmtenv get wmt.ethaddr.persist`
    
    if [ "$value" = "1" ]; then
        restore_env wmt.ethaddr.persist ethaddr
        info 1 "Don't change mac address"
    else 
        info 0 "No mac address customization"
        random_mac
    fi
    restore_env serialnum androidboot.serialno pcba.serialno
    restore_env wmt.btaddr.persist btaddr
}

#
# set uboot environment variables from u-boot plain text script
inst_env ()
{
    info 1 "Installing U-Boot env. cfg. to SF."

    #clean it to remove duplicated items
    wmtclean /tmp/setenv.out > /tmp/setenv.clean

    #DEBUG
    Quiet cp /tmp/setenv.out debug/setenv.out
    Quiet cp /tmp/setenv.clean debug/setenv.clean
    
    mtd_name="u-boot env. cfg. 1-SF"
    mtd=`get_mtd "${mtd_name}"`

    if [ ! -z "${mtd}" ]; then
        do_setenv /tmp/setenv.clean ${mtd} 1
    else
        info 1 "No MTD partition called ${mtd_name}."
        install_critical_error=1
        return 1
    fi

    mtd_name="u-boot env. cfg. 2-SF"
    mtd=`get_mtd "${mtd_name}"`

    if [ ! -z "${mtd}" ]; then
        do_setenv /tmp/setenv.clean ${mtd} 0
    else
        info 0 "No MTD partition called ${mtd_name}."
    fi
}


#
# PLEASE DON'T MODIFY FUNCTIONS ABOVE THIS LINE.
# THOSE FUNCTIONS ARE THE HEART OF BSPINST2.
#
inst_wload()
{
    local wload_name=$instenv_wload

    local mtd_wload=`get_mtd "w-load-SF"`
        
    if [ -z "$instenv_wload" ]; then
        local wload_updateid=`strings ${mtd_wload}  | grep "UPDATEID_"` 
        info 0 "Select w-load according to $wload_updateid ..."
        if [ -z "$wload_updateid" ]; then
            info 0 "[WMT] old w-load in board, need to update, use default w-load."
            wload_name=firmware/w-load.bin
        else
            if [ "$wload_updateid" == "UPDATEID_DDR3_800M_800M_32bit_4_512MB" ]; then
                wload_name="*_DDR3_5_3_2_4_512MB"
            elif [ "$wload_updateid" == "UPDATEID_DDR3_800M_800M_16bit_2_256MB" ]; then
                wload_name="*_DDR3_5_3_1_2_256MB"
            else
                wload_name=`echo $wload_updateid | sed 's/UPDATEID/*/g'`
            fi
    
            info 0 wload_wild_name=$wload_name    
            wload_name=`find firmware -name ${wload_name}.bin`
            info 1 "Auto probe wload_name=$wload_name"
        fi
    fi

    if [ -z "$wload_name" ]; then
        info 1 "Error: No wload file defined. Abort!"
        install_critical_error=1
        return 1
    fi

    if [ ! -f "$wload_name" ]; then
        info 1 "Error: can not find wload: $wload_name. Abort!"
        install_critical_error=1
        return 1
    fi

 
    local buildno_board=`strings ${mtd_wload} | grep "BUILDID_"` 
    local buildno_file=`strings ${wload_name} | grep "BUILDID_"` 

    if [ -z "$buildno_file" ]; then
        info 1 "Error: wload:$wload_name invalid, Abort!"
        install_critical_error=1
        return 1
    fi
    
    info 0 "wload BUILDID board: $buildno_board"
    info 0 "wload BUILDID file : $buildno_file"

    cat ${mtd_wload} > /tmp/board.wload
    local wsize=`stat -c%s $wload_name`

    dd if=/tmp/board.wload of=/tmp/board.wload2 bs=$wsize count=1

    if diff --brief /tmp/board.wload2 $wload_name; then
        info 1 "Skipped same $wload_name."
    else
        info 1 "Installing $wload_name..."
        sf_inst "w-load-SF" "$wload_name"
    fi

    Quiet cp /tmp/board.wload debug/board.wload
    Quiet cp /tmp/board.wload2 debug/board.wload2
    rm /tmp/board.wload /tmp/board.wload2
    return 0
}

inst_uboot()
{
    if [ ! -f "$instenv_uboot" ]; then
        info 1 "Uboot:$instenv_uboot not found, Abort!"
        install_critical_error=1
        return 1
    else
        info 0 "Uboot = $instenv_uboot"
    fi
    
    local uboot_buildno_file=`strings $instenv_uboot  | grep "BUILDID_"` 
    if [ -z "$uboot_buildno_file" ] ; then
        info 1 "Error: $instenv_uboot is invalida, Abort!"
        install_critical_error=1
        return 1
    fi

    local mtd_uboot=`get_mtd "u-boot-SF"`
    local uboot_buildno_board=`strings ${mtd_uboot}  | grep "BUILDID_"` 

    info 0 "uboot BUILDID board: $uboot_buildno_board"
    info 0 "uboot BUILDID file : $uboot_buildno_file"

    if [ "$uboot_buildno_file" \> "$uboot_buildno_board" ]; then
        info 1 "Installing $instenv_uboot..."
        sf_inst "u-boot-SF" "$instenv_uboot"
    else
        info 1 "Skipped same u-boot file."
    fi
}


update_logo()
{
    info 1 "Installing u-boot logo to NAND..."
    
    local name="${BLK_NAND_LOGO}"
    local logo_dir="$instenv_logo_path"
    local mtd=
    
    mtd=`get_mtd "$name"`

    if [ -z "$mtd" ]; then
        info 1 "No MTD partition called $name."
        install_critical_error=1
        return 1
    fi

    if [ ! -e "$mtd" ]; then
        info 1 "No MTD partition called $mtd."
        install_critical_error=1
        return 2
    fi

    info 1 "Erasing LOGO partition(Nand)..."
    nand_erase $name
    
    if [ -f $instenv_uboot_logo/u-boot-logo.data ]; then
        nandwrite -p $mtd $instenv_uboot_logo/u-boot-logo.data
        info 0 "update $instenv_uboot_logo/u-boot-logo.data ret $?"
    else
        info 0 "Skip $instenv_uboot_logo/u-boot-logo.data"
    fi

    if [ -f $instenv_uboot_logo/charge_anim.data ]; then
        #use customize logo first
        nandwrite -p -s $UBOOT_CHARGE_LOG_OFFSET  $mtd $instenv_uboot_logo/charge_anim.data
        info 0 "update $instenv_uboot_logo/charge_anim.data ret $?"
    elif [ -f $logo_dir/charge_anim.data ]; then
        #no customize logo, use default logo
        nandwrite -p -s $UBOOT_CHARGE_LOG_OFFSET  $mtd $logo_dir/charge_anim.data
        info 0 "update $logo_dir/charge_anim.data ret $?"
    else
        info 0 "Skip $logo_dir/charge_anim.data"
    fi
        
    return 0
}

check_ramdisk ()
{
    local org_path="firmware"
    local new_path="/tmp"
    local ramdisk_path="/tmp/new_ramdisk"
    local ret_path=
    
    if [ $instenv_bootdev == "TF" ] || [ "$instenv_ddrsize" == "1024MB" ]; then
        rm -rf $ramdisk_path
        mkdir -p $ramdisk_path
        cp firmware/ramdisk.img $new_path/ramdisk.gz 
        gunzip $new_path/ramdisk.gz 
        cd $ramdisk_path
        cpio -idm <$new_path/ramdisk 
        if [ $instenv_bootdev == "TF" ]; then
            #modify device of partiton for TF
            sed -i 's/mount yaffs2 mtd@system \/system ro remount/mount ext4 \/dev\/block\/mmcblk1p2 \/system ro remount/g' init.rc
            sed -i 's/mount yaffs2 mtd@system \/system/wait \/dev\/block\/mmcblk1p2\n wait \/dev\/block\/mmcblk1p5\n wait \/dev\/block\/mmcblk1p6\n mount ext4 \/dev\/block\/mmcblk1p2 \/system/g' init.rc
            sed -i 's/mount yaffs2 mtd@data \/data nosuid nodev/mount ext4 \/dev\/block\/mmcblk1p5 \/data/g' init.rc
            sed -i 's/mount yaffs2 mtd@cache \/cache nosuid nodev/mount ext4 \/dev\/block\/mmcblk1p6 \/cache/g' init.rc
        fi
        if [ "$instenv_ddrsize" == "1024MB" ]; then
            #modify ump_memory_size from 96MB to 128MB for 1GB DDR
            sed -i 's/ump_memory_size=100663296/ump_memory_size=134217728/g' init.rc
        fi
        #make new ramdisk after modification
        rm $new_path/ramdisk
        find . | cpio -o -H newc | gzip > $new_path/ramdisk.gz
        cd $new_path
        mv ramdisk.gz ramdisk.img
        
        cp $instenv_top_dir/firmware/ramdisk-recovery.img $new_path/
        #modify recovery.fstab in ramdisk-recovery for TF
        if [ $instenv_bootdev == "TF" ]; then
            rm -rf $ramdisk_path
            mkdir -p $ramdisk_path
            mv $new_path/ramdisk-recovery.img $new_path/ramdisk-recovery.gz 
            gunzip $new_path/ramdisk-recovery.gz 
            cd $ramdisk_path
            cpio -idm <$new_path/ramdisk-recovery 
            sed -i 's/yaffs2       system/ext4       \/dev\/block\/mmcblk1p2/g' etc/recovery.fstab
            sed -i 's/yaffs2       data/ext4       \/dev\/block\/mmcblk1p5/g' etc/recovery.fstab
            sed -i 's/yaffs2       cache/ext4       \/dev\/block\/mmcblk1p6/g' etc/recovery.fstab
            sed -i 's/mtd          misc/emmc       \/dev\/block\/mmcblk1p7/g' etc/recovery.fstab
            
            #make new ramdisk-recovery after modification
            rm $new_path/ramdisk-recovery
            find . | cpio -o -H newc | gzip > $new_path/ramdisk-recovery.gz
            cd $new_path
            mv ramdisk-recovery.gz ramdisk-recovery.img
        fi
        rm -rf $ramdisk_path
        
        cd $instenv_top_dir

        ret_path=$new_path
    else
        ret_path=$org_path
    fi

    echo "$ret_path"
}

get_ramdisk_path ()
{
    local ret_path="firmware/ramdisk.img"
    
    if [ $instenv_bootdev == "TF" ] || [ "$instenv_ddrsize" == "1024MB" ]; then
        if [ $instenv_bootdev == "TF" ]; then
            info 1 "Error: TF card as boot device is not support yet"
            install_critical_error=1
            return 1            
        fi
        if [ "$instenv_ddrsize" == "1024MB" ]; then
            if [ ! -f firmware/ramdisk-1024M.img ]; then
                info 1 "Error: no ramdisk-1024M.img found, your may need to run prepare_android_rootfs.sh again"
                install_critical_error=1
                return 1                        
            fi
            ret_path="firmware/ramdisk-1024M.img"
        fi
        
    fi

    echo "$ret_path"
}

inst_logo_bootimg()
{
    if [ ! -f "$instenv_kernel" ]; then
        info 1 "Error: can not find kernel: $instenv_kernel. Abort!"
        install_critical_error=1
        return 1
    fi

    #check if need to modify ramdisk.img/ramdisk-recovery.img
    #local ramdisk_path=`check_ramdisk`
    local ramdisk_path=`get_ramdisk_path`
    info 0 "ramdisk_path = $ramdisk_path, kernel = $instenv_kernel"
    #mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path/ramdisk.img -o /tmp/boot.img
    mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path -o /tmp/boot.img
    if [ $? -ne 0 ] ; then
        info 1  "Error: failed to make boot.img! Abort!"
        install_critical_error=1
        return 1
    fi
    #mkbootimg --kernel $instenv_kernel --ramdisk $ramdisk_path/ramdisk-recovery.img -o /tmp/recovery.img
    mkbootimg --kernel $instenv_kernel --ramdisk firmware/ramdisk-recovery.img -o /tmp/recovery.img
    if [ $? -ne 0 ] ; then
        info 1  "Error: failed to make recovery.img! Abort!"
        install_critical_error=1
        return 1
    fi

    if [ $instenv_bootdev == "NAND" ]; then
        local mtd=`get_mtd "${BLK_NAND_LOGO}"`
        if [ "$mtd" == "" ] ; then
            info 1 "Error: Cannot find ${BLK_NAND_LOGO} partition in NAND, Abort!"
            install_critical_error=1
            return 1
        fi

        #disable garbage collection of yaffs2, or it will be too slow for ESLC(only for Hynix nand)
        sync
        echo 0 >  /sys/module/yaffs/parameters/yaffs_bg_enable
        info 1 "Installing boot.img to NAND..."
        nand_inst "${BLK_NAND_BOOT}" /tmp/boot.img
        setenv boot-img-len `ls /tmp/boot.img -al | sed 's/ \+/ /g' | cut -d' ' -f5`
        inc_ratio 5

        info 1 "Installing recovery.img to NAND..."
        nand_inst "${BLK_NAND_RECOV}" /tmp/recovery.img
        setenv recov-img-len `ls /tmp/recovery.img -al | sed 's/ \+/ /g' | cut -d' ' -f5`        
        inc_ratio 5

        update_logo
        #enable garbage collection of yaffs2
        echo 1 >  /sys/module/yaffs/parameters/yaffs_bg_enable
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        local mtd_kernel=
        if [ $instenv_bootdev == "TF" ]; then
            info 1 "Prepare kernel partition(TF)..."
            mtd_kernel=/dev/mmcblk1p1
        elif [ $instenv_bootdev == "UDISK" ]; then
            info 1 "Prepare kernel partition(UDISK)..."
            mtd_kernel=/dev/sda1
        fi

        umount ${mtd_kernel}
        mkdosfs ${mtd_kernel}
        if [ $? -ne 0 ] ; then
            info 1  "Error: failed to format kernel partition! Abort!"
            install_critical_error=1
            return 1
        fi

        /bin/mkdir -p $MOUNT_BOOT
        mount ${mtd_kernel} $MOUNT_BOOT
        if [ $? -ne 0 ] ; then
            info 1 "Error: failed to mount kernel partition. Abort!"
            install_critical_error=1
            return 1
        fi
        info 1 "Installing boot.img/recovery.img/logo ..."
        /bin/cp -af /tmp/boot.img $MOUNT_BOOT
        /bin/cp -af /tmp/recovery.img $MOUNT_BOOT
        /bin/cp -af $instenv_uboot_logo/u-boot-logo.data $MOUNT_BOOT
        if [ -f $instenv_uboot_logo/charge_anim.data ]; then
            #use customize logo first
            /bin/cp -af $instenv_uboot_logo/charge_anim.data $MOUNT_BOOT            
        else
            #use default logo
            /bin/cp -af $instenv_logo_path/charge_anim.data $MOUNT_BOOT            
        fi

    else
        info 1 "Error: unknown root device:$instenv_bootdev! Abort!"
        install_critical_error=1
        return 1
    fi

    #cp logo data to system/.restore folder for OTA package's tool
    mkdir -p ${instenv_fs_system}/.restore
    Quiet cp $instenv_uboot_logo/u-boot-logo.data  ${instenv_fs_system}/.restore/  
    if [ -f $instenv_uboot_logo/charge_anim.data ]; then
        #use customize logo first
        Quiet cp $instenv_uboot_logo/charge_anim.data ${instenv_fs_system}/.restore/
    else
        #use default logo
        Quiet cp $instenv_logo_path/charge_anim.data ${instenv_fs_system}/.restore/
    fi
}


format_disk()
{
    if [ $instenv_bootdev == "TF" ]; then
        if [ -e "installer/bin/partition.sh" ]; then
            wmt_fdisk "installer/bin/partition.sh" "/dev/mmcblk1"
        else
            info 1 "Partition file not found, upgrading stopped!"
            return 1
        fi
    elif [ $instenv_bootdev == "UDISK" ]; then
        if [ -e "installer/bin/partition.sh" ]; then
            wmt_fdisk "installer/bin/partition.sh" "/dev/sda"
        else
            info 1 "Partition file not found, upgrading stopped!"
            return 1
        fi
    fi
    
    return $?
}


inst_systemdata()
{
    local mnt_system=$instenv_fs_system
    local mnt_data=$instenv_fs_data

    local mtd_system=
    local mtd_data=
    local mtd_cache=

    local prev_ratio=$CompleteRatio
    local _ratio=
    local ret=

    #mount /android/data , /android/system
    if [ $instenv_bootdev == "NAND" ]; then
        mtd_system=`get_mtdblock "${BLK_NAND_SYS}"`
        mtd_data=`get_mtdblock "${BLK_NAND_ANDROIDDATA}"`

        info 1 "Erasing System partition(Nand)..."
        umount ${mtd_system} 2>/dev/null
        nand_erase ${BLK_NAND_SYS}
        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format FileSystem partition(NAND)..."
            install_critical_error=1
            return 1
        fi
        
        info 1 "Erasing Data partition(Nand)..."
        umount ${mtd_data} 2>/dev/null
        nand_erase "${BLK_NAND_ANDROIDDATA}"

        info 1 "Erasing Cache/misc partition(Nand)..."
        nand_erase "${BLK_NAND_MISC}"
        nand_erase "${BLK_NAND_ANDROIDCACHE}"
        
        mount -t yaffs2 -o rw $mtd_system $mnt_system
        mount -t yaffs2 -o rw $mtd_data $mnt_data
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        format_disk
        if [ $? -ne 0 ] ; then
            info 1 "Error: in format_disk($instenv_bootdev)"
            install_critical_error=1
            return 1
        fi
        if [ $instenv_bootdev == "TF" ]; then
            mtd_system=/dev/mmcblk1p2
            mtd_data=/dev/mmcblk1p5
            mtd_cache=/dev/mmcblk1p6
        elif [ $instenv_bootdev == "UDISK" ]; then
            mtd_system=/dev/sda2
            mtd_data=/dev/sda5
            mtd_cache=/dev/sda6
        fi

        info 1 "Erasing System partition..."
        umount ${mtd_system}
        mkfs.ext4 ${mtd_system}

        info 1 "Erasing Data partition..."
        umount ${mtd_data}
        mkfs.ext4 ${mtd_data}
        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format FileSystem partition!"
            install_critical_error=1
            return 1
        fi

        info 1 "Erasing Cache partition..."
        umount ${mtd_cache}
        mkfs.ext4 ${mtd_cache}
        
        mount -t ext4 ${mtd_system} ${mnt_system}
        mount -t ext4 ${mtd_data} ${mnt_data}
    else
        info 1 "Error: Unknown root device!"
        install_critical_error=1
        return 1
    fi
    
    if [ $? -ne 0 ] ; then
        info 1 "Error: system/data partition init error!"
        install_critical_error=1
        return 1
    fi
    

    #install all *.tgz in firmware folder
    info 1 "Installing tgz packages..."
    pkgtotal=`ls -1 firmware/*.tgz | wc -l`
    pkgcount=0
    for f in `ls -1 firmware/*.tgz` ; do
        let 'pkgcount = pkgcount + 1'
        _ratio=`expr $prev_ratio + \( 45 - $prev_ratio \) \* $pkgcount / $pkgtotal`
        ratio $_ratio
        info 1 "    $f"
        info 0 "Install $f ($pkgcount / $pkgtotal)"
        tar zxf $f -C ${instenv_fs_root} >/dev/null
    done

    # set all ko files as rw-r-r permission
    find ${instenv_fs_system}/modules -type f | xargs chmod 644

    #make backup dir for factory restore, all pre-install data/app will be backup in this folder
    mkdir -p ${instenv_fs_system}/.restore/data_app
    mkdir -p ${instenv_fs_data}/app

    #backup .fwc and modules.xml
    cp -v config/+*.fwc ${instenv_fs_system}/wmtapp/
    cp -v config/modules.xml ${instenv_fs_system}/wmtapp/
    
    sync
    
    return 0
}

# this function only format and mount localdisk
# demo file will be copied by hook in fs_patch
inst_localdisk()
{
    #no single partition for Local, it is only a folder named ""in Data partition
    return 0

    local mnt_localdisk=$instenv_fs_localdisk
    local mtd_localdisk=

    #mount /android/localdisk
    if [ $instenv_bootdev == "NAND" ]; then
        mtd_localdisk=`get_mtdblock $BLK_NAND_LOCALDISK`

        info 1 "Erasing LocalDisk partition(Nand)..."
        umount ${mtd_localdisk} 2>/dev/null
        nand_erase $BLK_NAND_LOCALDISK

        mount -t yaffs2 -o rw $mtd_localdisk $mnt_localdisk
    elif [ $instenv_bootdev == "TF" ] || [ $instenv_bootdev == "UDISK" ]; then
        if [ $instenv_bootdev == "TF" ]; then
            mtd_localdisk=/dev/mmcblk1p8
        elif [ $instenv_bootdev == "UDISK" ]; then
            mtd_localdisk=/dev/sda8
        fi

        info 1 "Erasing LocalDisk partition..."
        umount ${mtd_localdisk}
        mkfs.ext4 ${mtd_localdisk}

        if [ $? -ne 0 ] ; then
            info 1 "Error: Failed to format localdisk partition!"
            install_critical_error=1
            return 1
        fi

        mount -t ext4 ${mtd_localdisk} ${mnt_localdisk}
    else
        info 1 "Error: unknown root device:$instenv_bootdev!"
        return 1
    fi
    
    if [ $? -ne 0 ] ; then
        info 1 "Error: Init localdisk partition error!"
        install_critical_error=1
        return 1
    fi
    
    return 0
}


#
# change special case after some installation steps are done.
# wload is updated so we can know ddr_size
# and uboot-env is not installed so we can setenv.
#
process_special()
{
   if [ $instenv_bootdev == "NAND" ]; then
        setenv boot-NAND_mtd `get_mtdblock ${BLK_NAND_BOOT}`
        setenv boot-NAND_ofs `get_mtd_offset ${BLK_NAND_BOOT}`
        setenv boot-NAND_len `get_mtd_len ${BLK_NAND_BOOT}`
    
        setenv recov-NAND_mtd `get_mtdblock ${BLK_NAND_RECOV}`
        setenv recov-NAND_ofs `get_mtd_offset ${BLK_NAND_RECOV}`
        setenv recov-NAND_len `get_mtd_len ${BLK_NAND_RECOV}`
    
        setenv misc-NAND_mtd `get_mtdblock ${BLK_NAND_MISC}`
        setenv misc-NAND_ofs `get_mtd_offset ${BLK_NAND_MISC}`
        setenv misc-NAND_len `get_mtd_len ${BLK_NAND_MISC}`
    
        setenv filesystem-NAND_mtd `get_mtdblock ${BLK_NAND_SYS}`
        setenv filesystem-NAND_ofs `get_mtd_offset ${BLK_NAND_SYS}`
        setenv filesystem-NAND_len `get_mtd_len ${BLK_NAND_SYS}`
    
        local uboot_logo_ofs=`get_mtd_offset ${BLK_NAND_LOGO}`
        local temp2=$(( $uboot_logo_ofs + $UBOOT_CHARGE_LOG_OFFSET )) 
        local uboot_logo_charge_anim_ofs=`printf "0x%x" $temp2`
    
        setenv wmt.nfc.mtd.u-boot-logo `printf "0x%x" $uboot_logo_ofs`
        setenv wmt.nfc.mtd.u-boot-chganim `printf "0x%x" $uboot_logo_charge_anim_ofs`
        #setenv ubi-mtd-num `get_mtd_num ${BLK_NAND_LOCALDISK}`
    elif [ $instenv_bootdev == "TF" ]; then
        info 0 "Aready modified uboot env of logocmd/ota_normal/ota_recovery for TF in modules.xml"
        setenv misc-TF_part 1:7
    elif [ $instenv_bootdev == "UDISK" ]; then
        info 0 "Aready modified uboot env of logocmd/ota_normal/ota_recovery for UDISK in modules.xml"
    else
        info 1 "Error: unkown root device:$instenv_bootdev"
    fi

    setenv wmt.boot.dev $instenv_bootdev


    ##determine mem-size
    local mtd_wload=`get_mtd "w-load-SF"`
    local wload_updateid=`strings ${mtd_wload}  | grep "UPDATEID_"` 
    local ddr_size=`echo ${wload_updateid} | cut -d_ -f7`
    instenv_ddrsize=$ddr_size
    info 0 "[WMT] wload_updateid: $wload_updateid, ddr_size = $ddr_size"
    if [ "$ddr_size" == "512MB" ]; then
        info 0 "[WMT] set memtotal for 512DDR."
        setenv memtotal 447M
        setenv wmt.kernel.animation.addr 1FC00000
    elif [ "$ddr_size" == "256MB" ]; then
        info 0 "[WMT] set memtotal for 256DDR."
        setenv memtotal 196M
        setenv wmt.kernel.animation.addr FC00000
    elif [ "$ddr_size" == "1024MB" ]; then
        info 0 "[WMT] set memtotal/mbsize for 1024DDR."
        setenv memtotal 828M
        setenv mbsize 76M
        setenv wmt.kernel.animation.addr 3FC00000
    else
        info 1 "Error: can not determine ddrsize, Abort!"
        install_critical_error=1
        return 1
    fi

    return 0
}


export_instenv()
{
    printf "\n\n=======export below instenv_ values to script=======\n"
    for i in $@; do
        export $i
        echo `export | grep $i=`
    done
}


#
# find the activated fwc file, set the basename to $instenv_model_no
# also get the $instenv_bootdev
#
find_activated_fwc()
{
    instenv_model_no=""
    local fwc=""
    for i in `ls -1 config/+*.fwc`; do
        if [ "$fwc" == "" ]; then
            fwc=$i
        else
            info 1 "Error: more than one .fwc marked as activated. Abort!"
            install_critical_error=1
            return 1
        fi
    done

    if [ "$fwc" == "" ]; then
        info 1 "Error: no .fwc marked as activated. Abort!"
        install_critical_error=1
        return 1
    else
        #remove prefix "config/+" and stufix ".fwc"
        local len=${#fwc} 
        let len=$len-12
        instenv_model_no="${fwc:8:$len}"

        #search search like <BOOTDEV name="TF" />  or <BOOTDEV name="NAND" />
        local temp
        temp=`grep "<BOOTDEV" $fwc`
        if [ $? -ne 0 ]; then
            instenv_bootdev="NAND"
        else
            instenv_bootdev=`echo $temp | cut  -d\" -f2`
        fi


        if [ $instenv_bootdev == "TF" ]; then
            :
        elif [ $instenv_bootdev == "NAND" ]; then
            :
        else
            install_critical_error=1
            info 1 "Error: unknown boot device: $instenv_bootdev. Abort!"
            return 1
        fi
                    
        return 0
    fi
}


process_fwc()
{
    local fwc_file=$1
    
    # parse fwc file and generate a sh script file then run it.
    if ! xml2sh config/modules.xml $fwc_file > /tmp/fwc.sh; then
        info 1 "File $fwc_file can not be parsed. Abort!"
        install_critical_error=1
        return 1
    fi

    chmod +x /tmp/fwc.sh
    #DEBUG
    Quiet cp /tmp/fwc.sh debug/fwc.sh

    export setprop_file=/tmp/setprop.out      #used by setprop 
    export setenv_file=/tmp/setenv.out        #used by setenv 
    rm -f /tmp/setprop.out /tmp/setenv.out

    #export below env for /tmp/fwc.sh script
    export_instenv instenv_xres instenv_yres \
        instenv_fs_root instenv_fs_system instenv_fs_data instenv_fs_localdisk  \
        instenv_model_no

    printf "\n\n=======Execute fwc script file start...=======\n\n"
    . /tmp/fwc.sh
    printf "\n=======Execute fwc script file done,ret $?=======\n"

    setenv wmt.model.no $instenv_model_no
    
    cd $instenv_top_dir #cd to instenv_top_dir again to prevent /tmp/fwc.sh changed cur dir.

    #update prop file
    printf "\n\n####### below is from $instenv_fs_system/default.prop #######\n" > /tmp/setprop.tmp
    cat $instenv_fs_system/default.prop >> /tmp/setprop.tmp
    #append version info
    printf "\n\n####### from firmware/VERSION #######\n" >> /tmp/setprop.tmp
    cat firmware/VERSION >> /tmp/setprop.tmp
    if [ -f /tmp/setprop.out ]; then
        printf "\n\n####### below is from fwc.sh file #######\n" >> /tmp/setprop.tmp
        cat /tmp/setprop.out >> /tmp/setprop.tmp
    fi
    mv /tmp/setprop.tmp /tmp/setprop.out    # now /tmp/setprop.out contains all setprop result

    #update env file
    printf "\n\n####### below is from config/uboot_env #######\n" >> /tmp/setenv.tmp
    cat config/uboot_env >> /tmp/setenv.tmp
    printf "\n\n####### below is from fwc.sh file #######\n" >> /tmp/setenv.tmp
    cat /tmp/setenv.out >> /tmp/setenv.tmp
    mv /tmp/setenv.tmp /tmp/setenv.out      # now /tmp/setenv.out contains all setenv result

    
    printf "\n\n####### below is from env_addon #######\n" >> /tmp/setenv.out
    env_addon

    inc_ratio 5

    sync
    ### run wmtinst_??_* script to get more setenv/setprop command
    ### or even copy more files to device file system. we don't konw exactly.

    printf "\n\n####### below is from wmtinst_hook script files #######\n" >> /tmp/setenv.out
    printf "\n\n####### below is from wmtinst_hook script files #######\n" >> /tmp/setprop.out
    source $instenv_top_dir/installer/bin/bspinst_addons.sh
    inc_ratio 5

    #clean setprop result and replace /system/default.prop
    info 0 "clean /tmp/setprop.out to /tmp/cleanprop"

    wmtclean /tmp/setprop.out > /tmp/default.prop

    #DEBUG
    Quiet cp /tmp/setprop.out  debug/setprop.out
    Quiet cp /tmp/default.prop debug/setprop.clean

    cp /tmp/default.prop $instenv_fs_system/default.prop
    chmod g-w,o-w $instenv_fs_system/default.prop
    chmod g-w,o-w $instenv_fs_system/build.prop
    sync

    return 0
}


#
# $1: module name, for example "wload"
# $2: inc progress, for example 5
# if $install_modules contains $1, exec inst_$1 command, for example inst_wload
try_install()
{
    local module=$1             # 
    local progress=$2
    local run_cmd=inst_$1       # run "inst_wload" command

    if [ $install_critical_error -eq 1 ];then
        return 1
    fi

    for i in $install_modules; do
        if [ "$i" == "$module" ]; then
            inc_ratio $progress
            $run_cmd
            return $?
        fi
    done
    info 1 "Skipped $module installation."
    inc_ratio $progress
    return 0
}

# install_end
install_end ()
{
    if [ $install_critical_error -eq 1 ];then
        return 1
    fi

    #remove customer key information
    /bin/rm -rf ${instenv_fs_system}/.restore/wmtpref

    local sys_inst_end="${instenv_fs_system}/.restore/sys_partition_end.sh"
    if [  -f $sys_inst_end ]; then
        chmod +x ${sys_inst_end}
        ${sys_inst_end} ${instenv_fs_system}
    fi

    /bin/chmod -R 775  ${instenv_fs_data}/app

    inc_ratio 1
    return 0
}

#
# do_install
#
do_install ()
{
    local fwc_file

    if ! find_activated_fwc; then
        return 1
    fi
    
    info 1 "Model:$instenv_model_no,BootDev:$instenv_bootdev"

    mkdir -p $instenv_fs_system
    mkdir -p $instenv_fs_data
    mkdir -p $instenv_fs_localdisk
 
    # run inst_systemdata function if $install_modules contains "systemdata", 
    try_install "systemdata" 0

    if [ $install_critical_error -eq 1 ];then
        return 1
    fi
    fwc_file="config/+"$instenv_model_no".fwc"
    process_fwc "$fwc_file"
    
    try_install "wload" 5
    try_install "uboot" 5

    if [ $install_critical_error -eq 1 ];then
        return 1
    else
        process_special
    fi
    #Must do this after process_special
    try_install "logo_bootimg" 5
    #Must install uboot-env at last
    try_install "env"   5
    ratio 90

    #do some misc task at installer end
    install_end

    sync
    return 0
}


Beispiele daraus :

#remove customer key information
/bin/rm -rf ${instenv_fs_system}/.restore/wmtpref

local sys_inst_end="${instenv_fs_system}/.restore/sys_partition_end.sh"










#no single partition for Local, it is only a folder named ""in Data partition

return 0











#make backup dir for factory restore, all pre-install data/app will be backup in this folder
mkdir -p ${instenv_fs_system}/.restore/data_app
mkdir -p ${instenv_fs_data}/app

zusamen in den beiden ordnern müssen die 91 apss stecken wenn nicht

gibts beim werksreset keine 91 apps




Zusamengebastelt wir uprigens beim Flash im Ordner /android auf den Tablett und dann das speiziele mountzeug darus gemacht

sprich von Android etc wandert es in system/data/app und

in system/.restore/app_data (systemaps)



Habt ihr nehn Ordner "android" im / Verzeichnis???
 
Habt ihr nehn Ordner "android" im / Verzeichnis??? = nein
nur unter mnt/locale
und unter mnt/sdcard
 
es liegt an der .fcw !!!!!

Man darf nur verändern was Hartwaretechnisch im default.prop im Firmware.tar enthalten ist.

Ich hab sozusagen die 8.5 fast fertig.

Ich hatte gerade eben ein 65 apps install.

Ganz einfach wenn ich was veränder was durch costumising oder in firmware
nicht enthalten ist (darus wird die default.prop) im Tab dann erstellt, installiert
mir der installer keine "custumising/1024*600-data.tar)

Und das sind dann die fehlenden Apps im tap.

Hier einen default .prop als code die 91 Apps erzeugt.

Code:
ro.wmt.ui.gps=ttyUSB5
ro.wmt.touchpannel=1
persist.sys.wmt.maxfb0video=1280x720
persist.sys.hdmi.res=1280x720
ro.wmt.drv.common=gsensor_kxte9_md,wmt_battery_md=
wmt.gps.so.path=/system/lib/hw/gps.dongle.so
wifi.interface=wlan0
ro.product.name=wmid
ro.product.model=AN10DG3
ro.product.manufacturer=WonderMedia
ro.wmt.bootanim.args=0,1024,600,0
ro.sf.lcd_density=160
wifi.firmware.path.ap="dummy"
ril.libpath=/system/lib/libreference-ril.so
ril.libargs=-d /dev/tty*
ro.debuggable=0
ro.wmt.pkgver=3.35.00
ro.wmt.tpdrv=s_wmt_ts_ft5x0x
ro.wmt.launcher2.configButton=false
ro.wmt.ui.settings_remove=ethernet
ro.wmt.ui.sys_ver=4.1.1 Ultimate 8.5
ro.wmt.product=arnova-10gd3

und nur Daran darf ich was verändern! per ,fcw file.


Man kann auch absichtlich eine Zeile doppelt ins .fcw schreiben un volla

65 apss Optimising

Der Installer prüft sozusagen die Gültigkeit der fcw datei.
Ist auch nur neh kleine Macke drinn nimmt er das costumising nicht mit aufs tap = "65 apss optimising".

Ich hoffe mit version 8.5 hab ich die macken jetzt alle ausgemertzt.

Bin Grad am First flash.
 
  • Danke
Reaktionen: TheSurfer
Also ich hab auch keinen Android ordner sondern wie bei tekilakos.

Das schaffen wir noch.... svenu sei dank.
 
Man Sollte das wirklich beachten was Arnova schreibt.

ARNOVA


Punkt 6 Loool 92 Apps werden angezeigt wenn davor 92 drauf waren ansonstene erst nach werksresett.


Bitte in der neuen version das Readme genau beachten!

8.5 ist on siehe erster Tread.
 
Zunächst nur ein halbes Danke, weil 8.5 nicht erreichbar, siehe Anhang.
Da hat dir wohl die Müdigkeit einen Streich gespielt.
 

Anhänge

  • Screenshot_2013-09-19-07-55-09.png
    Screenshot_2013-09-19-07-55-09.png
    15,2 KB · Aufrufe: 465
Nein ich habs voreerst gelöscht den schlafen ist nicht denn ich krank wegen knieproblemmen die mich lustigerweise bei jeden drehen aufwecken.

weniger lustig ich hab diesen system ui patch so langsam in üblen verdacht.

deshalb ich teste grade noch.
 
Danke für den Zwischenbescheid und vor allem: Gute Besserung!
 
:scared: Ich lads gerade Hoch. Einige Änderungen, denn Komischen Luncher winui8
gekickt der macht nur Problemme, das Arnova eigene "restore" eingefügt und
jetzt haltet euch fest, ich weis was es mit den 61 Apps auf sich hat!.


Der cache und der Speicher werden beim flash nicht gelöscht (wiped).

Das wiederum ergibt am ende 61 apps und ups 91 sind es nicht mehr. Dafür anderere. Wenn ihr die Installionsanleitung im Zip befolgt könnt ihr selbst
Rausfinden wieviel es sind . Apex und Win 8 sind nun optional Stock

Arnova Luncher ist am wursteln. Busybox Installer für Hardcoreuser.

Und Ja Cache löschen vor dem Flash und sichheitshalber nach dem Flash
ein Werksreset.

Siehe " texten in ZIP"

Ultimate 8.5


Lädt gerade hoch.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: kuki77

Ähnliche Themen

W
Antworten
4
Aufrufe
6.187
Wildweststeirer
W
M
Antworten
0
Aufrufe
1.177
matze-pe
M
T
Antworten
3
Aufrufe
1.625
cobra1113
C
Zurück
Oben Unten