[TUT] [for NOOB] editing updater-script for noobs!

Search This thread

mihahn

Senior Member
May 26, 2012
3,257
2,215
Hello thanks for your guide
But wher can i found this scripts
Its dose say found it in your working rom
But how and wer exact??

Sent from my brain to help you using tapatalk.... :D
Hit THANKS its always free.... :D

Like mentioned in OP you can find it in META-INF -> com-> google -> android in your rom ;)

Sent from my Nexus 4 running Android 4.3
 

badagila

Senior Member
Apr 5, 2013
653
121
Iloilo City
www.facebook.com
status 7 error

hi.., i cooked a rom using the kitchen and i got error status 7 installation aborted this is my updater-script

Code:
show_progress(0.1, 0);
format("MTD", "system");
mount("MTD", "system", "/system");
mount("MTD", "userdata", "/data");
delete("/data/local");
package_extract_file("check_data_app", "/tmp/check_data_app");
set_perm(0, 0, 0777, "/tmp/check_data_app");
run_program("/tmp/check_data_app");
package_extract_dir("data", "/data");
set_perm(2000, 2000, 0771, "/data/local");
set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
package_extract_dir("system", "/system");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
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/reboot");
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/umount");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");
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, 0777, "/system/bin/a2sd");
set_perm(0, 0, 0777, "/system/etc/init.d/00banner");
set_perm(0, 0, 0777, "/system/etc/init.d/01sysctl");
set_perm(0, 0, 0777, "/system/etc/init.d/02firstboot");
set_perm(0, 0, 0777, "/system/etc/init.d/04apps2sd");
set_perm(0, 0, 0777, "/system/etc/init.d/99complete");
set_perm(0, 0, 0777, "/system/bin/launcha2sd");
set_perm(0, 0, 0777, "/system/bin/starta2sd");
set_perm(0, 0, 0777, "/system/bin/jita2sd");
set_perm(0, 0, 0777, "/system/bin/chka2sd");
set_perm(0, 0, 0777, "/system/bin/zipalign");
set_perm(0, 0, 0777, "/system/bin/sysinit");
set_perm(0, 0, 0777, "/system/bin/busybox.a2sd");
set_perm(0, 0, 0644, "/system/bin/apps2sd.hlp");
set_perm(0, 0, 0777, "/system/xbin/a2sd");
set_perm(0, 0, 0777, "/system/bin/dtinstall");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 04755, "/system/xbin/bash");
symlink("/system/xbin/bash", "/system/bin/sh");
set_perm(0, 0, 04755, "/system/xbin/nano");
set_perm(0, 0, 04755, "/system/xbin/sysrw");
set_perm(0, 0, 04755, "/system/xbin/sysro");
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");
show_progress(0.1, 10);
show_progress(0.2, 0);
run_program("/data/dtinstall.launch");
delete("/system/bin/dtinstall");
delete("/data/dtinstall.launch");
package_extract_file("move_cache_sd", "/tmp/move_cache_sd");
set_perm(0, 0, 0777, "/tmp/move_cache_sd");
run_program("/tmp/move_cache_sd");
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");
unmount("/data");

my device is samsung galaxy gio.., can someone help me to identify the error? thanks in advance
 

karandpr

Senior Mod | DC Lead | MC
Staff member
Feb 20, 2011
13,427
32,325
Xiaomi Redmi 4a
Nokia 6.1 Plus (Nokia X6)
@badagila
I dont think Samsung Galaxy Gio has mtd block partitions
It has rfs partitions or ext4 partition depending on kernel & recovery used ...
Code:
format("MTD", "system");
mount("MTD", "system", "/system");
mount("MTD", "userdata", "/data");
wont work ...
Try to check some other zips for options
AFAIK ,busybox is used to mount the partition using run_program
 

badagila

Senior Member
Apr 5, 2013
653
121
Iloilo City
www.facebook.com
@badagila
I dont think Samsung Galaxy Gio has mtd block partitions
It has rfs partitions or ext4 partition depending on kernel & recovery used ...
Code:
format("MTD", "system");
mount("MTD", "system", "/system");
mount("MTD", "userdata", "/data");
wont work ...
Try to check some other zips for options
AFAIK ,busybox is used to mount the partition using run_program

