Use internal sdcard as dalvik-cache - Samsung Galaxy Mini

As I cannot use the internal sdcard with CM11, I've made a small script which mounts the internal sdcard as /data/dalik-cache to get more free space for apps & app-data.
WARNING: Only for users who are familiar with adb as you can probably brick your device!
Installation is a bit tricky, maybe someone makes an installer. All steps are done over adb
First format the internal sdcard with ext4: mke2fs -t ext4 /dev/block/mmcblk0p23
Copy script below to /data/local/userinit.sh (e.g. adb push userinit.sh /data/local/userinit.sh)
chmod 755 /data/local/userinit.sh
Reboot and let dalvik cache recreate. After this happend, reboot into recovery, wipe dalvik-cache and enjoy the 200MB more free space in data for apps.
Code:
#!/system/bin/sh
busybox mount -t ext4 -o noatime,nodiratime,nosuid,nodev /dev/block/mmcblk0p23 /data/dalvik-cache;
mountext=`busybox mount | egrep 'ext2|ext3|ext4'`;
if [ -n "$mountext" ];
then
busybox chown 1000:1000 /data/dalvik-cache;
busybox chmod 771 /data/dalvik-cache;
fi;
sync;

Awesome... I just needed it for assigning block on dalvik in my beta app. Works great!

Related

Dalvik-cache in /cache

