[TUTORIAL] The updater-script completely explained

Search This thread

KINGbabasula

Inactive Recognized Developer
Jan 28, 2013
2,301
5,167
Treviso

jaunty

Senior Member
May 28, 2013
728
401
New Delhi
how to set permissions like this??

I will be glad if you me for changing some permissions in root directory.

I have attached Screenshot from what i currently have and what permissions i do want to have, if you have knowledge regarding this please guide me.


I need to change these permissions coz after a factory RESET these files get deleted and i get some serious errors of WIFI and IMEI. than again i need to put these files in the ROOT.

this is located in root/data/nvram

Screenshot_2013-10-11-13-59-29-picsay.jpg


Thanks in advance.. :)
 

Attachments

  • Screenshot_2013-10-11-13-59-29-picsay.jpg
    Screenshot_2013-10-11-13-59-29-picsay.jpg
    96.3 KB · Views: 590

tejasjani55

Senior Member
Jul 13, 2013
77
14
Surendranagar
How can I know that numbers of permission?

Sent from my ST21i using XDA Premium 4 mobile app

---------- Post added at 10:50 AM ---------- Previous post was at 10:50 AM ----------

Guide to gid uid and permission mode for diff path

Sent from my ST21i using XDA Premium 4 mobile app
 

iZLeeP

Senior Member
Jan 23, 2014
528
151
Manila
Thanks for the guide. One thing though, what's the difference in installing busybox. I've often seen this code

symlink("/system/xbin/busybox", "/system/bin/busybox");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");

whereas in others, they're just symlinks like in the op

symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
"/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",
"/system/xbin/bbconfig", "/system/xbin/blkid", "/system/xbin/blockdev",
"/system/xbin/brctl", "/system/xbin/bunzip2", "/system/xbin/bzcat",
"/system/xbin/bzip2", "/system/xbin/cal", "/system/xbin/cat",
"/system/xbin/catv", "/system/xbin/chattr", "/system/xbin/chgrp",
"/system/xbin/chmod", "/system/xbin/chown", "/system/xbin/chroot",
"/system/xbin/clear", "/system/xbin/cmp", "/system/xbin/comm",
"/system/xbin/cp", "/system/xbin/cpio", "/system/xbin/crond",
"/system/xbin/crontab", "/system/xbin/cut", "/system/xbin/date",
"/system/xbin/dc", "/system/xbin/dd", "/system/xbin/depmod",
"/system/xbin/devmem", "/system/xbin/df", "/system/xbin/diff",
"/system/xbin/dirname", "/system/xbin/dmesg", "/system/xbin/dnsd",
"/system/xbin/dos2unix", "/system/xbin/du", "/system/xbin/echo",
"/system/xbin/ed", "/system/xbin/egrep", "/system/xbin/env",
"/system/xbin/expand", "/system/xbin/expr", "/system/xbin/false",
"/system/xbin/fbsplash", "/system/xbin/fdisk", "/system/xbin/fgrep",
"/system/xbin/find", "/system/xbin/flash_lock",
"/system/xbin/flash_unlock", "/system/xbin/flashcp",
"/system/xbin/flock", "/system/xbin/fold", "/system/xbin/free",
"/system/xbin/freeramdisk", "/system/xbin/fstrim", "/system/xbin/fsync",
"/system/xbin/ftpget", "/system/xbin/ftpput", "/system/xbin/fuser",
"/system/xbin/getopt", "/system/xbin/grep", "/system/xbin/groups",
"/system/xbin/gunzip", "/system/xbin/gzip", "/system/xbin/halt",
"/system/xbin/head", "/system/xbin/hexdump", "/system/xbin/id",
"/system/xbin/ifconfig", "/system/xbin/inetd", "/system/xbin/insmod",
"/system/xbin/install", "/system/xbin/ionice", "/system/xbin/iostat",
"/system/xbin/ip", "/system/xbin/kill", "/system/xbin/killall",
"/system/xbin/killall5", "/system/xbin/less", "/system/xbin/ln",
"/system/xbin/losetup", "/system/xbin/ls", "/system/xbin/lsattr",
"/system/xbin/lsmod", "/system/xbin/lsusb", "/system/xbin/lzcat",
"/system/xbin/lzma", "/system/xbin/lzop", "/system/xbin/lzopcat",
"/system/xbin/man", "/system/xbin/md5sum", "/system/xbin/mesg",
"/system/xbin/mkdir", "/system/xbin/mke2fs", "/system/xbin/mkfifo",
"/system/xbin/mkfs.ext2", "/system/xbin/mkfs.vfat",
"/system/xbin/mknod", "/system/xbin/mkswap", "/system/xbin/mktemp",
"/system/xbin/modinfo", "/system/xbin/modprobe", "/system/xbin/more",
"/system/xbin/mount", "/system/xbin/mountpoint", "/system/xbin/mpstat",
"/system/xbin/mv", "/system/xbin/nanddump", "/system/xbin/nandwrite",
"/system/xbin/nbd-client", "/system/xbin/netstat", "/system/xbin/nice",
"/system/xbin/nohup", "/system/xbin/nslookup", "/system/xbin/ntpd",
"/system/xbin/od", "/system/xbin/patch", "/system/xbin/pgrep",
"/system/xbin/pidof", "/system/xbin/ping", "/system/xbin/pipe_progress",
"/system/xbin/pkill", "/system/xbin/pmap", "/system/xbin/poweroff",
"/system/xbin/printenv", "/system/xbin/printf", "/system/xbin/ps",
"/system/xbin/pstree", "/system/xbin/pwd", "/system/xbin/pwdx",
"/system/xbin/rdev", "/system/xbin/readlink", "/system/xbin/realpath",
"/system/xbin/renice", "/system/xbin/reset", "/system/xbin/resize",
"/system/xbin/rev", "/system/xbin/rm", "/system/xbin/rmdir",
"/system/xbin/rmmod", "/system/xbin/route", "/system/xbin/run-parts",
"/system/xbin/rx", "/system/xbin/sed", "/system/xbin/seq",
"/system/xbin/setconsole", "/system/xbin/setserial",
"/system/xbin/setsid", "/system/xbin/sh", "/system/xbin/sha1sum",
"/system/xbin/sha256sum", "/system/xbin/sha3sum",
"/system/xbin/sha512sum", "/system/xbin/sleep", "/system/xbin/sort",
"/system/xbin/split", "/system/xbin/stat", "/system/xbin/strings",
"/system/xbin/stty", "/system/xbin/sum", "/system/xbin/swapoff",
"/system/xbin/swapon", "/system/xbin/sync", "/system/xbin/sysctl",
"/system/xbin/tac", "/system/xbin/tail", "/system/xbin/tar",
"/system/xbin/taskset", "/system/xbin/tee", "/system/xbin/telnet",
"/system/xbin/telnetd", "/system/xbin/test", "/system/xbin/tftp",
"/system/xbin/tftpd", "/system/xbin/time", "/system/xbin/timeout",
"/system/xbin/top", "/system/xbin/touch", "/system/xbin/tr",
"/system/xbin/traceroute", "/system/xbin/true", "/system/xbin/ttysize",
"/system/xbin/tune2fs", "/system/xbin/umount", "/system/xbin/uname",
"/system/xbin/uncompress", "/system/xbin/unexpand", "/system/xbin/uniq",
"/system/xbin/unix2dos", "/system/xbin/unlzma", "/system/xbin/unlzop",
"/system/xbin/unxz", "/system/xbin/unzip", "/system/xbin/uptime",
"/system/xbin/usleep", "/system/xbin/uudecode", "/system/xbin/uuencode",
"/system/xbin/vi", "/system/xbin/watch", "/system/xbin/wc",
"/system/xbin/wget", "/system/xbin/which", "/system/xbin/whoami",
"/system/xbin/xargs", "/system/xbin/xz", "/system/xbin/xzcat",
"/system/xbin/yes", "/system/xbin/zcat");
 
Last edited:

FBis251

