[Nexus S General] KreAch3R:
Instructions

BACKUP, BACKUP, BACKUP!

Backup everything you can, we need a nandroid backup, sdcard backup, etc. Try to imagine you have lost your phone, and backup what you would have missed!

[*]USE MY CUSTOM BUILT TWRP RECOVERY

Or, if you want to modify it yourself folllow the instructions:

If you only want to take an existing build of a recovery and modify it to accept and recognize LVM volumes, but you don't care about the internal media storage depicted as sdcard, follow the steps below:

Unpack the recovery image you want using the Android Image Kitchen

Copy the contents of lvm-bin/ in the lvm repository to lvm/ in the ramdisk folder

Copy devices/crespo/lvm.conf to lvm/etc/lvm.conf in the ramdisk folder

Intergrate the changes from my git files

(NOTE: I think fstab.herring and recovery.fstab should be identical to fstab.herring from boot.img, and twrp.fstab should be the only different, - but it is just a theory, not tested)

Repack

Flash using fastboot

If you want to compile your own TWRP build and make it accept LVM, you have to build TWRP from source using [MENTION=3122936]daxxter[/MENTION] 's build flags from this post (c/p here for clarity):

BoardConfig.mk (device_samsung_crespo):

PRODUCT_COPY_FILES += device/samsung/crespo/twrp.fstab:recovery/root/etc/twrp.fstab
DEVICE_RESOLUTION := 480x800
RECOVERY_SDCARD_ON_DATA := true
RECOVERY_GRAPHICS_USE_LINELENGTH := true
BOARD_HAS_NO_REAL_SDCARD := true
TW_NO_USB_STORAGE := true

TW_INTERNAL_STORAGE_PATH := "/data/media"
TW_INTERNAL_STORAGE_MOUNT_POINT := "data"

twrp.fstab

# mount point	fstype	device

/system	ext4	/dev/lvpool/system
/cache	yaffs2	cache
/data	ext4	/dev/lvpool/userdata
/misc	mtd	misc
/boot	mtd	boot
/recovery	mtd	recovery
/bootloader	mtd	bootloader
/radio	mtd	radio
/efs yaffs2 efs flags=display="EFS";backup=1;canbewiped

You also have to include the other modifications needed for LVM, such as the LVM folder and the necessary changes to init.rc. I suppose you can incorporate them in the building process, possibly doing modifications in the crespo tree files, but I didn't build it this way because I didn't think of it at the time, so the process is undocumented. I just built the modified twrp and then used the above process (with apktool) to make the lvm changes. Gross and ugly, I know, but I learn with all of this, too. Next time will be better.

[*]CREATE SPECIFIED LOGICAL VOLUMES

I created 2 logical partitions on the device, on top of the mmcblk0p1, mmcblk0p2, mmcblk0p3 partitions.

LVs:

/dev/lvpool/system 1G

/dev/lvpool/userdata 13.5G

Gracious command sharing by [MENTION=2752491]RappyBMX[/MENTION] :

# adb shell
# /lvm/sbin/lvm pvcreate /dev/block/mmcblk0p1 /dev/block/mmcblk0p2 /dev/block/mmcblk0p3
# /lvm/sbin/lvm vgcreate lvpool /dev/block/mmcblk0p1 /dev/block/mmcblk0p2 /dev/block/mmcblk0p3
# /lvm/sbin/lvm lvcreate -L 1G -n system lvpool
# /lvm/sbin/lvm lvcreate -L 13G -n userdata lvpool

OLD WAY:

Android OS is supposed to only recognize and mount the first two, (/system and /userdata). SDcard is created and symlinked in the /data/media folder, as per official Google examples.

TWRP Recovery, on the other hand, can mount all three of them, and uses the "media" partition as sdcard storage. I had to hack it like that for now, because I could not build the twrp recovery from source, using the correct make-configs (32bit system only here!), and the current crespo recovery can't recognize the emulated storage correctly, at least as far as I could try.

NOTE #2:

The plan is to build a correctly modified twrp for this crespo configuration when I get to my main PC and ditch the /lvpool/media partition. At this point I should mention that /media/ for a recovery-only partition is a terrible name, but I was following the lvm guide to the point, and I didn’t have time to re-do it just for a name change. If you want to change it, also change it in every .fstab file / mount point you find it.

CURRENT WAY:

Android OS is recognizing and mounting /system and /userdata as /data. The SDcard is created and symlinked in the /data/media folder, as per official Google examples.

Steps:

Boot into the recovery you just created (hope it boots)

Use the LVM guide and give the necessary lvm commands to create the logical volumes (ATTENTION! THIS WILL ERASE EVERYTHING!)