I've seen in some ROMs for other phones (like Cyanogen and Enomther's ROMs) that they implement a hack that moves the dalvik-cache into the /cache partition, thus freeing up a lot of space in /data (and virtually eliminating the need for a2sd). I'm wondering if anyone has thought of or knows how to do that? I think it'd be a great addition to any ROM.
adb shell
busybox cp -a /data/dalvik-cache /cache/delvik
reboot recovery
adb shell
mount cache
rm -rf /data/dalvik-cache
ln -s /cache/dalvik/dalvik-cache /data/dalvik-cache
should work
Dont know about after reboot though.
Me personally I just moved it all to the sd ext2.
Dalvik and system apps also.
smstutler said:
adb shell
busybox cp -a /data/dalvik-cache /cache/delvik
reboot recovery
adb shell
mount cache
rm -rf /data/dalvik-cache
ln -s /cache/dalvik/dalvik-cache /data/dalvik-cache
should work
Dont know about after reboot though.
Me personally I just moved it all to the sd ext2.
Dalvik and system apps also.
Click to expand...
Click to collapse
Cool! Now to make that survive a reboot, it would have to be written into the boot.img, or in a script that is called in the boot.img correct?
That I dont know. I was wondering how to utilize all the free space I have better. Just a heads up though dalvik on my system is 60megs.
smstutler said:
That I dont know. I was wondering how to utilize all the free space I have better. Just a heads up though dalvik on my system is 60megs.
Click to expand...
Click to collapse
Exactly why moving it to cache would be ideal, as far as my limited knowledge of this understands. That frees up about 60mb of space in /data.
smstutler said:
I was wondering how to utilize all the free space I have better.
Click to expand...
Click to collapse
Honestly, the best use for the internal memory would be to leave the dalvik cache on it. It consists of files that have already been preprocessed by the VM specifically with the intention of improving performance. Moving that from the internal memory to the slower sd card.... It ain't gonna help....
If your trying to tweak performance, you're much better off looking for other things you can move to create more space for the cache....
Isn't /cache just a separate partition in the internal memory?
mrinehart93 said:
Isn't /cache just a separate partition in the internal memory?
Click to expand...
Click to collapse
I assumed he had symlinked it over to the sd card. Generally the only benefit to be gained by moving files around is by putting things on the (slow) sd card to free up the (faster) internal memory.
If that's not what we're talking about, then the end result would be exactly nill...
subliminalurge said:
I assumed he had symlinked it over to the sd card. Generally the only benefit to be gained by moving files around is by putting things on the (slow) sd card to free up the (faster) internal memory.
If that's not what we're talking about, then the end result would be exactly nill...
Click to expand...
Click to collapse
Actually I have seen no performance hit as I can tell by running it internally or on sd card.
smstutler said:
Actually I have seen no performance hit as I can tell by running it internally or on sd card.
Click to expand...
Click to collapse
That's certainly possible. Are you using the stock sd card?
I still stand behind my assertion that the dalvik cache is the wrong thing to be moving if the goal is to improve performance. (Well, unless you somehow have an sd card that operates faster than the internal memory...)
And your statement that you see no performance hit one way or the other is kind of just another way of saying what I said... The result was nill.....
subliminalurge said:
That's certainly possible. Are you using the stock sd card?
I still stand behind my assertion that the dalvik cache is the wrong thing to be moving if the goal is to improve performance. (Well, unless you somehow have an sd card that operates faster than the internal memory...)
And your statement that you see no performance hit one way or the other is kind of just another way of saying what I said... The result was nill.....
Click to expand...
Click to collapse
Right I get your point. But now on to the better thing. Possibly moving some music files to internal since I have seen complaints of hiccups when playing tunes. I cant think of any other benefits as of yet. Was just curious as to if it could be done so I did it. I am using a class 4 card I have a 6 but it is a tad bad so it is of no use. Now as for moving the dalvik to the /cache, that seems like it would be the better idea, since i have yet to see my cache used much at all.
smstutler said:
Now as for moving the dalvik to the /cache, that seems like it would be the better idea, since i have yet to see my cache used much at all.
Click to expand...
Click to collapse
I haven't really monitored the usage, although it shouldn't change much.
I'm also new to Android, but I have a good number of years under my belt both adminning Linux machines and developing Java apps (amongst other things...).
I've done a bit of reading on how the Dalvik VM works, and I can confidently tell you that you want the Dalvik cache on whatever the fastest memory in your phone is. For the vast majority of people, that will be the internal memory. If you've spent a small fortune on a super-badass sd card that is faster (like that other thread where the guy bought a class 10), then moving it would be a simple matter of symlinking that directory onto the card.
As far as your concerns with stuttering music, even the dog slow sd card that comes stock with the hero is plenty fast for playing an mp3 file. If you're having trouble there, you need to take a look at what's hogging your cpu, not what's hogging your memory....
Nah wasn't meant for me with the music on SD. I rarely use it for that. But yes I do agree with you. The SD may not be best choice but there has to be a better way to utilize some of the system memory that just sits dormant.
/dev/block/mtdblock4 130.0M 1.1M 128.9M 1% /cache
see what I mean here. 1% used.
I've tested this on my Hero, my Nexus One and on a friend's Evo.
Code:
#!/system/bin/sh
echo "++++ DALVIK 2 CACHE STARTING ++++"
if [ ! -d /cache/dalvik-cache ]
then
mkdir /cache/dalvik-cache
chown 1000:1000 /cache/dalvik-cache
chmod 775 /cache/dalvik-cache
fi
if [ -L /data/dalvik-cache ]
then
rm -f /data/dalvik-cache
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ ! -d /data/dalvik-cache ]
then
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ -d /data/dalvik-cache ]
then
for filename in /data/dalvik-cache/*
do
if [ -L $filename ]
then
rm -f $filename
fi
done
mv /data/dalvik-cache/* /cache/dalvik-cache/
fi
mount -o bind /cache/dalvik-cache/ /data/dalvik-cache/
It's part of Darktremor A2SD 2.7 update 3r1.
Command: a2sd cachepart
Hacre said:
I've tested this on my Hero, my Nexus One and on a friend's Evo.
Code:
#!/system/bin/sh
echo "++++ DALVIK 2 CACHE STARTING ++++"
if [ ! -d /cache/dalvik-cache ]
then
mkdir /cache/dalvik-cache
chown 1000:1000 /cache/dalvik-cache
chmod 775 /cache/dalvik-cache
fi
if [ -L /data/dalvik-cache ]
then
rm -f /data/dalvik-cache
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ ! -d /data/dalvik-cache ]
then
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ -d /data/dalvik-cache ]
then
for filename in /data/dalvik-cache/*
do
if [ -L $filename ]
then
rm -f $filename
fi
done
mv /data/dalvik-cache/* /cache/dalvik-cache/
fi
mount -o bind /cache/dalvik-cache/ /data/dalvik-cache/
Click to expand...
Click to collapse
tkirton said:
It's part of Darktremor A2SD 2.7 update 3r1.
Command: a2sd cachepart
Click to expand...
Click to collapse
Was there a reason you quoted me?
Hacre said:
Was there a reason you quoted me?
Click to expand...
Click to collapse
I believe tkirton quoted you because instead of ruunning the script you could simply use the Command: a2sd cachepart
In his latest release.
nfinitefx45 said:
I believe tkirton quoted you because instead of ruunning the script you could simply use the Command: a2sd cachepart
In his latest release.
Click to expand...
Click to collapse
Oh I see. Well the script I posted should work on ROMs that don't have such a feature.
True. Point taken.
Hacre said:
Oh I see. Well the script I posted should work on ROMs that don't have such a feature.
Click to expand...
Click to collapse
Newbie question
Hacre said:
I've tested this on my Hero, my Nexus One and on a friend's Evo.
Code:
#!/system/bin/sh
echo "++++ DALVIK 2 CACHE STARTING ++++"
if [ ! -d /cache/dalvik-cache ]
then
mkdir /cache/dalvik-cache
chown 1000:1000 /cache/dalvik-cache
chmod 775 /cache/dalvik-cache
fi
if [ -L /data/dalvik-cache ]
then
rm -f /data/dalvik-cache
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ ! -d /data/dalvik-cache ]
then
mkdir /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 775 /data/dalvik-cache
elif [ -d /data/dalvik-cache ]
then
for filename in /data/dalvik-cache/*
do
if [ -L $filename ]
then
rm -f $filename
fi
done
mv /data/dalvik-cache/* /cache/dalvik-cache/
fi
mount -o bind /cache/dalvik-cache/ /data/dalvik-cache/
Click to expand...
Click to collapse
How can I run this script on my ROM? Please guide me to make this work.

[BRAINSTORM] Booting directly into recovery

For reference, these are my thoughts on the matter.
We have 3 ways to do this:
1. Get hold of SBL, change it and flash it
Currently impossible afaik.
2. Get an init.d bash script to reboot into recovery if key is pressed
Most likely possible taking these 2 assumptions into account:
a) Bash allows to detect a pressed key, something like this:
Code:
_key()
{
local kp
ESC=$'\e'
_KEY=
read -d '' -sn1 _KEY
case $_KEY in
"$ESC")
while read -d '' -sn1 -t1 kp
do
_KEY=$_KEY$kp
case $kp in
[a-zA-NP-Z~]) break;;
esac
done
;;
esac
printf -v "${1:-_KEY}" "%s" "$_KEY"
}
_key x
case $x in
$'\e[15~') reboot recovery ;;
esac
Replacing this key code for one of OB's.
But for this, we need assumption number 2:
b) Key codes mapping is the same for recoveries.
Now, while this is the method of the greatest chance to work, it is also fairly useless. Developers will often break the boot before the init.d scripts are ran. So, this code should be ran before. Hence, the third method.
3. Start a custom service in init.rc (@ ramdisk) that will detect pressed key
This would be the perfect solution as it can't be broken from kernel (zImage) or system changes. However, init.rc has its own programming language (android init language) and there's no way to run this kind of listener.
However, it is possible to run an external script located for example in /system/bin/. These can be both an executable compiled from c (higher chances of working) or a bash scripting like the aforementioned one (lower chances of working since android probably doesn't start a console on boot).
Code for this would be something like:
Code:
service exampleservice /system/bin/exampleservice
user exampleservice
group exampleservice
oneshot
So uh, am I missing anything?
Anyone has other ideas?
a lot of times i heared about pressing "G" and "Power" would boot into some kind of save mode... if thats true i guess its easyer to reprogramm that keycombo to do something else... so does that keycombo anything? i couldnt figure out^^
Sent from my LG-P970 using XDA App
Are others devices has the key combination code in SBL?
I wish I have enough knowledge about android system so i can help...
i04055 said:
Are others devices has the key combination code in SBL?
I wish I have enough knowledge about android system so i can help...
Click to expand...
Click to collapse
Yes there are devices heaving the key-combo in SBL if that answers your question. The "Samsung Galaxy S GT-I9000" e.g. has them there afaik. With that device it was possible flashing the SBL to add a "booting directly into recovery" key-combo...
So I don´t know why there should not be a solution to do the same to the OB but Noejn surely has good reason for telling its impossible.
But hey what about booting into recovery on every system startup and only boot into the system through the recovery? It´s a "quick & dirty" solution even if its possible but better than developing the way we do isn´t it? I´m not sure if its easier to change the startup that way than to add or modify a key-combo but maybe someone here does?
I'm sure (or hope..) someone can, but perhaps we should move this Thread to another part of the Forum so someone with the knowledge how to do this will read it.
d0n22 said:
But hey what about booting into recovery on every system startup and only boot into the system through the recovery? It´s a "quick & dirty" solution even if its possible but better than developing the way we do isn´t it? I´m not sure if its easier to change the startup that way than to add or modify a key-combo but maybe someone here does?
Click to expand...
Click to collapse
Yeah, i prefer that way if poosibble rather than nothing.
But if put it that way, when the phone get bootloop is it still posibbe to boot into recovery?
Sent from my LG-P970 using XDA App
This is how it's done on Xperia X8 phone.
The /system/bin/chargemon is usb-charge daemon that is being hijacked on boot (it's binary is replaced with this script)
Original chargemon is copied into "charger" to keep it's functionality.
Than "sleep 3" waits for any keypress, and checks the dump, if keys were pressed, it launches the recovery binary.
quite simple.
Code:
#!/system/bin/busybox sh
/system/bin/charger
cat /dev/input/event1 > /dev/keycheck&
sleep 3
kill -9 $!
if [ -s /dev/keycheck -o -f /data/local/tmp/xrecovery ]
then
rm -f /data/local/tmp/xrecovery
# remount rootfs rw
mount -o remount,rw rootfs /
# Umount MTDs
umount -l /dev/block/mtdblock1
umount -l /dev/block/mtdblock2
umount -l /dev/block/mtdblock3
# Mount recovery partition
cd /
rm -r /sbin
rm -f etc
tar -xf /system/bin/xrecovery.tar
# Umount /system
umount -l /dev/block/mtdblock0
# chroot
chroot / /init
fi
# remount rootfs rw
mount -o remount,rw rootfs /
chmod 0777 /dev -R
chown 0.2000 /dev/oncrpc -R
cd /
rm init*
rm logo.rle
rm default.prop
tar -xf /system/bin/ramdisk.tar
mkdir -p /minicm
cd /minicm
tar -xf /system/bin/ramdisk.tar
# Umount /system, data and cache
umount -l /dev/block/mtdblock0
umount /dev/block/mtdblock3
umount /dev/block/mtdblock1
rmdir /system /data /cache /mnt
racht said:
This is how it's done on Xperia X8 phone.
The /system/bin/chargemon is usb-charge daemon that is being hijacked on boot (it's binary is replaced with this script)
Original chargemon is copied into "charger" to keep it's functionality.
Than "sleep 3" waits for any keypress, and checks the dump, if keys were pressed, it launches the recovery binary.
quite simple.
Code:
#!/system/bin/busybox sh
/system/bin/charger
cat /dev/input/event1 > /dev/keycheck&
sleep 3
kill -9 $!
if [ -s /dev/keycheck -o -f /data/local/tmp/xrecovery ]
then
rm -f /data/local/tmp/xrecovery
# remount rootfs rw
mount -o remount,rw rootfs /
# Umount MTDs
umount -l /dev/block/mtdblock1
umount -l /dev/block/mtdblock2
umount -l /dev/block/mtdblock3
# Mount recovery partition
cd /
rm -r /sbin
rm -f etc
tar -xf /system/bin/xrecovery.tar
# Umount /system
umount -l /dev/block/mtdblock0
# chroot
chroot / /init
fi
# remount rootfs rw
mount -o remount,rw rootfs /
chmod 0777 /dev -R
chown 0.2000 /dev/oncrpc -R
cd /
rm init*
rm logo.rle
rm default.prop
tar -xf /system/bin/ramdisk.tar
mkdir -p /minicm
cd /minicm
tar -xf /system/bin/ramdisk.tar
# Umount /system, data and cache
umount -l /dev/block/mtdblock0
umount /dev/block/mtdblock3
umount /dev/block/mtdblock1
rmdir /system /data /cache /mnt
Click to expand...
Click to collapse
yeah ,from this we can see what is running before logo screen and we can mod that file
so.. is that mean we can boot to recovery mode same as x8?
racht said:
This is how it's done on Xperia X8 phone.
The /system/bin/chargemon is usb-charge daemon that is being hijacked on boot (it's binary is replaced with this script)
Original chargemon is copied into "charger" to keep it's functionality.
Than "sleep 3" waits for any keypress, and checks the dump, if keys were pressed, it launches the recovery binary.
quite simple.
Code:
#!/system/bin/busybox sh
/system/bin/charger
cat /dev/input/event1 > /dev/keycheck&
sleep 3
kill -9 $!
if [ -s /dev/keycheck -o -f /data/local/tmp/xrecovery ]
then
rm -f /data/local/tmp/xrecovery
# remount rootfs rw
mount -o remount,rw rootfs /
# Umount MTDs
umount -l /dev/block/mtdblock1
umount -l /dev/block/mtdblock2
umount -l /dev/block/mtdblock3
# Mount recovery partition
cd /
rm -r /sbin
rm -f etc
tar -xf /system/bin/xrecovery.tar
# Umount /system
umount -l /dev/block/mtdblock0
# chroot
chroot / /init
fi
# remount rootfs rw
mount -o remount,rw rootfs /
chmod 0777 /dev -R
chown 0.2000 /dev/oncrpc -R
cd /
rm init*
rm logo.rle
rm default.prop
tar -xf /system/bin/ramdisk.tar
mkdir -p /minicm
cd /minicm
tar -xf /system/bin/ramdisk.tar
# Umount /system, data and cache
umount -l /dev/block/mtdblock0
umount /dev/block/mtdblock3
umount /dev/block/mtdblock1
rmdir /system /data /cache /mnt
Click to expand...
Click to collapse
soundes quite promising... have you tried it?
Can this be usefull?
http://forum.xda-developers.com/showthread.php?t=991276
Noejn have you abandoned us ? Or are u planning to take a look at this ? Would be nice if u get OB up and running
recovery
Hi,
has there been any success with booting into recovery mode?
BR,
J
logitec said:
Hi,
has there been any success with booting into recovery mode?
BR,
J
Click to expand...
Click to collapse
No,I try to boot directly into recovery through boot.img,but I get a big "error" form the LG Security Team!
Hijacking a daemon would work if Optimus Black had those binaries. I took a quick glance at a backup and I didn't see chargemon in /system/bin.
Besides, a xRecovery is limited as it's dependent on system files so a /format can't be done which isn't really that "comfy", especially when changing fs.
But yeah, better than nothing. Still, the method you described is only possible in Xperia phones, as far as I know.
I still say injecting a service on the init.rc is the way to go.
However, I can't test this now.
racht said:
This is how it's done on Xperia X8 phone.
The /system/bin/chargemon is usb-charge daemon that is being hijacked on boot (it's binary is replaced with this script)
Original chargemon is copied into "charger" to keep it's functionality.
Than "sleep 3" waits for any keypress, and checks the dump, if keys were pressed, it launches the recovery binary.
quite simple.
Code:
#!/system/bin/busybox sh
/system/bin/charger
cat /dev/input/event1 > /dev/keycheck&
sleep 3
kill -9 $!
if [ -s /dev/keycheck -o -f /data/local/tmp/xrecovery ]
then
rm -f /data/local/tmp/xrecovery
# remount rootfs rw
mount -o remount,rw rootfs /
# Umount MTDs
umount -l /dev/block/mtdblock1
umount -l /dev/block/mtdblock2
umount -l /dev/block/mtdblock3
# Mount recovery partition
cd /
rm -r /sbin
rm -f etc
tar -xf /system/bin/xrecovery.tar
# Umount /system
umount -l /dev/block/mtdblock0
# chroot
chroot / /init
fi
# remount rootfs rw
mount -o remount,rw rootfs /
chmod 0777 /dev -R
chown 0.2000 /dev/oncrpc -R
cd /
rm init*
rm logo.rle
rm default.prop
tar -xf /system/bin/ramdisk.tar
mkdir -p /minicm
cd /minicm
tar -xf /system/bin/ramdisk.tar
# Umount /system, data and cache
umount -l /dev/block/mtdblock0
umount /dev/block/mtdblock3
umount /dev/block/mtdblock1
rmdir /system /data /cache /mnt
Click to expand...
Click to collapse
Good news, I'm getting close.
ok, thank you for everithing
Noejn said:
Good news, I'm getting close.
Click to expand...
Click to collapse
good news indeed^^ im working on it as well but im not feeling like getting close :-\ pls let me know what you did and how you did it as soon as its done... again thank you very much for your efforts!
Sent from my LG-P970 using XDA App
d0n22 said:
good news indeed^^ im working on it as well but im not feeling like getting close :-\ pls let me know what you did and how you did it as soon as its done... again thank you very much for your efforts!
Sent from my LG-P970 using XDA App
Click to expand...
Click to collapse
Well, I've succeed injecting the script on boot.
However, I'm getting some problems on the event0 > keycheck; I don't think at this time of boot /dev entries are up.
But I've already thought of a workaround and I'll test it tomorrow.
I´m thinking, if i compile kernel of ubuntu and install it in recovery partition, not possible then run ubuntu in native mode from sdcard with dualboot?

Dual Boot Atrix CM9 (emmc) and CM7 (sdcard)

Recently I became interested in dual booting my Atrix, mainly for the fun of it, and because I like the convenience of quickly reverting to a different ROM without having to restore it from backup. I would also like to evaluate the performance of my system with sdcard in the loop among other things.
From my web research, it appears that multiple attempts at dual booting the Atrix have been made without much success. I have heard of SafeStrap, but I'm the kind of person who wants to know what’s happening inside the black box. So I decided to try my hand by flashing CM9 to internal memory and CM7 to my Patriot 16GB Class 4 micro-SD card. I did all of this on Ubuntu 11.10 using GParted, Android SDK and several Perl and Bourne shell scripts that I either customized or created.
I probably could have done this on Windows (which for example has Atrix USB drivers whereas Ubuntu does not) and perhaps be able to use available space on my 10GB emmc to host additional ROMs. But in spite of the lack of drivers, I felt more comfortable having a full-up, dedicated *nix-based OS on hand to support the experiment.
I decided to to push a stable ROM to sdcard (in this case, CM7.2 RC1), one that runs well without any patches --- because a stock recovery tool wouldn't recognize it.
The experiment was successful as I now enjoy my 3GB CM7 build running from SD card with stable browser, keyboard and camera. And I can still use Joker's Kitchen Sink to explore some of the many possible ROM configurations without touching the CM7 build.
YouTube video (3:38) showing reboots from one ROM to the other: http://www.youtube.com/watch?v=31TPyAguQ60
Preliminaries (Ubuntu)
GParted and Perl installed
Android SDK for Linux (i386) installed http://developer.android.com/sdk/index.html
I download testsign.zip from http://forum.xda-developers.com/showthread.php?t=551711 , copy to Ubuntu <android-sdk-linux/tools> directory and extract zip there. This creates a testsign subfolder with testsign.jar file inside.
Atrix Filesystem Analysis
I boot my phone to CWM 5.0.2.0, open an Ubuntu terminal, get root (sudo -s), run adb shell and invoke the “edify” and “df” commands to view the current filesystem:
~ # edify
recovery filesystem table
=========================
0 /tmp ramdisk (null) (null)
1 /boot emmc /dev/block/mmcblk0p11 (null)
2 /cache ext3 /dev/block/mmcblk0p15 (null)
3 /data ext3 /dev/block/mmcblk0p16 (null)
4 /sdcard vfat /dev/block/mmcblk1p1 (null)
5 /emmc vfat /dev/block/mmcblk0p18 (null)
6 /system ext3 /dev/block/mmcblk0p12 (null)
7 /recovery emmc /dev/block/mmcblk0p10 (null)
8 /osh ext3 /dev/block/mmcblk0p13 (null)
9 /preinstall ext3 /dev/block/mmcblk0p17 (null)
~ # df -a
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 417804 32 417772 0% /dev
devpts 0 0 0 0% /dev/pts
proc 0 0 0 0% /proc
sysfs 0 0 0 0% /sys
/dev/block/mmcblk0p15 645056 69020 543268 11% /cache
/dev/block/mmcblk0p16 2064208 129052 1830300 7% /data
/dev/block/mmcblk0p12 322516 238496 84020 74% /system​
SD Card Partitioning
Next I get root on Ubuntu, connect SD card to PC, ensure SD card adapter switch is set to read/write, run GParted and shrink the vfat (fat32) partition to allow room for /system, /cache and /data in that order. Then I create these partitions as ext4 with sizes reasonably consistent with the existing filesystem on emmc.
Note: GParted did not see my internal (emmc) card, and it prefixed the sdcard partitions as “/dev/mmcblk0” instead of “/dev/mmcblk1”.
Now I exit GParted, pull sdcard from PC and reinsert into phone. Then I boot to CWM, connect phone to PC, enter adb shell and verify the new sdcard partition map using the onboard “parted” tool:
~ # parted /dev/block/mmcblk1
GNU Parted 1.8.8.1.179-aef3
Using /dev/block/mmcblk1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: SD SU16G (sd/mmc)
Disk /dev/block/mmcblk1: 15.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 4194kB 10.7GB 10.7GB primary fat32 lba
2 10.7GB 11.1GB 346MB primary ext4
3 11.1GB 11.8GB 692MB primary ext4
4 11.8GB 14.0GB 2217MB primary ext4
quit
~#​
Clone CM7 to SD Card
Presently I have CM7.2 RC1 installed in emmc, and I want to clone this ROM to sdcard. But I first ensure that my phone is adequately charged, especially if I will be in CWM for a long time. My experience is that CWM can drain the battery, even when phone is connected to a powered USB hub.
I boot to CWM 5.0.2.0, open Ubuntu terminal on PC, get root (sudo -s), run adb shell and mount the new CM7 sdcard partitions.
Then I clone ROM to sdcard. (I did this over ADB, though in retrospect I probably could have done it more quickly with terminal emulator.)
~ # dd if=/dev/block/mmcblk0p12 of=/dev/block/mmcblk1p2
655360+0 records in
655360+0 records out
335544320 bytes (320.0MB) copied, 140.786369 seconds, 2.3MB/s
~ # dd if=/dev/block/mmcblk0p15 of=/dev/block/mmcblk1p3
1310720+0 records in
1310720+0 records out
671088640 bytes (640.0MB) copied, 282.791984 seconds, 2.3MB/s
~ # dd if=/dev/block/mmcblk0p16 of=/dev/block/mmcblk1p4
4194304+0 records in
4194304+0 records out
2147483648 bytes (2.0GB) copied, 898.662170 seconds, 2.3MB/s​
Since the data partition is fairly large, I ending up using the “cat” command, which cut the transfer time to about 6 minutes….
~ # cat /dev/block/mmcblk0p16 > /dev/block/mmcblk1p4​
Flash CM9 to Internal Memory
Now I push Joker CM9 beta 0.6.0 zip to sdcard and install via CWM...
[email protected]:~/Desktop# adb push beta-0.6.0-cm-9.0.0-RC0-olympus-UNOFFICIAL-signed.zip /sdcard/Download
1286 KB/s (125162795 bytes in 95.013s)
[email protected]:~/Desktop#​
Modify CM7 Ramdisk, Re-pack ROM Zip and Re-sign
Now I modify ramdisk in the CM7 boot.img to mount the sdcard /system, /cache and /data partitions at boot time. To help streamline the mod, I wrote custom Perl scripts based on the ones linked here:
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
My Perl script “unpack-romzip.pl” actually starts with a baseline ROM, extracts boot.img and then p****s out kernel and ramdisk directory from boot.img. Here is the script in action...
[email protected]:~/Desktop# ./unpack-romzip.pl update-cm-7.2.0-RC1-olympus+gapps.zip
Extract boot.img from update-cm-7.2.0-RC1-olympus+gapps.zip
Archive: update-cm-7.2.0-RC1-olympus+gapps.zip
inflating: boot.img
Rename boot.img to update-cm-7.2.0-RC1-olympus+gapps.img
kernel written to update-cm-7.2.0-RC1-olympus+gapps.img-kernel
ramdisk written to update-cm-7.2.0-RC1-olympus+gapps.img-ramdisk.cpio.gz
Extract ramdisk zip to directory: update-cm-7.2.0-RC1-olympus+gapps.img-ramdisk
513 blocks
Delete intermediate file: update-cm-7.2.0-RC1-olympus+gapps.img-ramdisk.cpio.gz​
Results...
-rw-r--r-- 1 root root 2574336 2012-05-03 19:12 update-cm-7.2.0-RC1-olympus+gapps.img-kernel
drwxr-xr-x 8 root root 4096 2012-05-03 19:12 update-cm-7.2.0-RC1-olympus+gapps.img-ramdisk​
In this experiment, the only ramdisk file I will modify is init.olympus.rc: I do so by commenting out the /system, /cache and /data mount commands for the emmc partitions and creating equivalent mount commands for the sdcard partitions...
# mount ext4 /dev/block/mmcblk0p12 /system noatime nodiratime wait ro barrier=1
# mount ext4 /dev/block/mmcblk0p16 /data nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
# mount ext4 /dev/block/mmcblk0p15 /cache nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
mount ext4 /dev/block/mmcblk1p2 /system noatime nodiratime wait ro barrier=1
mount ext4 /dev/block/mmcblk1p4 /data nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
mount ext4 /dev/block/mmcblk1p3 /cache nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc​
Now I back out of ramdisk and run my other Perl script: repack-romzip.pl, which combines ramdisk and kernel to obtain a new boot image and then generates a repacked ROM zip. Here is the script in action...
[email protected]:~/Desktop# ./repack-romzip.pl update-cm-7.2.0-RC1-olympus+gapps.zip
Repack Android boot image from kernel file and ramdisk directory and roll into new ROM zip
Run cpio and gzip on ramdisk directory
514 blocks
Make boot image from kernel file and ramdisk cpio zip
Updated boot.img...
-rw-r--r-- 1 root root 2725888 2012-05-03 19:20 update-cm-7.2.0-RC1-olympus+gapps-repack.img
Copy update-cm-7.2.0-RC1-olympus+gapps.zip to update-cm-7.2.0-RC1-olympus+gapps-repack.zip
Add updated boot.img to update-cm-7.2.0-RC1-olympus+gapps-repack.zip
updating: boot.img
zip warning: Local Entry CRC does not match CD: boot.img
(deflated 0%)​
I am almost ready to re-sign my CM7 ROM zip. But I first need to modify its updater-script to mount /system to /dev/block/mmcblk1p2 (sdcard) instead of /dev/block/mmcblk0p12 (emmc). So I edit the updater-script and change:
format("ext4", "EMMC", "/dev/block/mmcblk0p12");
mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/system");​
to
format("ext4", "EMMC", "/dev/block/mmcblk1p2");
mount("ext4", "EMMC", "/dev/block/mmcblk1p2", "/system");​
Now I invoke the java command below to re-sign the CM7 zip:
[email protected]:~/Desktop# java -classpath ~/android-sdk-linux/tools/testsign/testsign.jar testsign update-cm-7.2.0-RC1-olympus+gapps-repack.zip update-cm-7.2.0-RC1-olympus+gapps-repack-signed.zip
[email protected]:~/Desktop# ls -ld *.zip
-rw-rw-r-- 1 robert robert 125162795 2012-05-03 18:05 beta-0.6.0-cm-9.0.0-RC0-olympus-UNOFFICIAL-signed.zip
-rw-r--r-- 1 root root 105000424 2012-05-03 19:23 update-cm-7.2.0-RC1-olympus+gapps-repack-signed.zip
-rw-r--r-- 1 root root 104987732 2012-05-03 19:20 update-cm-7.2.0-RC1-olympus+gapps-repack.zip
-rw------- 1 robert robert 104999357 2012-05-01 20:10 update-cm-7.2.0-RC1-olympus+gapps.zip​
Then I transfer the re-signed zip to sdcard/Download, reboot to CWM and install.
Test Results
I do some preliminary testing by attempting to boot CM9 from Joker's CM9 1.0GHz v4 boot image file:
[email protected]:~/Desktop# fastboot boot cm9-1.0-atrixv4-boot.img
downloading 'boot.img'...
OKAY [ 0.204s]
booting...
OKAY [ 0.002s]
finished. total time: 0.206s​
Success. Now I try CM7...
[email protected]:~/Desktop# fastboot boot update-cm-7.2.0-RC1-olympus+gapps-repack.img
downloading 'boot.img'...
OKAY [ 0.182s]
booting...
OKAY [ 0.002s]
finished. total time: 0.185s​
And to my delight, CM7 boots
Finally I install Script Manager and push my custom boot-rom.sh to sdcard/Boot. This script offers four options: Current ROM (default), CM9, CM7 or CWM recovery. Rebooting to the other ROM is just a few keystrokes away, though I must configure Script Manager to run boot-rom.sh as superuser (press SU button on configuration screen).
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Elapsed times…
Execution of boot-rom.sh on CM7 to CM9 welcome screen: 44 sec.
Execution of boot-rom.sh on CM9 to CM7 welcome screen: 45 sec.
Conclusions and Thoughts
My Atrix dual boot capability offers an efficient means to circumvent instabilities in CM9 by providing a stable CM7 ROM to run from my sdcard. Of course there are limitations here in that a stock recovery won't recognize my CM7 build. But I'm fine with that since I probably won't patch.
I think it would be kind of interesting to push identical ROMs on emmc and sdcard and compare performance. I heard from a fellow engineer that Class 16 cards are now available.
It would also be interesting to explore refinements like multiple-boot from emmc and various forms of automation.
This is a work in progress and I appreciate your constructive feedback.
YouTube video (3:38) showing reboots from one ROM to the other: http://www.youtube.com/watch?v=31TPyAguQ60
Credits
jokersax11 @ xda, ghost_og @ xda,
Photon Dev Team, Atrix Dev Team
Koush
Other credits embedded in this post
Holy. ****.
Sent from my MB860 using XDA
Wow thanks for the info. I wanted to give this a try but I had a question. If I partition my sdcard to the specs you provided, can I flash your resigned cm7 zip and it would flash it to my sdcard. If that is possible, could you post the modified cm7?
Wow....waiting is coming.......
Something you could look into is moving the apps to SD and let each rom build its own dalvik cache. Then you can keep your apps between both builds
Sent from my MB855 using XDA
I think you better get into developing roms, because it sounds like you have an amazing amount of knowledge with this technology. Something I can only hope to achieve, lol.
I think you should make a full length 45 min youtube clip to explain everything, but I know that's not gonna happen, so see how much you can cram into 5 minutes! lol
Nice job man, outstanding progression!
Blur ROM with WebTop and CM9
Is it possible to switch between Blur based ROM with WebTop and CM9?
#!/system/bin/sh
mount -o remount,rw /dev/block/mmcblk0p1 /system//挂载/system为可写
busybox md5sum -cs /system/boot/md5 && CHANGE=0 || CHANGE=1//判断boot.img是否更新
echo $CHANGE
if [ "$CHANGE" = "1" ]
then
cat /dev/block/mmcblk0p5 > /data/boot1.img
busybox md5sum /system/build.prop > /system/boot/md5
echo "Creat new boot done!"
fi
if [ -e /data/boot2.img ]//判断另外的系统是否更新boot.img
then
busybox mv /data/boot2.img /system/boot/boot2.img
echo "Backup new boot done!"
fi
cat /system/boot/boot2.img > /dev/block/mmcblk0p5
fdisk /dev/block/mmcblk0 < /system/bin/fdisk1.sh
///////////////////同fixuid
mkdir /data/lib
chmod 0777 /data/lib
cat /data/system/packages.xml | grep 'package name="'| awk -F"\"" '{print $2}' > /data/packages.list
awk -F" " '{print "rm /data/data/"$1"/lib"}' /data/packages.list > /data/cx.sh
cat /system/bin/noshare|while read fname
do
echo "rm $fname-2/lib" >>/data/cx.sh
done
awk -F" " '{print "mkdir /data/lib/"$1}' /data/packages.list >> /data/cx.sh
awk -F" " '{print "mv /data/data/"$1"/lib/ /data/lib/"$1"/"}' /data/packages.list >> /data/cx.sh
busybox chown -R 1000.1000 /data/lib
awk -F" " '{print "rm -R /data/data/"$1"/lib"}' /data/packages.list >> /data/cx.sh
cat /system/bin/noshare|while read fname
do
echo "rm -R $fname-2/lib" >>/data/cx.sh
done
chmod 0777 /data/cx.sh
/data/cx.sh
////////////////////////////////////////////////////移动第二系统数据为主数据
cat /system/bin/noshare|while read fname
do
mv $fname "$fname-1"
mv "$fname-2" $fname
done
cat /data/noshare|while read fname//移动不需要共享的数据
do
mv $fname "$fname-1"
mv "$fname-2" $fname
done
echo "Move data done!"
/////////////////////////同fixuid
awk -F" " '{print "ln -s /data/lib/"$1" /data/data/"$1"/lib"}' /data/packages.list > /data/cx.sh
cat /data/system/packages.xml | grep 'package name=\"'| awk -F"\"" '{print $2" "$18}' | awk -F" " '{print "busybox chown -R "$2"."$2" /data/data/"$1}' >> /data/cx.sh
chmod 0777 /data/cx.sh
/data/cx.sh
echo "Move UID done!"
reboot
kingme__hu said:
#!/system/bin/sh
mount -o remount,rw /dev/block/mmcblk0p1 /system//挂载/system为可写
busybox md5sum -cs /system/boot/md5 && CHANGE=0 || CHANGE=1//判断boot.img是否更新
echo $CHANGE
if [ "$CHANGE" = "1" ]
then
cat /dev/block/mmcblk0p5 > /data/boot1.img
busybox md5sum /system/build.prop > /system/boot/md5
echo "Creat new boot done!"
fi
if [ -e /data/boot2.img ]//判断另外的系统是否更新boot.img
then
busybox mv /data/boot2.img /system/boot/boot2.img
echo "Backup new boot done!"
fi
cat /system/boot/boot2.img > /dev/block/mmcblk0p5
fdisk /dev/block/mmcblk0 < /system/bin/fdisk1.sh
///////////////////同fixuid
mkdir /data/lib
chmod 0777 /data/lib
cat /data/system/packages.xml | grep 'package name="'| awk -F"\"" '{print $2}' > /data/packages.list
awk -F" " '{print "rm /data/data/"$1"/lib"}' /data/packages.list > /data/cx.sh
cat /system/bin/noshare|while read fname
do
echo "rm $fname-2/lib" >>/data/cx.sh
done
awk -F" " '{print "mkdir /data/lib/"$1}' /data/packages.list >> /data/cx.sh
awk -F" " '{print "mv /data/data/"$1"/lib/ /data/lib/"$1"/"}' /data/packages.list >> /data/cx.sh
busybox chown -R 1000.1000 /data/lib
awk -F" " '{print "rm -R /data/data/"$1"/lib"}' /data/packages.list >> /data/cx.sh
cat /system/bin/noshare|while read fname
do
echo "rm -R $fname-2/lib" >>/data/cx.sh
done
chmod 0777 /data/cx.sh
/data/cx.sh
////////////////////////////////////////////////////移动第二系统数据为主数据
cat /system/bin/noshare|while read fname
do
mv $fname "$fname-1"
mv "$fname-2" $fname
done
cat /data/noshare|while read fname//移动不需要共享的数据
do
mv $fname "$fname-1"
mv "$fname-2" $fname
done
echo "Move data done!"
/////////////////////////同fixuid
awk -F" " '{print "ln -s /data/lib/"$1" /data/data/"$1"/lib"}' /data/packages.list > /data/cx.sh
cat /data/system/packages.xml | grep 'package name=\"'| awk -F"\"" '{print $2" "$18}' | awk -F" " '{print "busybox chown -R "$2"."$2" /data/data/"$1}' >> /data/cx.sh
chmod 0777 /data/cx.sh
/data/cx.sh
echo "Move UID done!"
reboot
Click to expand...
Click to collapse
What's this? I don't... I... can't comprehend...
Anyone able to make an auto script to help beginners and confused people like me? I can't follow through half of the OP's instructions.... not used to using SDK and terminal/ADB.
Woooow!! This is epic dude! I could have a Blur rom on my sd and a custom rom on my internal, to keep webtop functionality when i want! A Windows guide would be prettt awesome!
Sent from my MB860 using XDA
Amazing!
This is amazing!! Thanks a lot for your work!
This could make things MUCH easier for me when testing both CM9 and CM7 Neutrino.
I hope this project matures by the time my exams finish, like as Jokersax11 said, the ability to save dalvik cache would be awesome.
Massive thumbs up from me here
This really is some fantastic development! I am beyond impressed. You my friend should join the league of developer jedi's.
Fantastic work!
Now, if this could only somehow be transformed into a zip...LOL
J-Roc said:
This really is some fantastic development! I am beyond impressed. You my friend should join the league of developer jedi's.
Fantastic work!
Now, if this could only somehow be transformed into a zip...LOL
Click to expand...
Click to collapse
+1 for the ZIP and making this easier to use for the Ordinary good people like Some of Us
Amazing work ! Keep up
Thanks to your guide I've made it to cloning to sdcard all with windows. Will post back with tutorial if I can finish the job. Thank you for your amazing work!
Maybe you can work together with BootManager dev to support Atrix...
Dude, you're awesome. I think this is the final little push I needed to get me computer set up to dual boot Ubuntu and windows definitely going to be worth it now. Thanks for the work
KH_Lionheart said:
Dude, you're awesome. I think this is the final little push I needed to get me computer set up to dual boot Ubuntu and windows definitely going to be worth it now. Thanks for the work
Click to expand...
Click to collapse
You are quite welcome!
YouTube video (3:38) demonstrating reboot from one ROM to the other: http://www.youtube.com/watch?v=31TPyAguQ60
Sweet!
Seeing as how you had this on the back burner, I am SO glad you got those kernel building issues squashed. Awesome job man!
J-Roc said:
This really is some fantastic development! I am beyond impressed. You my friend should join the league of developer jedi's.
Fantastic work!
Now, if this could only somehow be transformed into a zip...LOL
Click to expand...
Click to collapse
tasadar said:
+1 for the ZIP and making this easier to use for the Ordinary good people like Some of Us
Amazing work ! Keep up
Click to expand...
Click to collapse
Here's the problem: I needed GApps on CM7 to provide the tools needed to support my experiment. However, Google has requested that copyrighted material be removed from CM7. So while I was able to streamline the integration of GApps with CM7, I could not provide the ROM, only the procedure. See http://forum.xda-developers.com/showthread.php?p=25588129#post25588129.
IDK, maybe Google will soften up a bit...?

[SCRIPT][DALVIK] System Dalvik cache script 0.0.1

Hi Folks,
By request from a friend i've created a sh script to move all [email protected] dalvik cache files to /cache/dalvik-cache because some roms store [email protected] dalvik files in /data/dalvik-cache. So for those that need or wont to save some space in /system follow this steps:
1 - You need a rooted phone
2 - You need terminal emulator
3 - Download script from here
4 - Open terminal, navigate to where you downloaded the script and run sh dalvik.sh
5 - Reboot
!!Warning!!
Only run script in roms that store [email protected] dalvik files in /data/dalvik-cache otherwise you will experience some bugs in aplications.
Please post your feedback please
Thanks to HeD_pE for testing!
Cheers,
h4ck3dm1nd
Sorry I can't find the links
http://forum.xda-developers.com/showthread.php?p=32360919#post32360919
his other post...
[email protected]:/ # su
[email protected]:/ # cd /data/dalvik-cache
[email protected]:/data/dalvik-cache # mv [email protected]* /cache/dalvik-cache
failed on '[email protected]@[email protected]' - Cross-device link
255|[email protected]:/data/dalvik-cache #
I have [email protected] dalvik stuff in /data/dalvik cache and I've created folder /cache/dalvik-cache. Android: CM9.1 miroslav. Ideas?
prwnd said:
[email protected]:/ # su
[email protected]:/ # cd /data/dalvik-cache
[email protected]:/data/dalvik-cache # mv [email protected]* /cache/dalvik-cache
failed on '[email protected]@[email protected]' - Cross-device link
255|[email protected]:/data/dalvik-cache #
I have [email protected] dalvik stuff in /data/dalvik cache and I've created folder /cache/dalvik-cache. Android: CM9.1 miroslav. Ideas?
Click to expand...
Click to collapse
I'm having the same problem but with AIME.apk file. I'm using AOSP v1.2 by miroslav
prwnd said:
[email protected]:/ # su
[email protected]:/ # cd /data/dalvik-cache
[email protected]:/data/dalvik-cache # mv [email protected]* /cache/dalvik-cache
failed on '[email protected]@[email protected]' - Cross-device link
255|[email protected]:/data/dalvik-cache #
I have [email protected] dalvik stuff in /data/dalvik cache and I've created folder /cache/dalvik-cache. Android: CM9.1 miroslav. Ideas?
Click to expand...
Click to collapse
Hi,
Sorry but i do not check GT540 forum to often, I realised that if you create the /cache/dalvik-cache folder and run the script after it it will create the same folder again and in root explorer you can see the folders with the exact same name, So please backup your ROM, move all dalvik cache from /cache to its original folder, remove any symlinks and without creating the /cache/dalvik-cache folder run the script please.
In the attachment I share the scripts that Worked for me in order to move dalvik-cache to /cache (or to /dev).
Just put the one you want on /system/etc/init.d and set permissions to 777. Reboot to recovery, wipe cache and dalvik-cache and reboot to system again. Done =D
coto39 said:
In the attachment I share the scripts that Worked for me in order to move dalvik-cache to /cache (or to /dev).
Just put the one you want on /system/etc/init.d and set permissions to 777. Reboot to recovery, wipe cache and dalvik-cache and reboot to system again. Done =D
Click to expand...
Click to collapse
using your script, and it works. tq m8. using optimus 2x
The script is pretty easy to create.
# /system/bin/sh
rm /data/dalvik-cache/*
reboot
Use su binary.
Save it has a .sh file and then chmod 755 the file so you can run it via terminal.
And how do I know that?, I have experience with Linux OS.
I will upload it to my site tomorrow if I have time to also create index.php for it and update the other index.php file so it is easy to access the file to download.
EDIT: Oops, you are talking about moving, all well, this can be useful anyway.
EDIT2: Here is the link: caftp.3owl.com/Shell_Scripts/Dalvik_cache_cleaner/
andyabc said:
The script is pretty easy to create.
# /system/bin/sh
rm /data/dalvik-cache/*
reboot
Use su binary.
Save it has a .sh file and then chmod 755 the file so you can run it via terminal.
And how do I know that?, I have experience with Linux OS.
I will upload it to my site tomorrow if I have time to also create index.php for it and update the other index.php file so it is easy to access the file to download.
EDIT: Oops, you are talking about moving, all well, this can be useful anyway.
Click to expand...
Click to collapse
Oops, moderator delete this post, I accidentally ended up quoting my own post o.o
I fixed this script, but u must create before dalvik-cache folder in /cache (maybe add this to updater script) [no need anymore till V0.2 version]
Script v0.4 (can be used also as init.d script ) :
Code:
#!/system/bin/sh
#Dalvik Cache Saver by Alberto96
if [ -d /cache/dalvik-cache ];
then
cd /data/dalvik-cache
cp -a [email protected]* /cache/dalvik-cache
rm -r -f [email protected]*
find /data/dalvik-cache -type l -delete
busybox find /cache/dalvik-cache/* -type f -exec cp -f -s {} /data/dalvik-cache/ \;
else
mkdir /cache/dalvik-cache
cd /data/dalvik-cache
cp -a [email protected]* /cache/dalvik-cache
rm -r -f [email protected]*
find /data/dalvik-cache -type l -delete
busybox find /cache/dalvik-cache/* -type f -exec cp -f -s {} /data/dalvik-cache/ \;
fi
[ 0.3 version works but have a problem, im searching a fix. ]
Link for thread : http://forum.xda-developers.com/showthread.php?p=35843614
Ok , but how move ONLY SYSTEM DALVIK to cache/dalvik cache? Any ideas?
When we move ALL dalvik cache apps (some data and system) , than cache partition is fully! And we can't install any others apps !
This script moves only system dalvik cache so cache partition size is enough. Data dalvik cache will be saved in data partition with no cause of no space Tested in huawei u8160 with very little partitions
Inviato dal mio GT-I9000 con Tapatalk 2
Script working perfect , but first we must create dalvik-cache folder in cache partition (in CM9) and set permissions this folder:
[x][x][x]
[x][x][x]
[o][o][x]
Script move to etc/init.d and set perm:
[x][x][x]
[x][o][x]
[x][o][x]
reboot.

[script] [init.d] aNu_d2sd - data to sdcard

Features:
- Move only 3rd-party-apps/user-apps and its data to sdcard
- System-apps data (contacs,sms etc) are pretty much intact in-case of sdcard failure or removed so your phone is not rendered useless
- Install as many apps as you like (limited by your /sd-ext size), your internal data usage will remain around 40~45mb
Mechanism in general:
- mount /sd-ext
- copy selected /data directories ( app, data, dalvik-cache etc) to /sd-ext
- bind /data directories to /sd-ext directories ( not the /data it self )
- create new directories for system-apps-data in /data
- move system-apps-data to new directories in /data and sysmlink it
Requirement:
- Init.d supported rom
- Busybox
- primary linux formated 2nd partition on sdcard
- Root: only needed if not using recovery flashable zip
Installation:
- DWYOR, remember to backup first
- NOT WORKING with device already running similar init.d script ( but it might work if its only using bind mounts ),
- disable or remove it ( mountext, mountsd, ad2sd etc), then wipe if necessary
- flash the zip from CWM/Stock recovery mode
or
- manually put it in /system/etc/init.d
- set permission: 0750
- set owner: root group: shell
Important:
- Will effectively work after the second boot.
- DO NOT remove sd-card while system is running
- Curently TESTED only on mini and young with stock gb, possibly working on any device/version
Example script usage:
Called in mountext script (modified cm7 script):
Filename: 05mountext
Code:
#!/system/bin/sh
#
# mount sd-ext partition in sdcard
# mod: use aNu_d2sd functions library script
#
# anuneanu
logI="log -p i -t mountext"
logE="log -p e -t mountext"
E2FSCK=`which e2fsck`
[ `which busybox` = "" ] && exit || BB=`which busybox`
[ "$SD_EXT_DIRECTORY" = "" ] && SD_EXT_DIRECTORY="/sd-ext"
# call aNu_d2sd function library script
. "/system/etc/init.d/99aNu_d2sd"
# find sd-ext partition
for MMC_NUM in `seq 0 9`; do
MMC_TYPE=`cat /sys/block/mmcblk$MMC_NUM/device/type`
if [ "$MMC_TYPE" = "SD" ]; then
SD_EXT_PART=/dev/block/mmcblk${MMC_NUM}p2
break
fi
done
# mount sd-ext if a valid partition was found
if [ -b "$SD_EXT_PART" ]; then
# check sd-ext filesystem
if [ -x "$E2FSCK" ]; then
$logI "checking $SD_EXT_PART for errors..."
$E2FSCK -p $SD_EXT_PART
e2fsk_exitcode=$?
else
$logE "executable e2fsck not found, assuming no filesystem errors"
e2fsk_exitcode=0
fi
# mount sd-ext partition
if [ $e2fsk_exitcode -le 2 ]; then
if [ $($BB grep -c ext4 /proc/filesystems) -ne 0 ]; then
mount_opt="-t ext4 -o noauto_da_alloc,data=ordered,commit=15,barrier=1,nouser_xattr,errors=continue,noatime,nodiratime,nosuid,nodev"
else
mount_opt="-t auto -o nosuid,nodev"
fi
$BB mount $mount_opt $SD_EXT_PART $SD_EXT_DIRECTORY
if [ $? -eq 0 ]; then
$BB chown 1000:1000 $SD_EXT_DIRECTORY
$BB chmod 0771 $SD_EXT_DIRECTORY
$logI "$SD_EXT_DIRECTORY successfully mounted"
aNu_d2sd "/data/app* /data/data /data/dalvik-cache /data/local"
else
$logE "unable to mount filesystem for $SD_EXT_DIRECTORY!"
no_sdext=1
fi
else
$logE "e2fsck returned error $e2fsk_exitcode"
$logE "unable to repair ext partition...not mounting"
no_sdext=1
fi
else
$logI "linux partition not found on sdcard"
no_sdext=1
fi
aNu_d2sd_restore $no_sdext
$BB sync
exit
Download:
Flashable zip :
updated (22-03-2013) : View attachment aNu_d2sd.zip
Source
Any response would be much appreciated, thanks
Pertamax..!!
Testing..Testing..
fendytrancers89 said:
Pertamax..!!
Testing..Testing..
Click to expand...
Click to collapse
there is typo in function file line 27 column 56, preventing it from creating system dalvik-cache.
the download file has been updated, please grab the new one.

Categories

Resources