dude maybe because my device is not supported by the kitchen.., anyway have you try to use kitchen and mount point your device make the cooked rom works? anyway this my fstabs.., Recovery.fstab if it is ok to you can i ask somehelp to make me understand abuout it?
 

karandpr

Senior Mod | DC Lead | MC
Staff member
Feb 20, 2011
13,427
32,325
Xiaomi Redmi 4a
Nokia 6.1 Plus (Nokia X6)
Not really ...
I have used question but thats almost two years ago now ...
I uses to use my own updater-script so it didn't matter really ...

These is how you mount system ...
Code:
run_program("/sbin/busybox", "mount", "/system");
Code:
run_program("/sbin/busybox", "umount", "/system");

Like i said ,it matters on what ROM you are using ...
Stock Galaxy Gio uses rfs filesystem
Custom Roms usually use ext4 file system ...

You will have to specify the format option likewise....
Easiest way is to open an updater-script of a working script and study it ...
it should be something like

format("ext4", "emmc","/dev/block/stl12");

use at your own descretion ...
Note :kernel should support ext4 and recovery should support ext4 format or you will have to use mkfs.ext4 manually
 

badagila

Senior Member
Apr 5, 2013
653
121
Iloilo City
www.facebook.com
Not really ...
I have used question but thats almost two years ago now ...
I uses to use my own updater-script so it didn't matter really ...

These is how you mount system ...
Code:
run_program("/sbin/busybox", "mount", "/system");
Code:
run_program("/sbin/busybox", "umount", "/system");

Like i said ,it matters on what ROM you are using ...
Stock Galaxy Gio uses rfs filesystem
Custom Roms usually use ext4 file system ...

You will have to specify the format option likewise....
Easiest way is to open an updater-script of a working script and study it ...
it should be something like

format("ext4", "emmc","/dev/block/stl12");

use at your own descretion ...
Note :kernel should support ext4 and recovery should support ext4 format or you will have to use mkfs.ext4 manually


how long you study the updater-script before you master it?
 

karandpr

Senior Mod | DC Lead | MC
Staff member
Feb 20, 2011
13,427
32,325
Xiaomi Redmi 4a
Nokia 6.1 Plus (Nokia X6)
I was pretty much right ....

Format system
Code:
format("ext4", "EMMC", "/dev/block/stl12");

Mount system
Code:
mount("ext4", "EMMC", "/dev/block/stl12", "/system");
mount("ext4", "EMMC", "/dev/block/stl13", "/data");

Install Rom
Code:
package_extract_dir("recovery", "/system");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");

