/data 파티션을 차지하는 파일들 중에, System App의 Dalvik Cache도 큰 비중을 차지합니다.. 제 경우를 보니 35MB이더군요.. 이 System용 Dalvik Cache들은 변경될 일이 전혀 없으므로 /data파티션같이 Read/Write파티션에 있어야 할 이유는 없습니다.. /system파티션에 있는게 좀더 적합하죠.. 일단 제 폰에서 옮겨보니 전혀 이상없이 잘 동작합니다.. 그리고, 동일하게 내부 메모리를 사용하므로 속도 저하가 된다던지 하는 부작용도 없구요.. 단지, 다음 버전 롬으로 업데이트 할때 좀 잔손질이 필요하다는 단점이 있긴 합니다.. (Symbol Link를 지워줘야 합니다..)


먼저 스크립트를 작성하기 전에, busybox를 이용한 shell을 만들어야 합니다.. 기왕 /system을 read/write로 변경한 김에 dalvik-cache디렉토리도 하나 만들죠.. 그렇게 하기 위해선,


1. mount -o rw,remount -t yaffs2 /dev/block/mtdblock4 /system

2. cd /system/xbin

3. busybox ln -s busybox sh

4. cd /system

5. mkdir dalvik-cache

6. busybox chown 1000:1000 dalvik-cache

7. busybox chmod 771 dalvik-cache

8. mount -o ro,remount -t yaffs2 /dev/block/mtdblock4 /system


그 다음에 shell script입니다.


#!/system/xbin/sh

cd /data/dalvik-cache

mv system*dex /system/dalvik-cache

busybox chown 1000:1000 /system/dalvik-cache/*dex

cd /system/dalvik-cache

for f in *.dex

do

ln -s "/system/dalvik-cache/${f}" "/data/dalvik-cache/${f}"

done


vi를 이용해서 이 스크립트를 작성한 다음, mv_system_cache.sh로 저장하십시오.


1. chmod 750 mv_system_cache.sh로 실행 퍼미션을 준 다음


재부팅이 필요합니다.. dalvik-cache를 삭제하는 순간, 어플들이 강제 종료되어 버립니다.. 특히나 시스템 어플들이다보니, 폰이 제대로 동작을 안하게 되죠.. 따라서 재부팅을 해서 Recovery화면으로 들어가야 합니다..


X버튼을 누르고 재 부팅해서, Volume up + camera버튼으로 Recovery화면으로 들어갑니다..


그 다음에 Mount option으로 가서, /system과 /data파티션을 마운트 합니다.. 그 다음에 PC에서 adb를 실행해서 터미널로 들어간 다음, mv_system_cache.sh를 실행하면 됩니다..


제대로 되었는지 확인하기 위해서 /data/dalvik-cache로 가서, busybox ls -al을 실행해 보세요.. system어플들의 Dalvik-cache는 다음과 같습니다.


system@app@TalkProvider.apk@classes.dex -> /system/dalvik-cache/system@app@TalkProvider.apk@classes.dex


이런식으로 파일들이 보이면 성공한 것입니다.. 만약 실패하였다면 /data/dalvik-cache로 들어가서 busybox rm system*dex를 실행하면 모든 symbolic 링크를 지우게 됩니다.. 일단 안드로이드는 dex파일이 없으면 만들어 내기 때문에, symbolic 링크만 지우게 되면 부팅하면서 자동으로 만들어 내어서 정상 동작에는 무리가 없습니다.. 일단 부팅을 한다음, 재부팅을 통해서, 위의 과정을 반복하면 됩니다. 스크립트가 제대로 작성되었는지도 확인해 보고..