Downsize ROM updater-script using busybox symlink generator

sendust7

Senior Member
Oct 24, 2011
348
810
0
California
I found a way to significantly reduce the amount of code in a typical ROM "updater script"...

...using my new busybox symlink generator: “gen-symlinks-busybox.sh”. For example I was able to realize a 40% reduction in updater-script code when porting Neutrino V2.9 GT to SD card.

You can find “gen-symlinks-busybox.sh” here: http://www.mediafire.com/?lohk79iy1k9a63q in the /system/xbin directory.

Highlights of SD ROM updater-script.

This…

Code:
ui_print("Symlinking...");
set_perm_recursive(0, 0, 0777, 0777, "/system");
package_extract_file("system/xbin/gen-symlinks-busybox.sh", "/tmp/gen-symlinks-busybox.sh");
set_perm(0, 0, 0777, "/tmp/gen-symlinks-busybox.sh");
run_program("/sbin/sh", "/tmp/gen-symlinks-busybox.sh", "/system/xbin");
Replaces this…

Code:
ui_print("Symlinking...");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
        "/system/xbin/arp", "/system/xbin/ash", "/system/xbin/awk",
        "/system/xbin/base64", "/system/xbin/basename", "/system/xbin/bbconfig",
        "/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/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/insmod", "/system/xbin/install", "/system/xbin/iostat",
        "/system/xbin/ip", "/system/xbin/kill", "/system/xbin/killall",
        "/system/xbin/killall5", "/system/xbin/length", "/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/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/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/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");
And here’s a directory dump of /system/xbin showing the auto-generated BB symlinks with Neutrino V2.9 GT running on SD…

Code:
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 [ -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 [[ -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 adjtimex -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 arp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ash -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 awk -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 base64 -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 basename -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 bbconfig -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 blkid -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 blockdev -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 brctl -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 bunzip2 -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell       506004 Aug  1  2008 busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 bzcat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 bzip2 -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cal -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 catv -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 chattr -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 chgrp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 chmod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 chown -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 chroot -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 clear -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cmp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 comm -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cpio -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 crond -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 crontab -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 cut -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 date -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dc -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 depmod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 devmem -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell        60272 Aug  1  2008 dexdump
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 df -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 diff -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dirname -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dmesg -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dnsd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 dos2unix -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 du -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 echo -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ed -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 egrep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 env -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 expand -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 expr -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 false -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 fdisk -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 fgrep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 find -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 flash_lock -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 flash_unlock -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 flashcp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 flock -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 fold -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 free -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 freeramdisk -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 fsync -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ftpget -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ftpput -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 fuser -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell          762 Aug  1  2008 gen-symlinks-busybox.sh
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 getopt -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 grep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 groups -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 gunzip -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 gzip -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 halt -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell        59076 Aug  1  2008 hciconfig
-rwsr-sr-x    1 root     root         32164 Aug  1  2008 hcitool
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 head -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 hexdump -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 id -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ifconfig -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 inetd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 insmod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 install -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ionice -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 iostat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ip -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            11 Sep  7 13:01 iwconfig -> iwmulticall
lrwxrwxrwx    1 root     root            11 Sep  7 13:01 iwgetid -> iwmulticall
lrwxrwxrwx    1 root     root            11 Sep  7 13:01 iwlist -> iwmulticall
lrwxrwxrwx    1 root     root            11 Sep  7 13:01 iwpriv -> iwmulticall
lrwxrwxrwx    1 root     root            11 Sep  7 13:01 iwspy -> iwmulticall
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 kill -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 killall -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 killall5 -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 less -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ln -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 losetup -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ls -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lsattr -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lsmod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lsof -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lsusb -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lzcat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lzma -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lzop -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 lzopcat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 man -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 md5sum -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mesg -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkdir -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkdosfs -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mke2fs -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkfifo -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkfs.ext2 -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkfs.vfat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mknod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mkswap -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mktemp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 modinfo -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 modprobe -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 more -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mount -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mountpoint -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mpstat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 mv -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nanddump -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nandwrite -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nbd-client -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nc -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 netstat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nice -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nohup -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 nslookup -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ntpd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 od -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 patch -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pgrep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pidof -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ping -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pipe_progress -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pkill -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pmap -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 poweroff -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 printenv -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 printf -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ps -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pstree -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pwd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 pwdx -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rdev -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 readlink -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 realpath -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 reboot -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 renice -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 reset -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 resize -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rev -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rm -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rmdir -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rmmod -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 route -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 run-parts -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 rx -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sed -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 seq -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 setconsole -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 setserial -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 setsid -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sh -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sha1sum -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sha256sum -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sha512sum -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sleep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sort -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 split -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell       129124 Aug  1  2008 sqlite3
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 stat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 strings -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 stty -> /system/xbin/busybox
-rwsr-sr-x    1 root     root         91980 Aug  1  2008 su
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sum -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 swapoff -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 swapon -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sync -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 sysctl -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tac -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tail -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tar -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tee -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 telnet -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 telnetd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 test -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tftp -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tftpd -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 time -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 timeout -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 top -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 touch -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tr -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 traceroute -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 true -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 ttysize -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 tune2fs -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 umount -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uname -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uncompress -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unexpand -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uniq -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unix2dos -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unlzma -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unlzop -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unxz -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 unzip -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uptime -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 usleep -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uudecode -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 uuencode -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 vi -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 watch -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 wc -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 wget -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 which -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 whoami -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 xargs -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 xz -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 xzcat -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 yes -> /system/xbin/busybox
lrwxrwxrwx    1 root     root            20 Sep  7 13:01 zcat -> /system/xbin/busybox
-rwxr-xr-x    1 root     shell        22316 Aug  1  2008 zipalign
One interesting anomaly I found along the way …

Both CWM and RomRacer recoveries returned this error while attempting to flash my SD ROM zip created using WinRAR:

Code:
-- Installing: /sdcard/Download/Neutrino-V2.9-GT-SD-signed.zip
Finding update package...
I:Update location: /sdcard/Download/Neutrino-V2.9-GT-SD-signed.zip
Opening update package...
minzip: Incompatible "version made by": 0x0b (at 5)
E:Can't open /sdcard/Download/Neutrino-V2.9-GT-SD-signed.zip
(bad)
Installation aborted.
So I rolled the ROM files back up with 7-zip and... voila, problem disappeared. Now I have Neutrino V2.9 GT (and Lite gapps http://www.mediafire.com/?01m5vxu3lqp754b ) running happily on SD.

Enjoy… Let me know if you see any problems with the symlink generator or with execution logic.

Credits: Many thanks to Notorious544d for his slender and attractive ROM, to Koush and RomRacer for their excellent recovery tools, and of course to Igor Pavlov for his reliable 7-zip compression tool.
 
Last edited:

sendust7

Senior Member
Oct 24, 2011
348
810
0
California
Sounds cool. Thanks! I will try this. Can this install files in places other than /system, like /data?
I think so, as long as busybox exists there :)

If you want to run it directly on a ROM instead of on CWM, you may need to either create a "/tmp" directory (or symlink to it) or modify the script to access the ROM's temp directory path, e.g. /data/tmp or /osh/tmp

Actually I think it is helpful to keep the generator inside the ROM busybox directory in case any of the symlinks get lost or corrupted. Then we wouldn't necessarily have to reinstall busybox :D