Symlink and Fix permissions /Misc actions
Code:
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/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/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("toolbox", "/system/bin/cat", "/system/bin/cmp",
        "/system/bin/date", "/system/bin/dd", "/system/bin/getevent",
        "/system/bin/getprop", "/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/log", "/system/bin/lsmod", "/system/bin/nandread",
        "/system/bin/netstat", "/system/bin/newfs_msdos", "/system/bin/notify",
        "/system/bin/printenv", "/system/bin/ps", "/system/bin/reboot",
        "/system/bin/renice", "/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/uptime",
        "/system/bin/vmstat", "/system/bin/watchprops",
        "/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
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(1000, 1003, 02755, "/system/bin/screenshot");
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_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");
set_perm(0, 0, 0755, "/system/etc/init.d");
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, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/hcitool");
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");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
set_perm_recursive(0, 2000, 0755, 0755, "/system/holder");
set_perm(0, 0, 0755, "/system/holder");
set_perm(0, 0, 0755, "/system/holder/40int2ext");
set_perm_recursive(0, 2000, 0777, 0777, "/system/etc/init.d");
set_perm_recursive(0, 2000, 0777, 0777, "/system/usr/idc");
set_perm(0, 0, 0777, "/system/etc/init.d/40int2ext");
set_perm(0, 0, 0777, "/system/bin/boost");
set_perm(0, 0, 0777, "/system/xbin/sqlite3");
set_perm(0, 0, 0777, "/system/xbin/zipalign");
set_perm(0, 0, 0777, "/system/xbin/openvpn");
set_perm(0, 0, 0777, "/system/lib/libncurses.so");
set_perm(0, 0, 0777, "/system/lib/libsqlite.so");
set_perm(0, 0, 0777, "/system/lib/libsqlite_jni.so");
set_perm(0, 0, 0777, "/system/etc/init.d/S98system_tweak");
set_perm(0, 0, 0777, "/system/etc/init.d/S70darky_zipalign");
set_perm(0, 0, 0777, "/system/etc/init.d/sqlite_optimize");
set_perm(0, 0, 0777, "/system/etc/init.d/ram_optimize");
set_perm(0, 0, 0777, "/system/etc/init.d/ext4_lagfix");
set_perm(0, 0, 0777, "/data/local.prop");
set_perm(0, 0, 0777, "/system/usr/idc/mxt244_ts_input.idc");
set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
show_progress(0.200000, 0);
show_progress(0.200000, 10);
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
set_perm(0, 0, 0777, "/tmp/backuptool.sh");
run_program("/tmp/backuptool.sh", "restore");
package_extract_file("system/bin/modelid_cfg.sh", "/tmp/modelid_cfg.sh");
set_perm(0, 0, 0777, "/tmp/modelid_cfg.sh");
run_program("/tmp/modelid_cfg.sh");
package_extract_file("system/bin/verify_cache_partition_size.sh", "/tmp/verify_cache_partition_size.sh");
set_perm(0, 0, 0777, "/tmp/verify_cache_partition_size.sh");
run_program("/tmp/verify_cache_partition_size.sh");
show_progress(0.200000, 10);

Flash kernel
Code:
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
Unmount system
Code:
unmount("/system");

Updater scripts are pretty much black and white ...No chance / use of modification ...

Disclaimer : if some genius reads this and attempts to flash a kernel using the code in updater script on an Xperia device . DONT . Samsung devices have two kernel partitions ,one for recovery and one for boot .
Xperia devices use one kernel with two ramdisks ....
Attempting to use this script will perma brick the device or wont do anything if you are lucky...
 

Doctoror

Senior Member
Nov 11, 2012
69
15
Lviv
I created the image with the following commands

Code:
dd if=/dev/block/mmcblk0p1 of=/mnt/sdcard/modem.img
dd if=/dev/block/mmcblk0p5 of=/mnt/sdcard/aboot.img

Now I want to create a flashable zip to flash these images to another copy of device.

1) Do I need to format partition before I write raw image at first place?
2) Is this script okay if I assume no formatting needed?

Code:
ui_print("Updating modem.img ...");
write_raw_image("aboot.img", "/dev/block/mmcblk0p5");
write_raw_image("modem.img", "/dev/block/mmcblk0p1");
ui_print("Finished!");
ui_print();

If it needs formating, I use Parittion Table app to identify the partitions. It shows for /dev/block/mmcblk0p1 mount point and filesystem type ("vfat") but for /dev/block/mmcblk0p5 this info is absent.

3) How to I know the filesystem type "EMMC" or "MTD" or what?

Thanks.


EDIT:
the proper way would be to just

Code:
package_extract_file("aboot.img", "/dev/block/mmcblk0p5");
package_extract_file("modem.img", "/dev/block/mmcblk0p1");
 
Last edited:
  • Like
Reactions: rjglenn

dannyben

Senior Member
May 9, 2011
1,478
1,551
I've created a MOD and a flashable zip file to install it.

The issue, for which I cant seem to find any help on is:

On certain devices it is required to edit the /system/csc/feature.xml file.

I dont want to replace the file all together, but just add some lines (if the set isnt there) or edit the lines (if it already is there).

I figure its just some code i need to add into the updater-script, but dont know where to start?

Any help would be appreciated.

TIA.
 

badagila

Senior Member
Apr 5, 2013
653
121
Iloilo City
www.facebook.com
I was pretty much right ....

Format system
Code:
format("ext4", "EMMC", "/dev/block/stl12");

Mount system
Code:
mount("ext4", "EMMC", "/dev/block/stl12", "/system");
mount("ext4", "EMMC", "/dev/block/stl13", "/data");

Install Rom
Code:
package_extract_dir("recovery", "/system");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");

