[Atrix 4G Android Development] sendust7:
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…

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…

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…

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:

-- 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.