[TUTORIAL] The updater-script completely explained

Search This thread

jassun16

Member
Dec 16, 2013
45
6
How can I create a flashable zip with user apps in it (e.g; twitter, evernote, flipboard, paytm etc)? I have tried old methods of creating my own flashable zip file but that doesn't work with the latest Android 7.1.1. Please help me either with a template zip file or the process.
Thanks in advance! :)
 

Primokorn

Senior Member
Nov 17, 2012
11,560
7,754
OnePlus 8 Pro
How can I create a flashable zip with user apps in it (e.g; twitter, evernote, flipboard, paytm etc)? I have tried old methods of creating my own flashable zip file but that doesn't work with the latest Android 7.1.1. Please help me either with a template zip file or the process.
Thanks in advance! :)
Titanium Backup allows you to create an update-zip file to flash it from the recovery. You can use it as a template.
As for me, I have to boot to Android then reboot into TWRP to be able to successfully install Titanium Backup (user app).
 
  • Like
Reactions: jassun16

jassun16

Member
Dec 16, 2013
45
6
Titanium Backup allows you to create an update-zip file to flash it from the recovery. You can use it as a template.
As for me, I have to boot to Android then reboot into TWRP to be able to successfully install Titanium Backup (user app).

Thanks for the reply and the idea is awesome. I tried myself doing the same but some of the apps are forcing closing after installing through the zip file created. Also is it possible to use "adb install <file>" command in the update-script? If so how? Is it possible to update the system apps (stock apps by google) in this kind of zip format??
 

Primokorn

Senior Member
Nov 17, 2012
11,560
7,754
OnePlus 8 Pro
Thanks for the reply and the idea is awesome. I tried myself doing the same but some of the apps are forcing closing after installing through the zip file created. Also is it possible to use "adb install <file>" command in the update-script? If so how? Is it possible to update the system apps (stock apps by google) in this kind of zip format??
I'm used to restoring user apps from Titanium Backup but I don't think you can use this adb command.
You can install a newer version of any system apps (/system/app and/or system/priv-app).
 
  • Like
Reactions: jassun16

NurfitraPujp

New member
Mar 26, 2017
1
0
Error status 0

Hi, i got error status 0 when i tried flashing my custom android 6.0 for my Wiko Lenny 2 lollipop device
here's my updater-script
show_progress(0.1, 0);
format("ext4", "EMMC", "/dev/block/platform/mtk-msdc.0/by-name/system", "0", "/system");
mount("ext4", "EMMC", "/dev/block/platform/mtk-msdc.0/by-name/system", "/system");
package_extract_dir("system", "/dev/block/platform/mtk-msdc.0/by-name/system" );
symlink("dumpstate", "/system/bin/dumpcrash");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
symlink("debuggerd", "/system/bin/csview");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");
symlink("toolbox", "/system/bin/chcon");
symlink("toolbox", "/system/bin/setenforce");
symlink("toolbox", "/system/bin/grep");
symlink("toolbox", "/system/bin/runcon");
symlink("toolbox", "/system/bin/touchinput");
symlink("toolbox", "/system/bin/md5");
symlink("toolbox", "/system/bin/getsebool");
symlink("toolbox", "/system/bin/setsebool");
symlink("toolbox", "/system/bin/restorecon");
symlink("toolbox", "/system/bin/getenforce");
symlink("toolbox", "/system/bin/load_policy");
symlink("toolbox", "/system/bin/cp");
symlink("toolbox", "/system/bin/playback");
symlink("toolbox", "/system/bin/du");
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_pair_devlist.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_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
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");
symlink("/system/xbin/busybox", "/system/bin/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");
set_perm(0, 0, 04755, "/system/xbin/bash");
symlink("/system/xbin/bash", "/system/bin/sh");
set_perm(0, 0, 04755, "/system/xbin/nano");
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", "/dev/block/platform/mtk-msdc.0/by-name/boot"),
delete/tmp/boot.img"));
show_progress(0.2, 10);
unmount("/system");
 
Im attempting to tweak a modded 6.0 Touchwiz Rom that has pre packaged the supersu and busybox installers with the rom. Which is fine except su is defaulting to system mode and what I really need is systemless. So magisk can be added without breaking root.
I've been reading for a while now and still haven't run across a way to execute a terminal command (echo SYSTEMLESS=true>>/data/.supersu) from the updater-script, is this even possible, or perhaps a busybox applet that can be called to perform the task?

I'm still very green when it comes to modding at this level, but I'm trying to learn! any help would be greatly appreciated!
 
Last edited:

Corvo007

Senior Member
Aug 16, 2010
344
121
Is there any way to give an app root permission with the updater-script?
Let say TitaniumBackup.apk is in my Apps.zip > data/app/TitaniumBackup.apk (or sytem/app) and i install it in recovery with package_extract_dir("data", "/data"); After this, can i give TitaniumBackup.apk root permission?
 

ShreyanshLodha

Senior Member
Jun 15, 2015
302
493
Bangalore
when I write
package_extract_dir("system", "/system");
in the script i get
/tmp/updater: line 123: syntax error: unexpected word (expecting ")")
without the package_extract_dir its all fine.
Can anyone tell what the issue maybe?
 

