From e3936f5145a98419eb2861f07c1476bdfa2fae6f Mon Sep 17 00:00:00 2001 From: jt1134 Date: Sat, 22 Sep 2012 23:15:39 -0500 Subject: use logical volumes for system and data, bring back datadata * use lvm to split eMMC into 2 logical partitions * use entire available space on OneNAND for /datadata based on information from: http://bit.ly/OMny8Z WARNING: WILL WIPE DATA Change-Id: I3caeec096a6798afafaf03b2eb72c20580272682 --- updater.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 10 deletions(-) (limited to 'updater.sh') diff --git a/updater.sh b/updater.sh index 5baad86..07f835c 100755 --- a/updater.sh +++ b/updater.sh @@ -21,6 +21,17 @@ set_log() { exec >> $1 2>&1 } +# ui_print by Chainfire +OUTFD=$(/tmp/busybox ps | /tmp/busybox grep -v "grep" | /tmp/busybox grep -o -E "update_binary(.*)" | /tmp/busybox cut -d " " -f 3); +ui_print() { + if [ $OUTFD != "" ]; then + echo "ui_print ${1} " 1>&$OUTFD; + echo "ui_print " 1>&$OUTFD; + else + echo "${1}"; + fi; +} + set -x export PATH=/:/sbin:/system/xbin:/system/bin:/tmp:$PATH @@ -29,14 +40,14 @@ if /tmp/busybox test "$1" = cdma ; then # CDMA mode IS_GSM='/tmp/busybox false' SD_PART='/dev/block/mmcblk1p1' - DATA_PART='/dev/block/mmcblk0p1' - DATA_SIZE='490733568' + MMC_PART='/dev/block/mmcblk0p1 /dev/block/mmcblk0p2' + MTD_SIZE='490733568' else # GSM mode IS_GSM='/tmp/busybox true' SD_PART='/dev/block/mmcblk0p1' - DATA_PART='/dev/block/mmcblk0p2' - DATA_SIZE='442499072' + MMC_PART='/dev/block/mmcblk0p2' + MTD_SIZE='442499072' fi # check for old/non-cwm recovery. @@ -88,7 +99,8 @@ if /tmp/busybox test -e /dev/block/bml7 ; then /sbin/reboot now exit 0 -elif /tmp/busybox test `/tmp/busybox cat /sys/class/mtd/mtd2/size` != "$DATA_SIZE" ; then +elif /tmp/busybox test `/tmp/busybox cat /sys/class/mtd/mtd2/size` != "$MTD_SIZE" || \ + /tmp/busybox test `/tmp/busybox cat /sys/class/mtd/mtd2/name` != "datadata" ; then # we're running on a mtd (old) device # make sure sdcard is mounted @@ -97,6 +109,19 @@ elif /tmp/busybox test `/tmp/busybox cat /sys/class/mtd/mtd2/size` != "$DATA_SIZ # everything is logged into /sdcard/cyanogenmod_mtd_old.log set_log /sdcard/cyanogenmod_mtd_old.log + if ! /tmp/busybox test -e /.accept_wipe ; then + /tmp/busybox touch /.accept_wipe + ui_print + ui_print "============================================" + ui_print "This ROM uses an incompatible partition layout" + ui_print "Your /data will be wiped upon installation" + ui_print "Run this update.zip again to confirm install" + ui_print "============================================" + ui_print + exit 9 + fi + /tmp/busybox rm /.accept_wipe + # write the package path to sdcard cyanogenmod.cfg if /tmp/busybox test -n "$UPDATE_PACKAGE" ; then /tmp/busybox echo "$UPDATE_PACKAGE" > /sdcard/cyanogenmod.cfg @@ -183,13 +208,22 @@ elif /tmp/busybox test -e /dev/block/mtdblock0 ; then # remove the cyanogenmod.cfg to prevent this from looping /tmp/busybox rm -f /sdcard/cyanogenmod.cfg - # unmount and format system (recovery seems to expect system to be unmounted) + # unmount system and data (recovery seems to expect system to be unmounted) /tmp/busybox umount -l /system - /tmp/make_ext4fs -b 4096 -g 32768 -i 8192 -I 256 -a /system $DATA_PART - - # unmount and format data /tmp/busybox umount -l /data - /tmp/erase_image userdata + + # setup lvm volumes + /lvm/sbin/lvm pvcreate $MMC_PART + /lvm/sbin/lvm vgcreate lvpool $MMC_PART + /lvm/sbin/lvm lvcreate -L 400M -n system lvpool + /lvm/sbin/lvm lvcreate -l 100%FREE -n userdata lvpool + + # format data (/system will be formatted by updater-script) + /tmp/make_ext4fs -b 4096 -g 32768 -i 8192 -I 256 -l -16384 -a /data /dev/lvpool/userdata + + # unmount and format datadata + /tmp/busybox umount -l /datadata + /tmp/erase_image datadata # restart into recovery so the user can install further packages before booting /tmp/busybox touch /cache/.startrecovery -- cgit v1.1