Symlink and Fix permissions /Misc actions
Code:
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/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/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("toolbox", "/system/bin/cat", "/system/bin/cmp",
        "/system/bin/date", "/system/bin/dd", "/system/bin/getevent",
        "/system/bin/getprop", "/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/log", "/system/bin/lsmod", "/system/bin/nandread",
        "/system/bin/netstat", "/system/bin/newfs_msdos", "/system/bin/notify",
        "/system/bin/printenv", "/system/bin/ps", "/system/bin/reboot",
        "/system/bin/renice", "/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/uptime",
        "/system/bin/vmstat", "/system/bin/watchprops",
        "/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
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(1000, 1003, 02755, "/system/bin/screenshot");
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_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");
set_perm(0, 0, 0755, "/system/etc/init.d");
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, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/hcitool");
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");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
set_perm_recursive(0, 2000, 0755, 0755, "/system/holder");
set_perm(0, 0, 0755, "/system/holder");
set_perm(0, 0, 0755, "/system/holder/40int2ext");
set_perm_recursive(0, 2000, 0777, 0777, "/system/etc/init.d");
set_perm_recursive(0, 2000, 0777, 0777, "/system/usr/idc");
set_perm(0, 0, 0777, "/system/etc/init.d/40int2ext");
set_perm(0, 0, 0777, "/system/bin/boost");
set_perm(0, 0, 0777, "/system/xbin/sqlite3");
set_perm(0, 0, 0777, "/system/xbin/zipalign");
set_perm(0, 0, 0777, "/system/xbin/openvpn");
set_perm(0, 0, 0777, "/system/lib/libncurses.so");
set_perm(0, 0, 0777, "/system/lib/libsqlite.so");
set_perm(0, 0, 0777, "/system/lib/libsqlite_jni.so");
set_perm(0, 0, 0777, "/system/etc/init.d/S98system_tweak");
set_perm(0, 0, 0777, "/system/etc/init.d/S70darky_zipalign");
set_perm(0, 0, 0777, "/system/etc/init.d/sqlite_optimize");
set_perm(0, 0, 0777, "/system/etc/init.d/ram_optimize");
set_perm(0, 0, 0777, "/system/etc/init.d/ext4_lagfix");
set_perm(0, 0, 0777, "/data/local.prop");
set_perm(0, 0, 0777, "/system/usr/idc/mxt244_ts_input.idc");
set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
show_progress(0.200000, 0);
show_progress(0.200000, 10);
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
set_perm(0, 0, 0777, "/tmp/backuptool.sh");
run_program("/tmp/backuptool.sh", "restore");
package_extract_file("system/bin/modelid_cfg.sh", "/tmp/modelid_cfg.sh");
set_perm(0, 0, 0777, "/tmp/modelid_cfg.sh");
run_program("/tmp/modelid_cfg.sh");
package_extract_file("system/bin/verify_cache_partition_size.sh", "/tmp/verify_cache_partition_size.sh");
set_perm(0, 0, 0777, "/tmp/verify_cache_partition_size.sh");
run_program("/tmp/verify_cache_partition_size.sh");
show_progress(0.200000, 10);

Flash kernel
Code:
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
Unmount system
Code:
unmount("/system");

Updater scripts are pretty much black and white ...No chance / use of modification ...

Disclaimer : if some genius reads this and attempts to flash a kernel using the code in updater script on an Xperia device . DONT . Samsung devices have two kernel partitions ,one for recovery and one for boot .
Xperia devices use one kernel with two ramdisks ....
Attempting to use this script will perma brick the device or wont do anything if you are lucky...


hi dude its me again.. so this will work on samsung devices?
 

karandpr

Senior Mod | DC Lead | MC
Staff member
Feb 20, 2011
13,427
32,325
Xiaomi Redmi 4a
Nokia 6.1 Plus (Nokia X6)
hi dude its me again.. so this will work on samsung devices?

It will work on Samsung devices but be careful .Samsung doesn't have a unified partition layout . WHat might work for Galaxy S2 wont work for Note 2 or Galaxy mini ...Research your device and then apply your logic .
My friend's phone was bricked because he flashed kernel at wrong place .
 

badagila

Senior Member
Apr 5, 2013
653
121
Iloilo City
www.facebook.com
Auto-Scripts are good if you know a device configuration or the device is standard .
Samsung doesn't use standard stuff ....
If you have a ROM which installs properly ,and doesn't brick device than you can use that with Android Kitchen ...


android kitchen has much complete set-up for every device that we will use for rom modification but my only issue is the updater script
 

Top Liked Posts

  • There are no posts matching your filters.
  • 222
    Hi friends of XDA,

    I created this tutorial especially for noobs who would like to know how the clockworkmod uses the .zip
    file and what and all goes into the process of flashing a .zip file and mainly about the format and syntax used in updater-script.

    first is first!

    #include
    /*
    * I am not responsible for bricked devices, dead SD cards or
    * thermonuclear war.
    * do some research if you have any concerns.
    * YOU are choosing to make these modifications.
    * yes, i copied this disclaimer from FXP because it is cool and i am lazy! :)
    */

    now what is the updater-script and update-binary present in the META-INF>com>google>android in any flashable zip package?

    1. updater-script - it is just a text file which contains all the commands which tells the clockworkmod what to do with the given
    zip file. the updater-script is written in the edify scripting language.

    2. update-binary - it is a binary which is requiered by the clockworkmod to translate the human readable format of the updater-
    script to machine readable format for execution of the updater-script in our device.


    exploring the updater-script:
    now let's start exploring the updater-script ! :)

    1. open the updater script with notepad++ (strongly recommended)

    2. now i will try and explain commands generally used in the updater-script,



    assert(getprop("ro.product.device") == "ST15i" || getprop("ro.build.product") == "ST15i" ||
    getprop("ro.product.device") == "ST15a" || getprop("ro.build.product") == "ST15a" ||
    getprop("ro.product.device") == "smultron" || getprop("ro.build.product") == "smultron");

    the above bunch of lines checks the device model to confirm that the zip file is flashed on the device
    for which it is specifically created for. These bunch of lines are very important because it prevents
    flashing of zip file which is not intended for the device hence avoiding any problems due to flashing
    the wrong zip. for example the above lines checks for the value of "ro.product.device" and
    "ro.build.product"in the build.prop file of the already existing rom in the device, if any of the three
    defined values ST15i, ST15a, smultron are found it will continue with the next line of updater-script
    otherwise flashing gets aborted with error in getprop.



    format("yaffs2", "MTD", "system", "/system");

    the above command explains itself, it is used to format the specified partition

    syntax explanation:
    format - the main command to direct the cwm to format using the following parameters
    "yaffs2" - filesystem type used in the device
    "MTD" - type of the partition used in the file system
    "system" - name of the partition to be formatted
    "/system" - location of the partition to be formatted



    ui_print("Format Completed");

    the above command is also self explanatory, it directs the cwm to display the following text
    enclosed in double quotes in the user interface (display).
    after succesful formatting it displays "Format Completed" in the device screen.



    mount("yaffs2", "MTD", "system", "/system");

    the mount command directs the cwm to mount the following file system and the following partition
    the syntax is just as explained in the format command except that this command mounts the
    defined partition whereas the format command formats the defined partition.

    let's review what we have done till now,

    1. we have checked the device to confirm that this is the device for which we created the zip.
    2. we have formatted the system partition of the device.(this is only done when a new complete rom is being flashed, for flashing mods you
    should never format the system partition!)
    3. we have mounted the system partition of the device.

    now let's continue,


    package_extract_dir("system", "/system");

    this command searches for the directory (folder) named "system" in the root of the zip file and
    copies all the content of the "system" folder from the zip file into the "/system" partition
    which is already mounted by the previous mount command.

    remember the structure of the file system in the zip file and the "/system" partition of the device must be always identical.
    for eg., you have created a mod by editing the systemUI.apk and you want to flash it, the system UI.apk resides in "/system/app"
    so the structure of the file system in the update zip should be "/system/app/systemUI.apk"
    ie., the update zip should contain folder named "system" at the root of it and folder named "app" inside the "system" folder and the
    modded "systemUI.apk" must be placed inside the "app" folder.



    package_extract_file("autoroot.sh", "/tmp/autoroot.sh");

    this command searches for the file named "autoroot.sh" in the root of the zip file and
    copies the file to "/tmp" folder and names it as "autoroot.sh" (here it does not change the name)



    symlink("mksh", "/system/bin/sh");

    the above command creates a symlink.
    okay, now let's see about symlinks,
    symlink is nothing but shortcuts, for example if a file is requiered in two different places instead of copy pasting the file
    in two different locations, the file is copied to one of the two locations and in the other location a shortcut to the file(symlink)
    is created. the source and the symlink can have different names (actually this is the prime use of symlinks).
    to explain in a noob friendly manner,
    take the above symlink, it creates a shortcut(symlink) for the command "mksh" and places it in the path of the operating system.
    the shortcut(symlink) directs to the file "/system/bin/sh" , so whenever the os gets a request to execute the "mksh" command, the actual
    binary that gets excuted will be "/system/bin/sh" .
    creating symlinks saves a lot of space because instead of copying the whole file and placing it in requiered places we are just
    creating shortcuts which directs to the source file which can be placed anywhere in the file system (generally placed in the path of the os).



    set_perm_recursive(0, 0, 0755, 0644, "/system");

    the above command is used to set permission recursively for the files and folders present inside a folder (in this case for "/system" folder).

    syntax explanation:
    0 - uid - it defines that the following permission is set for the user id 0 .
    0 - gid - it defines that the following permission is set for the group id 0 .
    0775 - dirmode - it defines that 0775 permission to set to directories contained within the specified directory.
    0644 - filemode - it defines that 0644 permission to set to files contained within the specified directory.
    "/system" - target directory to set the above mentioned permissions.



    set_perm(0, 3003, 06755, "/system/bin/ip");

    the above command is used to set permission for a individual file (in this case for "/system/bin/ip" file).

    syntax explanation:

    0 - uid - it defines that the following permission is set for the user id 0 .
    3003 - gid - it defines that the following permission is set for the group id 3003 .
    06775 - it defines that 06775 permission to set to the specific file.
    "/system/bin/ip" - target file to set the above mentioned permissions.



    run_program("/tmp/autoroot.sh");

    remember the file autoroot.sh from package_extract_file command?
    that file is supposed to be a shell script, the above command directs cwm to execute the "autoroot.sh" shell script present in "/tmp" folder.



    unmount("/system");

    the unmount command directs the cwm to unmount the following partition
    the syntax is just as explained in the mount command except that this command unmounts the
    defined partition whereas the mount command mounts the defined partition.

    Okay now going into slightly complex and/or not widely used updater-script commands,

    Ifelse

    Syntax:
    Ifelse(condition),(do_this),(else_do_this);

    Example:
    ifelse mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Mounted!"), ui_print("Mount Failed!");

    Ifelse command can be explained simply as asking the system to do something based on the result of a condition.

    From the example:

    The ifelse command would attempt to mount the MTD partition named "system" to "/system".
    If the mounting process succeeds (the condition), the script will display "Mounted!", else it will display "Mount Failed!"



    abort()

    It just abort's the script execution

    Note: it is usually paired with some other command for example the getprop command or with ifelse.

    Independently specifying abort() in the updater-script will kill the script abruptly right there so use this command carefully.



    ALWAYS LEAVE A BLANK LINE AT THE END OF THE update-script (if the code contains 50 lines then 51 lines should be visible
    in the notepad++ including a blank line after the end of the script)
    ALWAYS REMEMBER TO SET THE EOL (end of line) CONVERSION OF updater-script
    IN UNIX FORMAT BEFORE SAVING (notepad++ > edit > EOL conversion > UNIX format)

    the above mentioned commands are just basic edify scripting commands which are generally used in updater-script.

    for detailed scripting and coding in edify scripting language check out the following sources:

    source of update-binary

    introdution to edify

    http://xdaforums.com/wiki/Edify_script_language

    scratchpad-documenting-edify-commands-for-android-updater-scritps

    http://xdaforums.com/showthread.php?t=1290062

    HIT THANKS IF I HAVE HELPED YOU! :)
    4
    If anyone is interested in the source of the update-binary, I've added the link to it in the first post :)

    hit thanks if I've helped!


    sent from my smultron
    3
    What l must to change here? I got error 7

    Sent from my HTC EVO 3D X515m using xda app-developers app

    Have you set the eol conversion to Unix format as described?

    Have you left a blank line as described?

    Make sure that Cyanogenmod Rom is for your device. Then try flashing again.

    If the above mentioned steps fails and you still get a status 7 error or assert failed error then make SURE that the Rom is really specific for your device and remove the first three lines from the script

    Remove lines starting From "assert" to "smultron");

    Make sure that after removing the above specified three lines there is no blank line at the start of the script And flash again

    Usually status 7 errors are due to bad formatting of the updater-script or in rare cases it is due to corrupted or incomplete download of the Rom.

    hit thanks if I've helped!


    sent from my smultron
    1
    Wondering, Why fastboot don't require such signing and can flash any image?

    Unlocking bootloader trips e-fuse. Plus unlocking bootloader wipes data.