Senior Member
Mar 21, 2011
3,418
3,716
www.fernandobarillas.com
Hey, great tutorial. Do you think it'd be a good idea to also add what parameters each function takes? For example unmount will only take one parameter but symlink can take 2 or more. It would be good to see which parameter does what and the number of expected parameters.

Thanks for the writeup!
 

s3icc0

Senior Member
Mar 25, 2011
1,947
728
Hi all XDA Members :)
This is not at all an updater-script guide but an explanation

.
.
.

Hi
Can you tell me what is the difference between:
Code:
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
and
Code:
run_program("/sbin/busybox", "mount", "/system");

and what and how should I use to be able to copy files to
Code:
/res/customconfig/
- how can I determine partition/mount point - I am still bit a lost in this so I don't know how to design my updater-script...
this is what I have now - but I am not sure it will be working - or it will not damage the phone:
Code:
run_program("/sbin/busybox", "mount", "/res");
delete("/res/customconfig/customconfig-helper", "/res/customconfig/customconfig.xml", "/res/customconfig/actions/push-actions/config_backup_restore");
package_extract_dir("res", "/res");
set_perm(0, 0, 6755, "/res/customconfig/customconfig-helper", "/res/customconfig/customconfig.xml", "/res/customconfig/custom.profile", "/res/customconfig/actions/push-actions/config_backup_restore");
run_program("/sbin/busybox", "unmount", "/res");

thank you for any help (the script should help me to create some custom features for the kernel I use which is operated by STweaks app)
 

brandonsisco

Member
Dec 26, 2008
41
9
Anyone know how to reboot-bootloader via an update.zip ?

I have a Lenovo K910 i'm trying to Unbrick, any help is much appreciated.
 

KINGbabasula

Inactive Recognized Developer
Jan 28, 2013
2,301
5,167
Treviso
@KINGbabasula could you explain about symlink more?
Written in OP isn't enough for my project! :)
When symlink is executed it creates a file linked to an executable. For example I have a file /bin/sh and I want to call it from somewhere else. I create a symlink of it in /sdcard/sh and if I execute sh in the sdcard folder it will be the same as executing /bin/sh
 
  • Like
Reactions: MaxisMan and Nikhil

Nikhil

Senior Member
Sep 26, 2012
1,787
2,824
Ahmedabad
OnePlus 7 Pro
Xiaomi Poco X3 Pro
When symlink is executed it creates a file linked to an executable. For example I have a file /bin/sh and I want to call it from somewhere else. I create a symlink of it in /sdcard/sh and if I execute sh in the sdcard folder it will be the same as executing /bin/sh

and syntax for that would be
Code:
symlink("/bin/sh", "/sdcard/sh");
or vice-versa? i.e.
Code:
symlink("/sdcard/sh", "/bin/sh");
 

cryostasis25

Senior Member
Apr 11, 2011
498
84
Is it possible to post my updater script here and have it checked if I did it correctly as I just created one but once it finishes it reboots to the recovery and once I just reboot it still automatically goes to the recovery. I really don't know what to do or what line i did incorrectly
 

Attachments

  • META-INF.rar
    237.9 KB · Views: 82

demkantor

Inactive Recognized Contributor
Nov 10, 2011
6,861
3,764
mpls
Is it possible to post my updater script here and have it checked if I did it correctly as I just created one but once it finishes it reboots to the recovery and once I just reboot it still automatically goes to the recovery. I really don't know what to do or what line i did incorrectly

The file structure is off, I'm on mobile right now or I would fix it up for you, but for now have a look here
http://xdaforums.com/showthread.php?t=2290009
If your still stuck let me know and I'll lend a hand when I'm at a PC
Oh and be careful with the dd commands, its often best not to use these if there is another way as it even a little mistake or a corrupt file can lead to a quick brick, consider the flash raw image busybox command instead for the kernel
 
  • Like
Reactions: cryostasis25

cryostasis25

Senior Member
Apr 11, 2011
498
84
Ok will do thanks got dizzy looking at all the lines

Sent from my X140 using XDA Premium 4 mobile app
 

luigi997

Senior Member
Jun 1, 2013
77
5
I am making a rom in cwm but I always get the error status 0 , help me fill in the updater script correctly?