cd993

Senior Member
May 8, 2009
3,705
1,376
London
OnePlus 12
Debloat script failing in TWRP with Error:6

Hi all, anyone able to offer an insight as to why my attempt at a debloat script results with TWRP Error code 6?

Code:
ui_print("");
ui_print("");
ui_print("Galaxy S8 Debloat Script");
ui_print("");
ui_print("");
run_program("/sbin/busybox", "mount", "/data");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/cache");
delete(“/system/app/EasterEgg");
ui_print("Done!");
ui_print(" ");
delete_recursive("/cache");
delete_recursive("/data/dalvik-cache");
run_program("/sbin/busybox", "unmount", "/data");
run_program("/sbin/busybox", "unmount", "/system");
run_program("/sbin/busybox", "mount", "/cache");

It's my early attempt and I'll add more system apps to be removed in time, though upon flashing I get the error. I have selected Encoding = ANSI and EOL Conversion = UNIX within Notepadd++. I've zipped it as Store compression method along with being a .zip archive.

I've got rooted Galaxy S8.

I've attached the debloat script zip for reference.

Thanks in advance!
 

Ticklefish

Recognized Themer
Oct 27, 2011
6,773
8,633
Hampshire, UK
Hi all, anyone able to offer an insight as to why my attempt at a debloat script results with TWRP Error code 6?



It's my early attempt and I'll add more system apps to be removed in time, though upon flashing I get the error. I have selected Encoding = ANSI and EOL Conversion = UNIX within Notepadd++. I've zipped it as Store compression method along with being a .zip archive.

I've got rooted Galaxy S8.

I've attached the debloat script zip for reference.

Thanks in advance!

Status 6 is often, but not always, caused by a syntax error. I can't see anything obviously wrong with yours so, unfortunately, I don't have an immediate solution.
The only thing I can suggest is making your script a lot shorter. Try it with just the ui_print lines at first and see if it works.

If it doesn't, you know that there's something wrong with either the file itself or possibly the encoding. If it does work then you can start adding more lines and find out at what point it falls over.

Sent from my Sony Xperia XA1 using XDA Labs
 

cd993

Senior Member
May 8, 2009
3,705
1,376
London
OnePlus 12
Status 6 is often, but not always, caused by a syntax error. I can't see anything obviously wrong with yours so, unfortunately, I don't have an immediate solution.
The only thing I can suggest is making your script a lot shorter. Try it with just the ui_print lines at first and see if it works.

If it doesn't, you know that there's something wrong with either the file itself or possibly the encoding. If it does work then you can start adding more lines and find out at what point it falls over.

Many thanks for the response.

I'll strip it down to basics and hopefully get it working
 

s5610

Senior Member
Sep 13, 2014
716
305
Chişinău
Struggling to get debloat working on Oreo device... Can slot A be changed to B by script? Thanks

---------- Post added at 01:18 AM ---------- Previous post was at 01:13 AM ----------

Like fastboot --set-active=_b for TWRP
 

Swagnik

Senior Member
Aug 21, 2018
58
4
21
Kolkata
Asus ZenFone 2
Zenfone 2 Laser
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...


When will we get this??
 
Last edited:

aiSanaul

Senior Member
Status 6 is often, but not always, caused by a syntax error. I can't see anything obviously wrong with yours so, unfortunately, I don't have an immediate solution.
The only thing I can suggest is making your script a lot shorter. Try it with just the ui_print lines at first and see if it works.

If it doesn't, you know that there's something wrong with either the file itself or possibly the encoding. If it does work then you can start adding more lines and find out at what point it falls over.

Sent from my Sony Xperia XA1 using XDA Labs
hey is there any way we can compile the code to see results before using it as script??
 

Ticklefish

Recognized Themer
Oct 27, 2011
6,773
8,633
Hampshire, UK
hey is there any way we can compile the code to see results before using it as script??
Not really, no. The code is compiled as the recovery reads it.

That doesn't mean somebody couldn't create a form of dummy recovery that pretends to action the script without actually doing anything, but I'm not aware of anything.

The best thing is to make sure you've got a good backup and take it slowly.
 
  • Like
Reactions: aiSanaul

hasobist

Senior Member
Feb 1, 2021
446
73
Hello @KINGbabasula !
Was trying to patch the .jar and .dex files for added features gone obsolete as were blocked in the future updates.

I do have some basic knowledge of Linux ,thanks to xda community for being wonderful mentors,appreciate that.
Searched the whole forum where my searches led me and elsewhere too with no success.

As a newbie to all of this stuff,few queries!

When one says patching the files ,what are you looking for ,as in what lines to add or delete etc.

As an example patching the fosservice.jar for accessibility and the service.jar for widgets,what is it I'm looking for to add to avail the above services?

Is it features or sevice specific the lines to be added or the specific files to be edited?
How to gauge which files in /system/framework to be patched,inorder to avail a specific service or feature?
What are the tools required to accomplish the above?

If any ,can help or point me in the right direction ,much much appreciated.
Thank you.......
Cheers!
 
Last edited:

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