Reboot

Advanced format /system to ext4

Advanced format /data (type "yes")

Full Wipe-factory reset

In general, format everything you can to ext4 to make TWRP recognize them. No harm done, as your device is empty.

Now our phone is ready to take our modified rom.zip, once we build it!

[*]ROM UPDATER-SCRIPT

Open the ROM .zip and navigate to the updater-script. Replace the block partitions with the logical ones (I didn’t mess with ‘EMMC’ tag at all). Example, from this:

mount("ext4", "EMMC", "/dev/block/platform/s3c-sdhci.0/by-name/userdata ", "/data")

To this:

mount("ext4", "EMMC", "/dev/lvpool/userdata", "/data")

Save the file.

This is an example of a working updater-script file (the one used in my latest LVM-CM11-M12 rom):

assert(getprop("ro.product.device") == "crespo" ||
getprop("ro.build.product") == "crespo" ||
abort("This package is for device: crespo; this device is " + getprop("ro.product.device") + "."););
mount("ext4", "EMMC", "/dev/lvpool/system", "/system");
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");
set_metadata("/tmp/backuptool.sh", "uid", 0, "gid", 0, "mode", 0755);
set_metadata("/tmp/backuptool.functions", "uid", 0, "gid", 0, "mode", 0644);
run_program("/tmp/backuptool.sh", "backup");
unmount("/system");
show_progress(0.500000, 0);
mount("ext4", "EMMC", "/dev/lvpool/userdata", "/data");
package_extract_file("system/bin/otasigcheck.sh", "/tmp/otasigcheck.sh");
package_extract_file("META-INF/org/cyanogenmod/releasekey", "/tmp/releasekey");
set_metadata("/tmp/otasigcheck.sh", "uid", 0, "gid", 0, "mode", 0755);
run_program("/tmp/otasigcheck.sh");
sha1_check(read_file("/tmp/releasekey"),"7241e92725436afc79389d4fc2333a2aa8c20230") && abort("Can't install this package on top of incompatible data. Please try another package or run a factory reset");
unmount("/data");
format("ext4", "EMMC", "/dev/lvpool/system", "0", "/system");
mount("ext4", "EMMC", "/dev/lvpool/system", "/system");
package_extract_dir("recovery", "/system");
package_extract_dir("system", "/system");
symlink("../bin/fsck.f2fs", "/system/bin/dump.f2fs");
symlink("../xbin/su", "/system/bin/su");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
"/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",
"/system/xbin/bbconfig", "/system/xbin/blkid", "/system/xbin/blockdev",
"/system/xbin/brctl", "/system/xbin/bunzip2", "/system/xbin/bzcat",
"/system/xbin/bzip2", "/system/xbin/cal", "/system/xbin/cat",
"/system/xbin/catv", "/system/xbin/chattr", "/system/xbin/chcon",
"/system/xbin/chgrp", "/system/xbin/chmod", "/system/xbin/chown",
"/system/xbin/chroot", "/system/xbin/chvt", "/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/deallocvt", "/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/fgconsole",
"/system/xbin/fgrep", "/system/xbin/find", "/system/xbin/findfs",
"/system/xbin/flash_lock", "/system/xbin/flash_unlock",
"/system/xbin/flashcp", "/system/xbin/flock", "/system/xbin/fold",
"/system/xbin/free", "/system/xbin/freeramdisk", "/system/xbin/fstrim",
"/system/xbin/fsync", "/system/xbin/ftpget", "/system/xbin/ftpput",
"/system/xbin/fuser", "/system/xbin/getenforce", "/system/xbin/getopt",
"/system/xbin/getsebool", "/system/xbin/grep", "/system/xbin/groups",
"/system/xbin/gunzip", "/system/xbin/gzip", "/system/xbin/halt",
"/system/xbin/head", "/system/xbin/hexdump", "/system/xbin/hwclock",
"/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/lspci",
"/system/xbin/lsusb", "/system/xbin/lzcat", "/system/xbin/lzma",
"/system/xbin/lzop", "/system/xbin/lzopcat", "/system/xbin/man",
"/system/xbin/matchpathcon", "/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/nmeter", "/system/xbin/nohup", "/system/xbin/nslookup",
"/system/xbin/ntpd", "/system/xbin/od", "/system/xbin/openvt",
"/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/rdate",
"/system/xbin/rdev", "/system/xbin/readlink", "/system/xbin/realpath",
"/system/xbin/renice", "/system/xbin/reset", "/system/xbin/resize",
"/system/xbin/restorecon", "/system/xbin/rev", "/system/xbin/rm",
"/system/xbin/rmdir", "/system/xbin/rmmod", "/system/xbin/route",
"/system/xbin/run-parts", "/system/xbin/runcon", "/system/xbin/rx",
"/system/xbin/sed", "/system/xbin/selinuxenabled", "/system/xbin/seq",
"/system/xbin/sestatus", "/system/xbin/setconsole",
"/system/xbin/setenforce", "/system/xbin/setfiles",
"/system/xbin/setkeycodes", "/system/xbin/setsebool",
"/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/smemcap", "/system/xbin/sort", "/system/xbin/split",
"/system/xbin/stat", "/system/xbin/strings", "/system/xbin/stty",
"/system/xbin/sum", "/system/xbin/swapoff", "/system/xbin/swapon",
"/system/xbin/sync", "/system/xbin/sysctl", "/system/xbin/tac",
"/system/xbin/tail", "/system/xbin/tar", "/system/xbin/taskset",
"/system/xbin/tee", "/system/xbin/telnet", "/system/xbin/telnetd",
"/system/xbin/test", "/system/xbin/tftp", "/system/xbin/tftpd",
"/system/xbin/time", "/system/xbin/timeout", "/system/xbin/top",
"/system/xbin/touch", "/system/xbin/tr", "/system/xbin/traceroute",
"/system/xbin/true", "/system/xbin/ttysize", "/system/xbin/tune2fs",
"/system/xbin/umount", "/system/xbin/uname", "/system/xbin/uncompress",
"/system/xbin/unexpand", "/system/xbin/uniq", "/system/xbin/unix2dos",
"/system/xbin/unlzma", "/system/xbin/unlzop", "/system/xbin/unxz",
"/system/xbin/unzip", "/system/xbin/uptime", "/system/xbin/usleep",
"/system/xbin/uudecode", "/system/xbin/uuencode", "/system/xbin/vi",
"/system/xbin/watch", "/system/xbin/wc", "/system/xbin/wget",
"/system/xbin/which", "/system/xbin/whoami", "/system/xbin/xargs",
"/system/xbin/xz", "/system/xbin/xzcat", "/system/xbin/yes",
"/system/xbin/zcat");
symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
symlink("logcat", "/system/bin/lolcat");
symlink("mksh", "/system/bin/sh");
symlink("mount.exfat", "/system/bin/fsck.exfat",
"/system/bin/mkfs.exfat");
symlink("pigz", "/system/xbin/unpigz");
symlink("toolbox", "/system/bin/cat", "/system/bin/chcon",
"/system/bin/chmod", "/system/bin/chown", "/system/bin/clear",
"/system/bin/cmp", "/system/bin/cp", "/system/bin/date",
"/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
"/system/bin/du", "/system/bin/getenforce", "/system/bin/getevent",
"/system/bin/getprop", "/system/bin/getsebool", "/system/bin/grep",
"/system/bin/hd", "/system/bin/id", "/system/bin/ifconfig",
"/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl",
"/system/bin/ionice", "/system/bin/kill", "/system/bin/ln",
"/system/bin/load_policy", "/system/bin/log", "/system/bin/ls",
"/system/bin/lsmod", "/system/bin/lsof", "/system/bin/md5",
"/system/bin/mkdir", "/system/bin/mkswap", "/system/bin/mount",
"/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",
"/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
"/system/bin/ps", "/system/bin/r", "/system/bin/readlink",
"/system/bin/renice", "/system/bin/restart", "/system/bin/restorecon",
"/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
"/system/bin/route", "/system/bin/runcon", "/system/bin/schedtop",
"/system/bin/sendevent", "/system/bin/setconsole",
"/system/bin/setenforce", "/system/bin/setfattr", "/system/bin/setprop",
"/system/bin/setsebool", "/system/bin/sleep", "/system/bin/smd",
"/system/bin/start", "/system/bin/stop", "/system/bin/swapoff",
"/system/bin/swapon", "/system/bin/sync", "/system/bin/top",
"/system/bin/touch", "/system/bin/umount", "/system/bin/uptime",
"/system/bin/vmstat", "/system/bin/watchprops",
"/system/bin/wipe");
set_metadata_recursive("/system", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/app_process", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:zygote_exec:s0");
set_metadata("/system/bin/clatd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clatd_exec:s0");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/bin/dhcpcd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dhcp_exec:s0");
set_metadata("/system/bin/dnsmasq", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dnsmasq_exec:s0");
set_metadata("/system/bin/drmserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:drmserver_exec:s0");
set_metadata("/system/bin/hostapd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:hostapd_exec:s0");
set_metadata("/system/bin/installd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:installd_exec:s0");
set_metadata("/system/bin/keystore", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:keystore_exec:s0");
set_metadata("/system/bin/mediaserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mediaserver_exec:s0");
set_metadata("/system/bin/mksh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:shell_exec:s0");
set_metadata("/system/bin/mtpd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mtp_exec:s0");
set_metadata("/system/bin/netcfg", "uid", 0, "gid", 3003, "mode", 02750, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/netd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:netd_exec:s0");
set_metadata("/system/bin/ping", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ping_exec:s0");
set_metadata("/system/bin/pppd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ppp_exec:s0");
set_metadata("/system/bin/racoon", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:racoon_exec:s0");
set_metadata("/system/bin/rild", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:rild_exec:s0");
set_metadata("/system/bin/run-as", "uid", 0, "gid", 2000, "mode", 0750, "capabilities", 0xc0, "selabel", "u:object_r:runas_exec:s0");
set_metadata("/system/bin/sdcard", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:sdcardd_exec:s0");
set_metadata("/system/bin/servicemanager", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:servicemanager_exec:s0");
set_metadata("/system/bin/surfaceflinger", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:surfaceflinger_exec:s0");
set_metadata("/system/bin/vold", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vold_exec:s0");
set_metadata("/system/bin/wpa_supplicant", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:wpa_exec:s0");
set_metadata_recursive("/system/etc/dhcpcd", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:dhcp_system_file:s0");
set_metadata("/system/etc/dhcpcd/dhcpcd-run-hooks", "uid", 1014, "gid", 2000, "mode", 0550, "capabilities", 0x0, "selabel", "u:object_r:dhcp_system_file:s0");
set_metadata_recursive("/system/etc/init.d", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/etc/init.d", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/etc/install-cm-recovery.sh", "uid", 0, "gid", 0, "mode", 0544, "capabilities", 0x0);
set_metadata_recursive("/system/etc/ppp", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0555, "capabilities", 0x0, "selabel", "u:object_r:ppp_system_file:s0");
set_metadata("/system/recovery-from-boot.p", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0);
set_metadata("/system/vendor", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/vendor/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:gpsd_exec:s0");
set_metadata("/system/vendor/bin", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/bin/pvrsrvinit", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:pvrsrvinit_exec:s0");
set_metadata("/system/vendor/etc", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/firmware", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib/egl", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib/hw", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/xbin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/xbin/librank", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/xbin/procmem", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/xbin/procrank", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/xbin/su", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:su_exec:s0");
show_progress(0.200000, 0);
delete("/system/bin/otasigcheck.sh");
show_progress(0.200000, 10);
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");
set_metadata("/tmp/backuptool.sh", "uid", 0, "gid", 0, "mode", 0755);
set_metadata("/tmp/backuptool.functions", "uid", 0, "gid", 0, "mode", 0644);
run_program("/tmp/backuptool.sh", "restore");
delete("/system/bin/backuptool.sh");
delete("/system/bin/backuptool.functions");
show_progress(0.200000, 10);
package_extract_file("boot.img", "/tmp/boot.img");write_raw_image("/tmp/boot.img", "boot");
show_progress(0.100000, 0);
unmount("/system");

[*]MODIFY BOOT.IMG

Unpack boot.img

Copy the contents of lvm-bin/ in the git repository to lvm/ in the ramdisk folder.

2)Copy devices/crespo/lvm.conf to lvm/etc/lvm.conf in the ramdisk folder.

Intergrate the changes for the following files: fstab.herring, init.herring.rc, init.herring.usb.rc, default.prop

Repack

[*]UPDATE ROM .ZIP W/ NEW BOOT.IMG

Open the ROM .zip again and drag ‘n’ drop the kernel boot.img inside. It should replace the other one.

[*]MODIFY FRAMEWORK-RES.APK

Extract the .apk from the ROM .zip

Install the framework to apktool [apktool if ...]

Decode the framework-res.apk [apktool d ...]

Intergrate the changes

Build the .apk [apktool b ...]

Open simultaneously the created apk and the unmodified one. Drag ‘n’ drop the changed file from the created one to the unmodified. Save the unmodified file. Be careful to use the now-modified-previously-unmodified .apk from now on.

TIP: DO NOT use spaces in the apktool directories. Keep it simple to avoid errors.

[*]UPDATE ROM .ZIP W/ NEW FRAMEWORK-RES.APK

Open the ROM .zip again, drag ‘n’ drop the new framework-res.apk inside /system/framework, and save the file.

[*]INSTALLATION

Copy the modified ROM .zip inside the mounted USB storage. Install it using the recovery.

[*]BOOT

Let’s hope that everything went as planned and now you are rocking a Nexus S with a ~13GB combined internal storage! MTP should work, too.