Hi guys,
sorry because this has probably been answered somewhere but I couldn't find it ....
So here it goes: I just installed Modaco's ROM and it works perfectly. Now I would like my apps to install directly on the SD card.
What I understand is that I need to create a EXT3 partition but I don't know what the hell that means, nor how to do it.
I just put my SD card in the hero, didn't format anything ....
Dould you give a step by step guide ? On how to create that EXT3 partition, how to use A2SD afterwards ? Also, what to do with the currently installed applications ?
Thanks
Geeum
Dould you give a step by step guide ?
Click to expand...
Click to collapse
http://androidandme.com/2009/08/news/how-to-manually-partition-your-sd-card-for-android-apps2sd/
how to use A2SD afterwards?
Click to expand...
Click to collapse
Just use MoDaCo's custom ROMs. (It will do it automatically)
can app2sd work with official ROMs not rooted?
Hi guys I finally partitioned my sdcard to have an ext3 partition.
I thought A2SD was automatic but apparently applications don't go to the sdcard: my phone memory has changed after I installed an app ...
Here is what I get if I type the 'print' command on parted
Code:
(parted) print
print
print
Model: SD 00000 (sd/mmc)
Disk /dev/block/mmcblk0: 8166MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 7110MB 7110MB primary fat32 lba
2 7110MB 8134MB 1024MB primary ext3
3 8134MB 8166MB 32.3MB primary linux-swap(v1)
So I DO have ext3. Then I found this post that explains how to check if A2SD is working:
Thanks! Here is my way to check if a2sd is working:
Check if the ext3 partition exists (please see androidandme.com for details):
Code:
# mount | grep mmcblk0p2
mount | grep mmcblk0p2
/dev/block/mmcblk0p2 on /system/sd type ext3 (rw,noatime,nodiratime,errors=continue,data=ordered)
Compare available/used space on mmcblk0p2:
Code:
adb shell
# df
df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 98520 0 98520 0% /dev
tmpfs 4096 0 4096 0% /sqlite_stmt_journals
/dev/block/mtdblock3 174080 153460 20620 88% /system
/dev/block/mtdblock5 169728 27240 142488 16% /data
/dev/block/mtdblock4 133120 1160 131960 1% /cache
/dev/block/mmcblk0p2 468331 11767 431579 3% /system/sd
Now install an app from the market (as suggested by fleming222) and again run "df". Compare the available (or used) space on /dev/block/mmcblk0p2 with the first "df".
Click to expand...
Click to collapse
This is what I get (I can see on the first line that my ext3 is not listed ... weird)
Code:
/ # mount | grep mmcblk0p2
mount | grep mmcblk0p2
/ # df
df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 98508 0 98508 0% /dev
/dev/block/mtdblock4 133120 1496 131624 1% /cache
HELP !
By the way I'm running MODACO's 2.6 custom ROM ...
Geeum said:
By the way I'm running MODACO's 2.6 custom ROM ...
Click to expand...
Click to collapse
The best way to do it if your not too good with the adb commands is to install the AMON recovery image for Hero.
It has all the options to create the correct sd card partitions from the recovery mode, then just install your custom rom and everything should work.
You will need to format your sd card so you may want to create a backup of it. And I would suggest that you wipe the phone clean as well. Once you install the modaco rom it automatically moves all of your apps to the sd card.
The link for the recovery image is here:
http://forum.xda-developers.com/showthread.php?t=561124
You will also need Instant Root (http://neilandtheresa.co.uk/Android/), which you should install first, it is an .apk file so you will need a file manager for your phone. It should pop up with a notification "instant root was successfully" or along those lines. (If you have a problem installing Instant Root make sure Settings>Applications>Unknown Sources is checked)
You should then place the AMON recovery image onto the sdcard making sure it is not put into any folders (root).
Instant root then allows for root access with adb shell using the following 2 commands:
1) adb shell
then
2) su
the icon should change from a $ to #.
Now flash the recovery image with the following command:
flash_image recovery /sdcard/recovery-RA-HERO-v1.2.3.img
That should do it, remove the usb and battery and once you have replaced the battery boot into recovery mode.
I ran the following commands in this order from recvoery mode:
- Wipe data + cache (factory reset)
- Wipe ext partition on SD-card
- Wipe Dalvik-cache on SD-card (NOT on /data !) [email protected] ALWAYS WORK
- Partition SD-card : 500MB Ext2, 32MB Swap, remaining Fat32
- Convert ext2 to ext3
- Installed ROM
Hope this helps
Hi and thanks for your reply. I finally sorted my problem, I was typing the commands from the recovery console, and now my ext3 shows:
Code:
# mount | grep mmcblk0p2
mount | grep mmcblk0p2
/dev/block/mmcblk0p2 on /system/sd type ext3 (rw,noatime,nodiratime,errors=conti
nue,data=ordered)
I checked the space with df, and I can see it changing when installing apps.
However, so does the 'internal memory of the phone' in the settings panel; it keeps getting smaller as I install apps
Why is that ?
really want to do this but i find it all to hard and confusing
Geeum said:
I checked the space with df, and I can see it changing when installing apps.
However, so does the 'internal memory of the phone' in the settings panel; it keeps getting smaller as I install apps
Why is that ?
Click to expand...
Click to collapse
I think this is inevitable as the app uses some part of the phone memory for cache files etc (I am not 100% certain on this, just saw it written in an older post on the same topic).
I do not know if this is a coincidence but for some reason I have tried partitioning manually (the way your doing it) in the past and have recently used the AMON recovery image for partitioning instead. I notice that the recovery image tends to use less of the internal storage for each installed app, I don't know why but you could try it out yourself.
guys, i am using modaco's 2.6 rom. so if i just create partitions this custom rom will automatically install newly installed apps to the sd card. right?
but what if i already got many apps installed? will those be deleted while creating partitions?
is there any way so that i can backup the whole application folder and restore after creating partitions?
cheers
apparently if you do ext2 + swap + fat32, you can't do a Nandroid backup (it keeps giving errors). anyone got similar issues?
kazuni said:
apparently if you do ext2 + swap + fat32, you can't do a Nandroid backup (it keeps giving errors). anyone got similar issues?
Click to expand...
Click to collapse
is it so? if so then that wud be a disaster.
Hi!
I was experimenting with the data2ext script made for the Desire in following thread:
http://forum.xda-developers.com/showthread.php?t=859419
Now I managed to get it working with HTC Hero and Flykernel12a and Amon RA-s recovery v1.7.0.1 .
MAKING THIS WORKING IS A RISKY OPERATION! DO NOT START IF YOU DO NOT UNDERSTAND WHAT IS WRITTEN BELOW! I'M NOT RESPONSIBLE IF YOU DAMAGE YOUR PHONE OR YOU LOOSE YOUR DATA!
So here is what I made:
- make backup of your entire SD card, because we are going to repartition it, so all data will be lost on your SD card
- reboot to recovery and MAKE NANDROID BACKUP of your existing configuration!!! Then stay in recovery mode, and copy your NANDROID BACKUP to a safe place on your computer from the SD card!!!!! DURING THE OPERATION WE WILL ERASE THE WHOLE SD CARD!!!
- wipe your cache and dalvik-cache (only this 2, NO factory/data reset!!)
- connect to your phone with "adb shell" (while in recovery!!)
- in the shell execute following commands:
(do this only if you have active app2sd and your app/app-private/dalvik-cache directories are on the SD card EXT partition)
mount /data
rm -rf /data/app
rm - rf /data/app-private
rm - rf /data/dalvik-cache
mkdir /data/app
mkdir /data/app-private
mkdir /data/dalvik-cache
chmod 777 /data/app*
chmod 777 /data/dalvik-cache
chown 1000:1000 /data/app*
chown 1000:1000 /data/dalvik-cache
- now we will copy back the apps on the nand
mount /sd-ext
cp /sd-ext/app/* /data/app
cp /sd-ext/app-private/* /data/app-private
(no need to copy the dalvik-cache content!)
umount /sd-ext
- so now we have all our app on the nand again. next step is to put the 04data2extV4 script into the right place
umount /data
mount /system
exit
(now leaving shell to copy file)
in the command prompt execute:
adb push pathtothescript/04data2extV4 /system/etc/init.d/
adb shell
(back to shell again)
chmod 755 /system/etc/init.d/04data2extV4
chown 0:2000 /system/etc/init.d/04data2extV4
rm /system/etc/init.d/05mountsd
(remove script which mounts SD card differently)
rm /system/etc/init.d/10apps2sd
(remove script which makes app2sd)
umount /system
exit
(now leaving shell)
now we have to repartition your SD card to 2 ext and 1 fat partition. For this use the utility1 I uploaded which is modified version of the original utility in /sbin.
in command prompt:
adb push pathtoyourscript/utility1 /sbin/
adb shell
(back to shell)
chmod +x /sbin/utility1
(now execute the utility)
/sbin/utility1
choose 0 from menu: Partition SD 2 EXT 1 FAT (can set sizes)
enter the first EXT partition size (min. 3-400, I use 1300 - values are in MB)
enter second EXT partition size (min. 2-300, I use 300 - values are in MB)
the rest will be configured for the FAT32 file system
On the first EXT partition you will store the whole /data
On the second EXT partition you will store the /data/data in a loop file
Now we are hopefully ready to reboot, the rest will be managed by the 04data2extV4 script, wich creates the ext2 file systems, converts them to ext4, stets file system option such as journaling where needed, etc and copies everything from nand to ext4.
I hope this works for all. I reached Quadrant score for total system score about 455, without data2ext I had about 400. But I have a Class4 SD card. On class6 I'm sure it will be even faster.
Again, it is risky, so take care.
The boot process can be long, because at the first time it will copy the whole /data directory to the first EXT partition, the data/data directory on the 2nd partition, and will recreate the whole dalvik-cache (remember we wiped!).
Enjoy
Regards,
byr2
PS: in the RAR file you will find an FSTAB file. I removed the /sd-ext mount option from it. If you have trouble, try to replace the fstab file in /etc to this fstab file or remove the /sd-ext mount option from your fstab
Thank you for this.
Just a few questions. The EXT partitions, are they EXT 2, 3 or 4?
Are you using exactly the same script as ownhere? As in, you use exactly his method, aka the following one:
"I would like to share my Data2EXT script, a collection of data2sd(Thanks to sibere) and the advantages of ext4, you can let the phone run at peak efficiency.
I use EXT4 for whole SD 2nd partition, and create a ext2 loopback device with 1/5 size of 2nd partition.
The files in /data/app,/data/.systemapp it not updated frequently. so store them in EXT4.
In /data/data and /data/app-private, a lot of small files and sqlite database, is updated frequently. so store thenm in EXT2 loopback device.
/data/dalvik-cache is stored in phone memory /mnt/asec/mtddata for distributed IO pressure.
/data/misc, /data/system, /data/property is stored in phone memory /mnt/asec/mtddata for system settings restore(or you will lost your timezone/language settings after reboot).
use this script, I can get quandrant score:2000+, IO:4000+, my phone is smooth and quickly."
Are you running this stable? Reboots? All apps show after reboots?
Hi!
The two EXT partition is EXT4 partition. The script I provided is based on ownhere's script, wich is modified only in a few places.
For example on hero I do not have a /system/xbin/mkfs.ext4 like he had, but only a mkfs.ext2, so I have to create the EXT4 partition on a different way. Also the loopback device is set up in a different way than in the original script.
But what you quoted remains so, which means I did not modified any location of storage files, nor did modified filesystem parameters. First EXT4 ha no journaling ,second EXT4 has journaling, ext4 loop device has no journaling.
You can diff the two scripts to see the difference, but an example here:
Original part:
/system/xbin/mkfs.ext4 -b 4096 -m 0 -F -L userdata /dev/block/mmcblk0p2
/system/bin/tune2fs -o journal_data_writeback /dev/block/mmcblk0p2
/system/bin/e2fsck /dev/block/mmcblk0p2
/system/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p2
Modified part:
/system/xbin/mkfs.ext2 -b 4096 -m 0 -F -L extdata /dev/block/mmcblk0p2
/system/bin/e2fsck -y -v -f /dev/block/mmcblk0p2
/system/bin/tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p2
/system/bin/e2fsck -fpDC0 /dev/block/mmcblk0p2
/system/bin/tune2fs -o journal_data_writeback /dev/block/mmcblk0p2
/system/bin/e2fsck /dev/block/mmcblk0p2
/system/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p2
As you can see I create an ext2 partition, check it, and with tune2fs I convert it to EXT4, check it again, and set the same parameters ownhere has set.
for loopback device I use:
$BUSYBOX losetup /dev/block/loop1 /mnt/asec/extdata/ext4
$BUSYBOX mount -t ext4 -o loop,sync,commit=3,barrier=1,nouser_xattr,errors=continue,noatime,nodiratime,nosuid,nodev /dev/block/loop1 /mnt/asec/tmpdata
the losetup is needed, because for some reason it won't mount as loop. But this way it is working.
Other parts of the script are untouched.
Regards,
byr2
"Are you running this stable? Reboots? All apps show after reboots?"
Till now everything runs OK, no reboot, all widgets, apps, settings were preserved. After reboot also everything OK. Made some phone calls, no problems so far.
Just with Class4 SD card the speed gain is not as huge as expected. The IO performance is slightly better, but not too much. I've read posts on CDMA Hero forum, where they managed to get quadrant score over 700, but I'm sure not with a Class4 SD card
But the funniest thing in settings is: Available internal phone storage: 1,17Gb
Excuse me for the noob question, but what this process basically does is make the entire phone run off of an ext4 partition on the SD card?
No, not the entry phone, just the /data directory is moved to ext4 partition (wich is accessed frequently by the OS, and where applications and application related data are stored). The kernel, firmware, etc. remains on the NAND.
I wonder what one does when flashing a new ROM =/ You have to go through this procedure every single time? What does AmonRA do when you Wipe Data/Factory Reset?
So essentially the differentiations are due to the fact that we lack a /system/xbin/mkfs.ext4 (since we only have an ext2) and you turn the first EXT4 partition into a non journaling one to fill the lack of that, if i understand correctly.
If you flash a new rom, then all this is gone, since if will overwrite the /system/etc/init.d where our data2ext script is located. So you're right, you have to do this every time you flash a new ROM. A solution would be to pack this script into the ROMs, so it would work out of the box without this hack mentioned in the first post.
The data/factory reset wont work I think, because it deletes from the nand, but since our data/settings are not on the nand but the SD, it will have no effect.
the first ext4 partition is non journaling because ownhere write the script so. You can read in his post why he choosed to do so.
The first EXT pratition where /data is stored is a EXT4 part without journaling
The second EXT partition where the loop file is stored is an EXT4 part with journaling
and the LOOP file which contains an EXT4 partition without journaling
from ownhere's post:
"EDIT:2010/12/12 update V4 script:
/data/:ext4, disable journaling
/data/data:ext4 loopfile on ext4 device, enable journaling on ext4 device, disable journaling on ext4 loopfile, for fast and stable sqlite3 access.
really smooth this time. please trying..."
This is the setup here also.
byr2
I see, the script is essentially the same, with your own critical changes to fit the Hero.
Now what i am trying to understand is what happens when you want to flash a new ROM.
Say you place the 04data2extV4 script in the new ROM's /system/etc/init.d and remove the other two scripts if they exit (05mountsd and 10apps2sd). Does this mean the partitions and this whole process won't have to be repeated?
Also when installing a new rom it is recommended you wipe data and system, if AmonRA doesn't wipe, what do we do?
Well, I've not tested to install a new rom, but let think:
- the partitions are preserved on your SD, so repartitioning is not needed.
- but as you mention all data/settings are currently on your SD, so a wipe does nothing with it, and if you simply put the 04data2extV4 script back to init.d I think it will mess things just up... but if you just delete everything off the two EXT partitions I think it will be fine
That's the only limitation i have so far as to not attempting this.
I wonder if i can mod the AmonRA Recovery to delete the content of those 2 partitions instead =/
I'm going to have a look.
Nice work!
By the way, I was thinking. Why not just make an ext partition, add a line for it in fstab and set the mountpoint for it to be /data. What would happen if I tried this?
Byr2.... just wanted to say this is first thing i read today and without coffee all I heard was
Blah blah blah dangerous blah blah blah faster blah blah risk blah blah even faster
Lmao
Once I get my head working it should prove interesting though
Thanks for this experiment
Sent from my HTC Hero using Tapatalk
ok, sitting down at pc now, drinking espresso...
this is starting to sink in
Instant benefit is huge storage space which, coupled with the method used, ought to have a general performance improvement over previous ext-based apps2sd, right? if so then removing ext-based apps2sd and using this script concept instead seems like a good plan if, for example, every rom builder switched to this concept and removed old apps2sd stuff simultaneously. Does that sound right or wrong?
if you have a fast sd card then the speed benefit should be very good, better than using ext-based "apps2sd" since it's the actual data partition on the ext card.
and I too would like to know the answer to the brief question someone already asked - what about just setting a mount point to data on the sd card and doing it that way in simple linux fashion? I'm not bothering to think this through - coffee's still kicking in - I'll leave the intelligence to you folks who are already awake.
IMHO this idea of yours is quite brilliant as a goal (well ok, it's not your idea, but you did it first on the gsm hero . The thing that slows my phone the most is reads and writes to phone memory and to my stock sd card. I can upgrade the sd card but the phone memory writes are still slow. This would improve the speed of the largest file writes when managing my apps and installing from the market which we all know brings our phones to a standstill briefly during installs and so on.
How's the performance when installing apps? does your phone still crawl for a bit at those crucial moments or is it all somewhat less of a dramatic slowdown now?
Hi All!
Well, If you do not change the ROMs frequently, it should not be a problem that ROM developers do not include this script. However till now only one ROM developers have taken care about this opportunity, I think it was Cronos. They have a modified ROM wich supports this kind of functionality.
The speed gain over app2sd comes from storing the whole data partition on a faster SD card than the internal NAND. As my tests show a class4 SD card is slightly faster than the internal NAND (not much, say about 5-10%). A class6 SD card could be much more faster. All application access the data partition to read and write settings/data. Even the Frimware stores things there, so if you have a fast SD card, overall system performance could be great.
Not to mention about stored data space. With app2sd you only store the downloaded apk-s on the EXT. With data2ext you have extra space for the application data/settings/cache wich size is determined by you and your SD card size ! (See screenshot!)
A simple fstab modification could work, however the script does do a lot of things beside copying everything to EXT. It also sets up some symlinks during every boot, so a part of the script is needed always. Also there is 2 EXT partitions, and the /data/data is stored on a 2nd EXT partition in an EXT4 loop file image So it's not that easy to simply mount it via fstab.
byr2
dkelley said:
Byr2.... just wanted to say this is first thing i read today and without coffee all I heard was
Blah blah blah dangerous blah blah blah faster blah blah risk blah blah even faster
Lmao
Click to expand...
Click to collapse
Hahaha. I've read this several times now and still all I get is what you wrote above.
I got this after all
Code:
$mount
rootfs on / type rootfs (ro)
tmpfs on /dev type tmpfs (rw,mode=755)
devpts on /dev/pts type devpts (rw,mode=600)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
none on /acct type cgroup (rw,cpuacct)
tmpfs on /mnt/asec type tmpfs (rw,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,cpu)
/dev/block/mtdblock3 on /system type yaffs2 (ro)
/dev/block/mtdblock4 on /cache type yaffs2 (rw,nosuid,nodev,noatime)
/dev/block/mtdblock5 on /mnt/asec/mtddata type yaffs (rw,nosuid,nodev,relatime)
/dev/block/mmcblk0p2 on /data type ext4 (rw,nosuid,nodev,noatime,nodiratime,commit=19,barrier=0,nobh,data=writeback)
/dev/block/mmcblk0p3 on /mnt/asec/extdata type ext4 (rw,nosuid,nodev,noatime,nodiratime,barrier=1,data=ordered)
/dev/block/loop1 on /data/data type ext4 (rw,sync,nosuid,nodev,noatime,nodiratime,commit=3,barrier=1,data=writeback)
/dev/block/vold/179:1 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:1 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,size=0k,mode=000)
All correct?
This is mine:
Code:
rootfs on / type rootfs (ro,noatime)
tmpfs on /dev type tmpfs (rw,mode=755)
devpts on /dev/pts type devpts (rw,mode=600)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
none on /acct type cgroup (rw,cpuacct)
tmpfs on /mnt/asec type tmpfs (rw,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,cpu)
/dev/block/mtdblock3 on /system type yaffs2 (ro)
/dev/block/mtdblock4 on /cache type yaffs2 (rw,nosuid,nodev,noatime)
/dev/block/mtdblock5 on /mnt/asec/mtddata type yaffs (rw,nosuid,nodev,relatime)
/dev/block/mmcblk0p2 on /data type ext4 (rw,nosuid,nodev,noatime,nodiratime,commit=19,barrier=0,nobh,data=writeback)
/dev/block/mmcblk0p3 on /mnt/asec/extdata type ext4 (rw,nosuid,nodev,noatime,nodiratime,barrier=1,data=ordered)
/dev/block/loop1 on /data/data type ext4 (rw,sync,nosuid,nodev,noatime,nodiratime,commit=3,barrier=1,data=writeback)
/dev/block/vold/179:1 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0
020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:1 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_ut
ime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,size=0k,mode=000)
/dev/block/dm-0 on /mnt/asec/com.qualcomm.qx.neocore-1 type vfat (ro,dirsync,nosuid,nodev,noexec,uid=1000,fmask=0222,dmask=0222,code
page=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
Seems your's almost the same...
The key is this:
Code:
/dev/block/mmcblk0p2 on /data type ext4 (rw,nosuid,nodev,noatime,nodiratime,commit=19,barrier=0,nobh,data=writeback)
/dev/block/mmcblk0p3 on /mnt/asec/extdata type ext4 (rw,nosuid,nodev,noatime,nodiratime,barrier=1,data=ordered)
/dev/block/loop1 on /data/data type ext4 (rw,sync,nosuid,nodev,noatime,nodiratime,commit=3,barrier=1,data=writeback)
How is your phone performing? Was everything OK?
byr2
Everything seems to be ok )
There is no more sticking when new apk installed. Quadrant score around 500.
I have Class 10 sd card (prooflink).
But I have had a little problem - not enough nand space to hold all of my apks, so I've decided to push most of them via adb from my laptop after Hero's reboot.
Quadrant score not so high as I expected, but anyway I'm happy =)
if you push it via ADB after reboot, than it should get to the right place
The quadrant score is affected by 3D and CPU also, but can you feel the "speed" while testing the IO? Does it run fast? How long is the DB read/write, FS read/write?
I'm happy someone else could get this thing working
byr2
Tested Roms (will not test SD-SWAP on most)
These are some roms I've tried the enabler on, since I don't use a swap partition on my SD card I don't bother testing it and usually don't advise using SD-Swap. It's only in the enabler for sake of completeness. All sd-ext tests are done as ext4 unless otherwise specified.
Andromadus Slim Bean Build 6 (JB 4.2.2)
DataSwap - OK
SD-EXT - OK
SD-Swap - Untested
Andromadus Mimicry 1.3+ (CM9 ICS)
DataSwap - OK
SD-EXT - OK
SD-SWAP - Not Tested
Andromadus Test builds - Jelly Bean(CM10) - Build #61+
DataSwap - OK
SD-EXT - OK
SD-SWAP - Not Tested
Virtuous Infinity 1.31.0 Alpha3 (Full Sense 4.0)
DataSwap - ISSUES*
SD-EXT - OK
SD-SWAP - Not Tested
*The init script in /system/init.d/80dataswap didn't automatically execute upon boot. However when running it manually it worked fine. (might be fixed in 1.3, have not tested yet).
ILWT CM7 (Build 471) with ILWT CM7 Kernel
DataSwap - OK
SD-EXT (as ext4) - Not Working *
SD-EXT (as ext3) - OK
SD-SWAP - Not Tested
* When /sd-ext formated as ext4 was not working, I used 4EXT recovery to format it to ext3 under tools -> wipe/format => ext3, rebooted and it worked.
Gen.Y VisionX B4
DataSwap - FIXED*
SD-EXT - OK
SD-SWAP - Not Tested
*Fixed in 1.3 to include the busybox prefix, 1.4 to include shebang (#!) string.
UPDATED Aug 19th 2012
v1.4 Changes from 1.3
Added shebang (#!) string to dataswap scripts
Changed init script permissions from 750 to 755
v1.3 Changes from 1.2
Updated dataswap script to use busybox prefix for swapon/mkswap
Updated SD-Swap to use busybox prefix
v1.2 Changes from 1.1
Added addon.d support for supporting Roms
v1.1 Changes from 1.0
Fixed a bug where 96MB option installed 64MB
Added 128MB DataSwap Option
Added ability to enable SD-Swap (choose w/ Sd-Ext if SD-Ext partition exists, without w/o)
Changes from previous version (1.0):
Migrated to Aroma 2.50 Installer
Removed SD-Swap activation from SD-Ext Enabler Script
SD-Ext Init Script made smaller (Specific to HTC Vision/G2/Desire-Z now)
Now with the Aroma installer allowing for an easier selection of mods to be applied.
DataSwap Enabler
64MB DataSwap (Recommended for some Roms)
96MB Option (heavier multitasking)
Skip/Off (do nothing, skip to next mod)
Remove (removes the swap file and swap script)
SD-Ext Enabler
Enabled (detects and migrates /data/app and /data/app-private to /sd-ext)
Skip/Off (Do nothing, leaves as-is)
Revert (Moves all apps from sd-ext back to /data and removes script)
SD-Swap Enabler
Enabled w/ SD-Ext - does not enable Sd-EXT, simply enables SD-Swap correctly if SD-Ext partition also exists
Enabled w/o SD-Ext - enables SD-Swap when no SD-Ext partition exists on the SD card
Skip/Ignore - Does nothing/skips
Remove - Removes the SD-Swap enabling script
Do not enable SD-Swap if your Rom Already supports SD-Swap out of the box (elitemod, etc), so double check first.
If you don't have an SD-Ext partition, then Swap partition will be the 2nd partition on the SD Card, otherwise it's the 3rd. Thus why the installer makes the distinction for with and without SD-Ext when it comes to SD-Swap options.
Regarding addon.d support
In roms that support /system/addon.d, during an upgrade (flashing a new rom) shell scripts in /system/addon.d would be utilized by the backuptool allowing the ability to upgrade the rom without having to re-flash the extra roms.
For example in my /system/addon.d/ folder there will be a 60-kbeezie.sh script when flashing version 1.2. If you were to upgrade your rom (for example Mimicry 1.3.2 to 1.3.3), the dataswap, sd-ext, sd-swap init scripts will be backed up, and then restored after the new rom has been upgraded (the same way google apps is preserved in the 1.3.3 upgrade, so no need to re-flash google apps).
So on any roms that support addon.d, you'll be able to upgrade your rom to the next version without having to reflash the dataswap/sd-ext enabler.
What is DataSwap
Dramatically improves multitasking. (Can be used with or without SuperChargerV6).
In layman's terms it's a swapfile placed in the /data partition, where it should be faster than using a swap partition on the SD card. Unlike SDSwap repartitioning is not needed. Every reboot removes and re-adds the file so that the file isn't working on one specific part of the emmc chip all the time (one of the downsides to SD Swap).
More information can be found on the original DataSwap post by Nik3r
http://forum.xda-developers.com/showpost.php?p=27608489&postcount=153
What is SD-EXT
The /sd-ext mount is a partition on the SD card formatted as ext4 allowing you more app storage space. Unlike other means of running apps off an /sd-ext partition, this mod/script only maps /data/app and /data/app-private to the /sd-ext leaving caching and other features on the internal memory where it is most efficient.
Because SD-EXT in this case is replacing your /data/app and /data/app-private you want to ideally make it bigger than your /data partition (no less than 1.5GB, 2GB is a good fit). However bear in mind that if you wish to revert back to using only internal storage, you'll want to make sure that your /data partition has enough room for the applications to be moved back.
Why Both Together?
When all the user apps are placed on /sd-ext you are typically freed of roughly 600-700MB of storage on your /data partition. Doing so gives the swap file more room to move about the /data partition, but also splits the I/O (input/output traffic) between your SD card for apps, and internal memory for swap/cache, which may improve the overall experience (and may also prolong the life of your device... in theory).
Also You are not as likely to run the risk of /data suddenly running out of memory because a 64MB swap file is created on top of your app space. (i.e.: say you only have 70MB free in /data from all your apps, and you reboot to apply DataSwap but not SD-EXT, your /data would become dangerously close to being full when the swapfile is created). Hence DataSwap should be used in conjunction with SD-Ext.
Tips
If you currently use EliteMod ICS, you should be able to use this zip to revert a SD-Ext installation back to internal memory. Just make sure you re-partition the SD card after reverting so that EliteMod's init script doesn't automatically move the applications back to sd-ext upon the next reboot.
The effect of DataSwap will greatly depend on how your rom handles memory. For example on Mimicry with SuperChargerV6 option selected, the DataSwap will rarely be used, but it is handy for rapid burst of memory when apps need it. Without SuperChargerV6 the dataswap does get used a bit more often with more apps active in memory, but the extent of it varies on your rom's configuration.
If you're considering reverting SD-EXT apps back to the internal memory the following command will show you partition usage (can be run in either terminal emulator, or adb shell):
Code:
busybox df -hm
With an output similar to this:
Code:
Filesystem Size Used Available Use% Mounted on
tmpfs 183.6M 60.0K 183.5M 0% /dev
tmpfs 183.6M 0 183.6M 0% /mnt/asec
tmpfs 183.6M 0 183.6M 0% /mnt/obb
/dev/block/mmcblk0p25
549.2M 236.1M 313.1M 43% /system
/dev/block/mmcblk0p26
1.0G 239.8M 834.1M 22% /data
/dev/block/mmcblk0p27
295.3M 25.5M 269.7M 9% /cache
/dev/block/mmcblk0p28
20.6M 14.7M 5.9M 71% /devlog
/dev/block/mmcblk1p2 2.0G 374.4M 1.6G 19% /sd-ext
/dev/block/mmcblk1p2 2.0G 374.4M 1.6G 19% /data/app
/dev/block/mmcblk1p2 2.0G 374.4M 1.6G 19% /data/app-private
Note how above /data has 834MB available, and /sd-ext is using 374MB, meaning /data will have enough room for the apps if you wish to revert.
DISCLAIMER
There is no guarantee this will work with all Roms, I've only tested it on a small handful of ICS roms (mimicry 1.3.1, EliteMod ICS). It is known to be skittish/non-working with most GB roms.
Do not ask if this would work on JellyBean, there's quite a bit of work that still needs to be done with JellyBean, and trying this on an alpha/preview JB rom will not likely work, plus I won't provide any support for someone complaining that it doesn't work on JellyBean as I'm not using JB right now.
Credits and Thanks
Thanks to Nik3r who originally wrote both scripts for his own EliteMod ICS Rom which provides both of these features natively to the rom (DataSwap is a seperate zip, but the rom itself already has SD-Ext/Swap support built in).
Thanks to blk_jack for providing support and information regarding the Aroma installer and assistance in testing swap on mimicry.
Checking if it worked
Typing free in either Terminal Emulator or adb shell, should show the approximate dataswap size on the swap line:
Code:
total used free shared buffers
Mem: 375916 372156 3760 0 4352
-/+ buffers: 367804 8112
Swap: 65532 17132 48400
For checking to see if SD-EXT is active, you can use the following command in terminal emulator or adb shell
Code:
adb shell busybox df -hm
Code:
Filesystem Size Used Available Use% Mounted on
tmpfs 183.6M 60.0K 183.5M 0% /dev
tmpfs 183.6M 0 183.6M 0% /mnt/asec
tmpfs 183.6M 0 183.6M 0% /mnt/obb
/dev/block/mmcblk0p25
549.2M 235.9M 313.3M 43% /system
/dev/block/mmcblk0p26
1.0G 287.8M 786.1M 27% /data
/dev/block/mmcblk0p27
295.3M 73.9M 221.3M 25% /cache
/dev/block/mmcblk0p28
20.6M 8.8M 11.8M 43% /devlog
/dev/block/mmcblk1p2 2.0G 362.5M 1.6G 18% /sd-ext
/dev/block/mmcblk1p2 2.0G 362.5M 1.6G 18% /data/app
/dev/block/mmcblk1p2 2.0G 362.5M 1.6G 18% /data/app-private
/dev/block/vold/179:65
12.8G 7.8G 5.1G 61% /mnt/sdcard
/dev/block/vold/179:65
12.8G 7.8G 5.1G 61% /mnt/secure/asec
You'll see that /sd-ext /data/app /data/app-private are identical in their capacity, usage and free space.
AGAIN there is no garantee it will work in every rom, if you do find success with it, post what rom and version you are using.
ALWAYS PERFORM A NANDROID BACKUP BEFORE APPLYING MODS JUST IN CASE
MD5 Checksum for kbeezie_dsext_enablerv1.4.zip: b0d00d89f265c57ba2aee0d7dc5ead24
you've moved really fast i can't keep up
great job.
any support for GB? did anyone try that on GB? or is it impossible?
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
you've moved really fast i can't keep up
great job.
any support for GB? did anyone try that on GB? or is it impossible?
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Click to expand...
Click to collapse
I supposed its possible both features are just init.d scripts. But I don't know enough about the shell scripting differences between GB and ICS to know whether or not there will be conflicts. In theory you could take the sdparts init from elitmod cm7 and replace it in the zip (or I can when I get home)
The data swap one is very simple and may work without a problem, I'm more concerned about the sdext part.
Sent from my T-Mobile G2
kbeezie said:
I supposed its possible both features are just init.d scripts. But I don't know enough about the shell scripting differences between GB and ICS to know whether or not there will be conflicts. In theory you could take the sdparts init from elitmod cm7 and replace it in the zip (or I can when I get home)
The data swap one is very simple and may work without a problem, I'm more concerned about the sdext part.
Sent from my T-Mobile G2
Click to expand...
Click to collapse
it's currently 2:07am here so you'll do it when you get home
at first try the data swap (since you have high hopes, and since i'm more interested in it), then try the sdext...
data swap can be used without sdext, but as you mentioned, using both allows the data swap file to have more physical space to move around on every reboot...
but if everything woked out, i'll be using the data swap without sdext... cuz i really don't have sd space (i dunno why)
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
it's currently 2:07am here so you'll do it when you get home
at first try the data swap (since you have high hopes, and since i'm more interested in it), then try the sdext...
data swap can be used without sdext, but as you mentioned, using both allows the data swap file to have more physical space to move around on every reboot...
but if everything woked out, i'll be using the data swap without sdext... cuz i really don't have sd space (i dunno why)
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Click to expand...
Click to collapse
Yea I mean if you flash the zip and don't have an sd-ext partition, nothing should happen, since it'll only activate if it see's an sd-ext partition.
And to see what I mean about the dataswap init script, this is all it is:
Code:
# Enables swap on data partition
# file is /data/local/swap
# POI: this can be used along with sdcard swap partition
# the load will be automatically evenly divided between the two locations
mv /data/local/swap /data/local/swap.old
busybox dd if=/dev/zero of=/data/local/swap bs=1M count=64
chmod 0600 /data/local/swap
mkswap /data/local/swap
swapon /data/local/swap
rm -f /data/local/swap.old
All it does is move the swap file to old (which course only does it if it exists), create a file of 64MB, make it a swap file, and turn it on. Rinse and repeat every time you boot up the phone.
I doubt those commands changed much from GB to ICS. The 04sdcardparts file on the other hand is around 240 lines. I'll unpack the one from EliteMod CM7 and run a diff on them to see if they're any different (if not, its because he simply migrated his latest work from ICS that he's currently on, to CM7 to fix the bug, which I think you were the one to report initially).
But yea as long as you understand the caveats of using DataSwap without an sd-ext I don't think it would be a major problem (just probably wouldn't perform as well in my opinion since you're accessing the same device for both swap and standard apps).
kbeezie said:
Yea I mean if you flash the zip and don't have an sd-ext partition, nothing should happen, since it'll only activate if it see's an sd-ext partition.
And to see what I mean about the dataswap init script, this is all it is:
Code:
# Enables swap on data partition
# file is /data/local/swap
# POI: this can be used along with sdcard swap partition
# the load will be automatically evenly divided between the two locations
mv /data/local/swap /data/local/swap.old
busybox dd if=/dev/zero of=/data/local/swap bs=1M count=64
chmod 0600 /data/local/swap
mkswap /data/local/swap
swapon /data/local/swap
rm -f /data/local/swap.old
All it does is move the swap file to old (which course only does it if it exists), create a file of 64MB, make it a swap file, and turn it on. Rinse and repeat every time you boot up the phone.
I doubt those commands changed much from GB to ICS. The 04sdcardparts file on the other hand is around 240 lines. I'll unpack the one from EliteMod CM7 and run a diff on them to see if they're any different (if not, its because he simply migrated his latest work from ICS that he's currently on, to CM7 to fix the bug, which I think you were the one to report initially).
But yea as long as you understand the caveats of using DataSwap without an sd-ext I don't think it would be a major problem (just probably wouldn't perform as well in my opinion since you're accessing the same device for both swap and standard apps).
Click to expand...
Click to collapse
well, i have sdswap that is on too so this might increase multitasking and swap speed a little more...
the data swap commands, is this it? all of it? cuz i can just copy past them into a .sh file and execute the script at boot... is it legit if i do that?
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
well, i have sdswap that is on too so this might increase multitasking and swap speed a little more...
the data swap commands, is this it? all of it? cuz i can just copy past them into a .sh file and execute the script at boot... is it legit if i do that?
Click to expand...
Click to collapse
Yea that's all of it, the zip basically installs it by doing:
Code:
...
package_extract_file("system/etc/init.d/80dataswap", "/system/etc/init.d/80dataswap");
package_extract_file("system/etc/init.d/04sdcardparts", "/system/etc/init.d/04sdcardparts");
ui_print("Modifying permissions...");
set_perm(0, 0, 0775, "/system/etc/init.d/80dataswap");
set_perm(0, 0, 0775, "/system/etc/init.d/04sdcardparts");
unmount("/system");
...
So technically if you want to do it manually all you have to do is save that as 80dataswap in /system/etc/init.d and make sure to set chmod 0775 on it, and reboot.
I just took a look at the one on EliteMod CM7, it's different and a heck of a lot smaller. It's a file called 10apps2sd and only 39 lines. I'm almost wondering though if other aspects of the /sd-ext partition are in other init scripts (i.e.: initialized variables and such set before reaching that level of the init).
Also the EliteMod CM7 thread doesn't seem to make any mentions of DataSwap, was probably only created for his ICS rom (though the script seems like it'd work on just about any rom supporting those commands and had enough free space to work with).
In fact because nothing has changed dataswap wise from his own dataswap zip you could just grab it from his thread whichever size you want and flash it. It'd be identical to this bundled one without the sd-ext.
well init.d commands are supported for all Vision ROMs, and i'm sure they are supported on CM builds. so now the problem only lies on auto-sdext for GB.
EDIT: ok, before i reboot:
i have a 128MB sd swap already active... how do i know that the 64MB data swap is active too?
you knew that by noticing the 64MB in "free"command ... but i already have a 128MB swap in "free" command
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
well init.d commands are supported for all Vision ROMs, and i'm sure they are supported on CM builds. so now the problem only lies on auto-sdext for GB
Click to expand...
Click to collapse
Got a suggestion for a good GB-based rom you were thinking of?
kbeezie said:
Got a suggestion for a good GB-based rom you were thinking of?
Click to expand...
Click to collapse
lol, tsubus in his ILWT thread was talking about it 2 days ago... if it works, i might switch back to his ROM
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
lol, tsubus in his ILWT thread was talking about it 2 days ago... if it works, i might switch back to his ROM
Click to expand...
Click to collapse
Well later tonight (i.e.: after the hours someone might likely call/text), I'll give ILWT a try. Will install it clean, install some apps, then apply the mod, then install some more apps so that I know 1) already installed apps get moved, and 2) it continues to work even if you reboot.
kbeezie said:
Well later tonight (i.e.: after the hours someone might likely call/text), I'll give ILWT a try. Will install it clean, install some apps, then apply the mod, then install some more apps so that I know 1) already installed apps get moved, and 2) it continues to work even if you reboot.
Click to expand...
Click to collapse
i've configured the dataswap script... i'll reboot and report now
EDIT: ready for the big news? IT WORKS!
before the reboot, i had about 128MB sdswap on, and 166MB free in the /data partition.
afterr reboot, i now have 197MB swap (which is 128MB + 64MB... + the extra numbers ) and 95MB free in /data...
now with the deletion of some bloat apps (i have about 210 apps) i might get over 100MB free in /data, that way the file could have some space to physically move...
i'll throw my 5 thanks of the day to you now
EDIT: whoa! now with that much extra RAM, i think i should bump up my VM heap size.
EDIT: something weirrd just happened:
while i uninstalled 2 apps (100 floors and its official cheats) i went to check /data's free memory and it showed me 163MB, that's only 3MB "eaten" by the dataswap. so i went to terminal and saw that the total is still 197MB... is it because the file has a "dynamic" size? (meaning it gets larger when it needs to) or is it a constant size... and if it has a constant (64MB) size, what just happened with my /data partition?
———————————————————
i didn't mean to mock you or to offend you in any kind of way
The dataswap file would be a prefixed size, i.e.: if it was created as 64MB it stays as 64MB, what it consumes internally may vary, but its always eating least 64MB of the /data partition.
You could always run something like du -hs /data/*
to see what is using what space.
In other news the swap seems to be maxing out on mimicry (but I wonder if it's because a 1.3GB app is being installed from the play store and is using all the ram and then some), on elitemod it normally wouldn't get higher than 40mb or so.
ok, i confirmed this, no need to test it yourself... it practically works on ILWT as there is not much difference between EMCM7 and ILWTCM7...so you might wanna change OP and put that data swap works on GB... although never tested on sense or MIUI.
i can see it's using it a little bit... i mean i opened root explorer, play store, settings, then tapatalk. and when going back to root explorer it restarted... it didn't keep root explorer cached... is there a way to increase swap caching? i mean if i were android i would start caching in swap until i at least use 75% of it
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Riro Zizo said:
ok, i confirmed this, no need to test it yourself... it practically works on ILWT as there is not much difference between EMCM7 and ILWTCM7...so you might wanna change OP and put that data swap works on GB... although never tested on sense or MIUI.
i can see it's using it a little bit... i mean i opened root explorer, play store, settings, then tapatalk. and when going back to root explorer it restarted... it didn't keep root explorer cached... is there a way to increase swap caching? i mean if i were android i would start caching in swap until i at least use 75% of it
———————————————————
i didn't mean to mock you or to offend you in any kind of way
Click to expand...
Click to collapse
I think it's going to vary by the app, the swap is only used when memory is being run out of which is the way you want it to work. Swap shouldn't be used as caching per-se, just mainly as a ceiling for when ram is being used up.
I noticed that when using SuperChargerV6 the swap usage is almost nil, but course SuperCharger may prevent apps from multitasking as much.
I think it's a good idea to use the init.d scripts from the CM9 compatible kernel if you didn't. It basically just removes the support for async init.d ordering but should work everywhere even on AOKP. I had to make sure the scripts run in an order for the ROM installation but alone they don't need the syncing code and it reportedly freezes on CM9.
(EDIT, nevermind, it doesn't really matter since this script is the first of the sequence. Still the extra lines are unnecessary)
Also an "OFF" package may be a good idea
The swap usage is due to the tweaks in elitemod_kernel.sh, when the swap gets full it will slow the phone down to a crawl. That's why supercharger causes problems with swap, it overrides something in there.
nik3r said:
Also an "OFF" package may be a good idea
Click to expand...
Click to collapse
I'd imagine off for dataswap would simply be your original OFF mod zip, since int wouldn't do anything differently. What would be interesting would be an "off" for sd-ext, which I guess would just be a edify script to move /sd-ext/app and /sd-ext/app-private back to /data and then the removal of the init script.
But yea not all roms are designed to be used with swap storage, those that don't normally have a means of using swap on their own may behave differently when that's introduced into the mix, where as your rom actually has been tweaked with the possibility of using swap in mind.
I still get the best battery life and smoothest swap transfer with EliteMod though. (on mimify for example ,the CPU steps are not as frequent, and is a minimum of 245mhz, with no vdd_levels exposed for undervolting).
Well I wonder if it can be done entirely in recovery. I suppose it's as simple as mounting /data and /sd-ext and copying the data, then wiping /sd-ext. All in one neat flashable package. I guess 4EXT is pretty smart about mount points so it may be as simple as
Code:
run_program("/sbin/busybox", "mount", "/sd-ext");
and maybe not
nik3r said:
Well I wonder if it can be done entirely in recovery. I suppose it's as simple as mounting /data and /sd-ext and copying the data, then wiping /sd-ext. All in one neat flashable package. I guess 4EXT is pretty smart about mount points so it may be as simple as
Code:
run_program("/sbin/busybox", "mount", "/sd-ext");
and maybe not
Click to expand...
Click to collapse
I would think so too, but course I'd be more concerned about checking to see if /data will be able to contain the apps stored in /sd-ext if someone went past the 1GB size. But ya I was thinking bout it being done completely in recovery, and just removing the init script from /system after the move and wipe has been done to sd-ext.
Could probably even run_program () a small shell script copied to /tmp.
Well even if it was impossible to check free space and filesizes directly from recovery you can still invoke shell scripts and use busybox. Something like
Code:
run_program("/sbin/su", "/tmp/script.sh");
Even do the move from there. And then share the flashable zip
I admit you are most likely better at shell than I am, I don't use desktop linux outside VM.