This is the updater script made from cygwin:

Code:
show_progress(0.1, 0);
format("MTD", "system");
mount("MTD", "system", "/system");
format("MTD", "userdata");
package_extract_dir("system", "/system");
symlink("dumpstate", "/system/bin/dumpcrash");
symlink("debuggerd", "/system/bin/csview");
symlink("mksh", "/system/bin/sh");
symlink("toolbox", "/system/bin/touchinput");
symlink("toolbox", "/system/bin/playback");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 06755, "/system/bin/ip");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/etc");
set_perm_recursive(0, 0, 0755, 0644, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 1000, 0755, "/system/xbin/busybox");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/su");
symlink("/system/xbin/su", "/system/bin/su");
show_progress(0.1, 10);
show_progress(0.2, 0);
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
show_progress(0.2, 10);
unmount("/system");

The rom is for s3 mini
 

demkantor

Inactive Recognized Contributor
Nov 10, 2011
6,861
3,764
mpls
Status 0 usually means the wrong update-binary is being used, try to extract one from a known working ROM for your device and replace, then try again
 
  • Like
Reactions: JerryGNYC

Top Liked Posts

  • There are no posts matching your filters.
  • 112
    Hi all XDA Members :)
    This is not at all an updater-script guide but an explanation

    Example of updater-script:

    Code:
    [COLOR="Red"]assert(getprop("ro.product.device") == "janice" || getprop("ro.build.product") == "janice" || 
           getprop("ro.product.device") == "i9070" || getprop("ro.build.product") == "i9070" || 
           getprop("ro.product.device") == "GT-I9070" || getprop("ro.build.product") == "GT-I9070");[/COLOR]
    [COLOR="Silver"]mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");[/COLOR]
    [COLOR="Green"]package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
    package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 0, 0777, "/tmp/backuptool.sh");
    set_perm(0, 0, 0644, "/tmp/backuptool.functions");[/COLOR]
    [COLOR="Lime"]run_program("/tmp/backuptool.sh", "backup");[/COLOR]
    [COLOR="RoyalBlue"]unmount("/system");[/COLOR]
    [COLOR="Pink"]show_progress(0.500000, 0);[/COLOR]
    unmount("/system");
    [COLOR="DarkSlateGray"]format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0", "/system")[/COLOR];
    [COLOR="silver"]mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");[/COLOR]
    [COLOR="Purple"]package_extract_dir("recovery", "/system");
    package_extract_dir("system", "/system");[/COLOR]
    [COLOR="Olive"]symlink("/system/xbin/su", "/system/bin/su");
    symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
    symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
    symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
            "/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
            "/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",
            "/system/xbin/bbconfig", "/system/xbin/blkid", "/system/xbin/blockdev",
            "/system/xbin/brctl", "/system/xbin/bunzip2", "/system/xbin/bzcat",
            "/system/xbin/bzip2", "/system/xbin/cal", "/system/xbin/cat",
            "/system/xbin/catv", "/system/xbin/chattr", "/system/xbin/chgrp",
            "/system/xbin/chmod", "/system/xbin/chown", "/system/xbin/chroot",
            "/system/xbin/clear", "/system/xbin/cmp", "/system/xbin/comm",
            "/system/xbin/cp", "/system/xbin/cpio", "/system/xbin/crond",
            "/system/xbin/crontab", "/system/xbin/cut", "/system/xbin/date",
            "/system/xbin/dc", "/system/xbin/dd", "/system/xbin/depmod",
            "/system/xbin/devmem", "/system/xbin/df", "/system/xbin/diff",
            "/system/xbin/dirname", "/system/xbin/dmesg", "/system/xbin/dnsd",
            "/system/xbin/dos2unix", "/system/xbin/du", "/system/xbin/echo",
            "/system/xbin/ed", "/system/xbin/egrep", "/system/xbin/env",
            "/system/xbin/expand", "/system/xbin/expr", "/system/xbin/false",
            "/system/xbin/fbsplash", "/system/xbin/fdisk", "/system/xbin/fgrep",
            "/system/xbin/find", "/system/xbin/flash_lock",
            "/system/xbin/flash_unlock", "/system/xbin/flashcp",
            "/system/xbin/flock", "/system/xbin/fold", "/system/xbin/free",
            "/system/xbin/freeramdisk", "/system/xbin/fstrim", "/system/xbin/fsync",
            "/system/xbin/ftpget", "/system/xbin/ftpput", "/system/xbin/fuser",
            "/system/xbin/getopt", "/system/xbin/grep", "/system/xbin/groups",
            "/system/xbin/gunzip", "/system/xbin/gzip", "/system/xbin/halt",
            "/system/xbin/head", "/system/xbin/hexdump", "/system/xbin/id",
            "/system/xbin/ifconfig", "/system/xbin/inetd", "/system/xbin/insmod",
            "/system/xbin/install", "/system/xbin/ionice", "/system/xbin/iostat",
            "/system/xbin/ip", "/system/xbin/kill", "/system/xbin/killall",
            "/system/xbin/killall5", "/system/xbin/less", "/system/xbin/ln",
            "/system/xbin/losetup", "/system/xbin/ls", "/system/xbin/lsattr",
            "/system/xbin/lsmod", "/system/xbin/lsusb", "/system/xbin/lzcat",
            "/system/xbin/lzma", "/system/xbin/lzop", "/system/xbin/lzopcat",
            "/system/xbin/man", "/system/xbin/md5sum", "/system/xbin/mesg",
            "/system/xbin/mkdir", "/system/xbin/mke2fs", "/system/xbin/mkfifo",
            "/system/xbin/mkfs.ext2", "/system/xbin/mkfs.vfat",
            "/system/xbin/mknod", "/system/xbin/mkswap", "/system/xbin/mktemp",
            "/system/xbin/modinfo", "/system/xbin/modprobe", "/system/xbin/more",
            "/system/xbin/mount", "/system/xbin/mountpoint", "/system/xbin/mpstat",
            "/system/xbin/mv", "/system/xbin/nanddump", "/system/xbin/nandwrite",
            "/system/xbin/nbd-client", "/system/xbin/netstat", "/system/xbin/nice",
            "/system/xbin/nohup", "/system/xbin/nslookup", "/system/xbin/ntpd",
            "/system/xbin/od", "/system/xbin/patch", "/system/xbin/pgrep",
            "/system/xbin/pidof", "/system/xbin/ping", "/system/xbin/pipe_progress",
            "/system/xbin/pkill", "/system/xbin/pmap", "/system/xbin/poweroff",
            "/system/xbin/printenv", "/system/xbin/printf", "/system/xbin/ps",
            "/system/xbin/pstree", "/system/xbin/pwd", "/system/xbin/pwdx",
            "/system/xbin/rdev", "/system/xbin/readlink", "/system/xbin/realpath",
            "/system/xbin/renice", "/system/xbin/reset", "/system/xbin/resize",
            "/system/xbin/rev", "/system/xbin/rm", "/system/xbin/rmdir",
            "/system/xbin/rmmod", "/system/xbin/route", "/system/xbin/run-parts",
            "/system/xbin/rx", "/system/xbin/sed", "/system/xbin/seq",
            "/system/xbin/setconsole", "/system/xbin/setserial",
            "/system/xbin/setsid", "/system/xbin/sh", "/system/xbin/sha1sum",
            "/system/xbin/sha256sum", "/system/xbin/sha3sum",
            "/system/xbin/sha512sum", "/system/xbin/sleep", "/system/xbin/sort",
            "/system/xbin/split", "/system/xbin/stat", "/system/xbin/strings",
            "/system/xbin/stty", "/system/xbin/sum", "/system/xbin/swapoff",
            "/system/xbin/swapon", "/system/xbin/sync", "/system/xbin/sysctl",
            "/system/xbin/tac", "/system/xbin/tail", "/system/xbin/tar",
            "/system/xbin/taskset", "/system/xbin/tee", "/system/xbin/telnet",
            "/system/xbin/telnetd", "/system/xbin/test", "/system/xbin/tftp",
            "/system/xbin/tftpd", "/system/xbin/time", "/system/xbin/timeout",
            "/system/xbin/top", "/system/xbin/touch", "/system/xbin/tr",
            "/system/xbin/traceroute", "/system/xbin/true", "/system/xbin/ttysize",
            "/system/xbin/tune2fs", "/system/xbin/umount", "/system/xbin/uname",
            "/system/xbin/uncompress", "/system/xbin/unexpand", "/system/xbin/uniq",
            "/system/xbin/unix2dos", "/system/xbin/unlzma", "/system/xbin/unlzop",
            "/system/xbin/unxz", "/system/xbin/unzip", "/system/xbin/uptime",
            "/system/xbin/usleep", "/system/xbin/uudecode", "/system/xbin/uuencode",
            "/system/xbin/vi", "/system/xbin/watch", "/system/xbin/wc",
            "/system/xbin/wget", "/system/xbin/which", "/system/xbin/whoami",
            "/system/xbin/xargs", "/system/xbin/xz", "/system/xbin/xzcat",
            "/system/xbin/yes",
            "/system/xbin/zcat");
    symlink("mksh", "/system/bin/sh");
    symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
            "/system/bin/chown", "/system/bin/cmp", "/system/bin/cp",
            "/system/bin/date", "/system/bin/dd", "/system/bin/df",
            "/system/bin/dmesg", "/system/bin/du", "/system/bin/getevent",
            "/system/bin/getprop", "/system/bin/grep", "/system/bin/hd",
            "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",
            "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",
            "/system/bin/kill", "/system/bin/ln", "/system/bin/log",
            "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
            "/system/bin/md5", "/system/bin/mkdir", "/system/bin/mount",
            "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",
            "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
            "/system/bin/ps", "/system/bin/r", "/system/bin/reboot",
            "/system/bin/renice", "/system/bin/restart", "/system/bin/rm",
            "/system/bin/rmdir", "/system/bin/rmmod", "/system/bin/route",
            "/system/bin/schedtop", "/system/bin/sendevent",
            "/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep",
            "/system/bin/smd", "/system/bin/start", "/system/bin/stop",
            "/system/bin/sync", "/system/bin/top", "/system/bin/touch",
            "/system/bin/umount", "/system/bin/uptime", "/system/bin/vmstat",
            "/system/bin/watchprops",
            "/system/bin/wipe");[/COLOR]
    [COLOR="SandyBrown"]set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 0, 0755, 0755, "/system/addon.d");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 3003, 02750, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(0, 2000, 06750, "/system/bin/run-as");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");[/COLOR]
    [COLOR="SandyBrown"]set_perm_recursive(0, 2000, 0755, 0755, "/system/etc/init.d");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 0, 0755, "/system/etc/init.d");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");[/COLOR]
    [COLOR="SandyBrown"]set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 2000, 0755, "/system/vendor");
    set_perm(0, 2000, 0755, "/system/vendor/etc");
    set_perm(0, 2000, 0755, "/system/vendor/firmware");[/COLOR]
    [COLOR="SandyBrown"]set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 0, 0644, "/system/vendor/lib/libbt-vendor.so");[/COLOR]
    [COLOR="SandyBrown"]set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 0, 06755, "/system/xbin/librank");
    set_perm(0, 0, 06755, "/system/xbin/procmem");
    set_perm(0, 0, 06755, "/system/xbin/procrank");
    set_perm(0, 0, 06755, "/system/xbin/su");[/COLOR]
    [COLOR="Pink"]show_progress(0.200000, 0);
    show_progress(0.200000, 10);[/COLOR]
    [COLOR="Green"]package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
    package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");[/COLOR]
    [COLOR="DarkRed"]set_perm(0, 0, 0777, "/tmp/backuptool.sh");
    set_perm(0, 0, 0644, "/tmp/backuptool.functions");[/COLOR]
    [COLOR="Lime"]run_program("/tmp/backuptool.sh", "restore");[/COLOR]
    [COLOR="Navy"]delete("/system/bin/backuptool.sh");
    delete("/system/bin/backuptool.functions");[/COLOR]
    [COLOR="Pink"]show_progress(0.200000, 10);[/COLOR]
    assert(package_extract_file("boot.img", "/tmp/boot.img"),
           write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p15"),
           delete("/tmp/boot.img"));
    [COLOR="Pink"]show_progress(0.100000, 0);[/COLOR]
    unmount("/system");

    1. getprop

    The assert getprop lines aren't a must but their use is to make a safer installation.
    Example: This updater-script is for GT-I9070 so with that lines it will check in build.prop if product name matches.
    If "ro.product.device is janice, i9070 or GT-I9070 the installation will continue. If not it will abort.

    2. mount

    Mount command will mount a partition as something.
    Example: For GT-I9070 the /system partition is dev/block/mmcblk0p3
    The partitions change device by device.

    3. package_extract_file

    This line extracts a specific file contained in the zip to a specific directory.
    Example: This updater-script extracts backuptool.sh to the temporary directory /tmp

    4. set_perm

    These lines are needed to give the correct permissions to the files extracted.
    Example: backuptool.sh needs 777 permission to be executed correctly.

    5. run_program

    This line execute a bash script (*.sh).
    Example: backuptool.sh will be executed then after it will close itself and the updater-script will continue.

    6. unmount

    This command will unmount the specificated partition.
    Example: In this case it will unmount system partition.

    7. format

    This command will format the specificated partition.
    Example: This updater-script will format system partition. it needs to be unmounted before being formatted.

    8. package_extract_dir

    This command extracts a specificated folder to another folder.
    Example: This updater-script extracts system folder to system partition.

    9. symlink

    This command links executable files to a file.
    Example: busybox contains a lot of commands but they are all separated binaries that are linked to busybox binary by the symlinks.

    10. set_perm_recursive

    This command is the same as set_perm but for folders
    Example: is used to set permissions of the folder system/etc/init.d

    11 . delete

    This command deletes a file
    Example: In this updater-script is used to delete backuptool.sh.

    12. delete_recursive

    Same as delete but for folders
    29
    Aroma Installer

    Folder structure:

    Blue = Folders
    Black = Files

    META-INF
    |--com
    |..|--google
    |.....|--android
    |........|--aroma
    |........|..|--exec_demo < Little executables to sleep or take a screenshot
    |........|..|--fonts < Fonts: There must be a "small.png" for lowercase and a "big.png"
    |........|..|--icons < The icons that will be showed if called by the aroma-config
    |........|..|--langs < It may contain translations
    |........|..|--splash < The splash image/s that are showed at the start as static or animation if called by aroma-config
    |........|..|--themes < Can be chosen from the aroma-config
    |........|..|--ttf < Fonts
    |........|..|--unicode < Chinese and Cyrillic
    |........|--aroma-config < File that controls the installation
    |........|--update-binary < Executable
    |........|--update-binary-installer < Executable
    |........|--updater-script < File that controls the installation
    |--CERT.RSA < Sign files
    |--CERT.SF < Sign files
    |--MANIFEST.MF < Sign files


    Will come soon...
    9
    Thanks for creating this guide. I've featured on the XDA Portal. :)
    4
    Thanks for the answer buddy, here it's, ( this is for Galaxy note 8.0 ) my previous phones rom didn't have this problem because it was NOT using
    MTD.

    Problem is with
    format("MTD", "system");
    mount("MTD", "system", "/system");

    Open your ramdisk contents extracted from your kernel. There you should see something like fstab or .fstab. Open those files with notepad++. you will see the path to your system or data..say for xperia s the mount point for the system is dev/block/mmcblk0p12 and format is ext4 so the command becomes format("ext4","EMMC","dev/block/mmcblk0p12") and mount("ext4","EMMC","dev/block/mmcblk0p12)respectively.

    Similarly for assert(package_extract_file("boot.img", "/tmp/boot.img").This tells cwm to extract boot.img and load it in /tmp/boot.img which is wrong..again you need to find the mount point of your phone where you need to extract the boot.img...Again taking xperia s as an example. it is
    package_extract_file("boot.img", "/dev/block/mmcblk0p3").
    Hope that helps