Total Pageviews

Tuesday, 25 December 2012

手动移动dalvik-cache到sd-ext分区

警告:该操作非常危险,错误的操作可能会引起手机变砖,在开始前,请确认手机至少具备50%以上的电力。
部分第三方的手机ROM已经具备该功能,在执行本文中的命令前,请检查 /sd-ext/ 目录中是否已经存在dalvik-cache目录。如果有,则无需进行以下操作。
提示:本操作已忽略先决条件,基于Oxygen 2.1.2进行(HTC Desire,S-OFF),请自行检查是否具备Android SDK开发环境,ADB Shell,以及busybox。
上一篇博文中,叙述了我的手机内置存储紧缺的问题,当时采取了删除部分应用的办法来解决。
不过,由于Android实际上是基于Linux系统的,在安装了Busybox,并且对存储卡进行ext2/3/4分区后,可以通过创建一个链接 将data分区中的dalvik-cache连接到sd-ext分区上,并将data分区中的dalvik-cache移动到sd-ext上。
在开始前,需要将手机引导到Recovery环境下,然后执行以下步骤:
1.检查/data和/sd-ext是否已经挂载:
df –h
Filesystem Size Used Available Use% Mounted on
/dev/block/mtdblock3 90.0M 88.1M 1.9M 98% /system
/dev/block/mtdblock5 337.6M 299.5M 38.2M 89% /data
/dev/block/mtdblock4 10.0M 1.1M 8.9M 11% /cache
/dev/block/mmcblk0p2 629.9M 437.6M 160.3M 73% /sd-ext
如果没有看到 /data 或 /sd-ext ,则说明需要手动挂载,一般情况下,在Recovery里可以直接挂载。
如果看到了 /data 和 /sd-ext 目录,则可以继续。
2.检查sd-ext分区空间是否够用:
首先,先查询 dalvik-cache 目录大小:
cd /data
du -s * | sort –n
1 app
1 app-private
2 dontpanic
2 lost+found
4 local
4 property
4 secure
15 backup
42 anr
46 misc
505 system
135462 dalvik-cache
161988 data
结果显示dalvik-cache占用了135462KB的空间(约为132MB左右)
对比第一步命令所得出的空间,目前sd-ext分区还有160MB左右的空间,因此足够稍后的操作了。
警告:如果空间不足,请不要继续,否则会引起灾难性故障!如果坚持继续,请关机并取出存储卡,备份所有数据后对存储卡进行重新分区。
3.复制dalvik-cache到sd-ext分区:
cp -a /data/dalvik-cache /sd-ext/
警告:该复制过程不会有提示,请勿按Ctrl+C终止复制或拔出数据线,否则可能会变砖!
执行该命令后没有提示,完成后会回到提示符,但是可以运行该命令来检查是否复制完成:
ls /sd-ext/
app app-private dalvik-cache
如果已经存在dalvik-cache目录,则说明复制成功,下面,需要删除手机内存原有的dalvik-cache,并创建链接:
4.删除原有dalvik-cache并创建到/sd-ext/的dalvik-cache链接:
首先是删除:
rm –r /data/dalvik-cache
删除过程也不会有任何提示,耐心等待。回到提示符后,就可以创建链接了:
ln -s /sd-ext/dalvik-cache /data/dalvik-cache
切记不要弄错顺序,第一个是 /sd-ext/ 目录的,第二个才是 /data/ 目录的。
命令运行后,也不会有任何提示,执行以下命令检查是否已经创建成功:
ls /data/ –l
drwxrwxr-x 1 system system 2048 May 14 16:26 anr
lrwxrwxrwx 1 root root 11 May 14 15:50 app -> /sd-ext/app
lrwxrwxrwx 1 root root 19 May 14 15:50 app-private -> /sd-ext/app-private
drwx—— 1 system system 2048 May 15 12:55 backup
lrwxrwxrwx 1 root root 20 May 15 12:53 dalvik-cache -> /sd-ext/dalvik-cache
drwxrwx–x 1 system system 2048 May 14 22:42 data
drwxr-x— 1 root log 2048 May 14 15:50 dontpanic
drwxrwx–x 1 shell shell 2048 May 14 15:50 local
drwxrwx— 1 root root 2048 May 14 15:50 lost+found
drwxrwx–t 1 system misc 2048 May 15 12:54 misc
drwx—— 1 root root 2048 May 15 09:24 property
drwx—— 1 system system 2048 May 14 15:50 secure
drwxrwxr-x 1 system system 2048 May 15 13:02 system
如上面的内容,如果是 dalvik-cache –> /sd-ext/dalvik-cache ,就说明创建成功了。
我们可以用df命令检查一下/data/分区是否多出了空余空间:
df -h
Filesystem Size Used Available Use% Mounted on
/dev/block/mtdblock3 90.0M 88.1M 1.9M 98% /system
/dev/block/mtdblock5 337.6M 168.5M 169.2M 50% /data
/dev/block/mtdblock4 10.0M 1.1M 8.9M 11% /cache
/dev/block/mmcblk0p2 629.9M 571.3M 26.7M 96% /sd-ext
现在 /data/ 分区已经有50%的剩余空间了,而存储卡则缩减到了4%,不过还有26MB的可用空间,应该没什么问题。
最后,重启手机即可完成全部操作。