分享

把swap放进手机内存里,完美开机自启,解决运存不足问题

 yeanlau 2012-03-25
手机发帖,敬请谅解

不知道大家有没有这样的情况,比如进入Rootexplore,想安装一个软件,点击以后就开始安装了,等到提示软件安装完毕,点击“确定”后,Rootexplore没有回到安装软件前的那个目录,而是自动重启了,屏幕下又显现出来“RE浏览器已获最高权限”这样的字样。还有比如在安卓市场下软件,安装后安卓市场也会自动重启。

有这种情况很正常,以前我的手机刚
刷过的时候还好,只要使用一段时间后就会出现这种情况。这就说明系统剩余运行内存不足了,系统会自动关闭后台进程来运行新的程序。也有的朋友QQ一挂后台就掉线,UC一挂后台再进就回到主页面了,这都说明你的系统剩余运行内存不足,后台的QQ,UC等等被系统杀掉了。这种情况很蛋疼,真的很蛋疼!

怎么才能增加手机的运存呢?相信大家的第一反应就是做swap。我在论坛看过很多Swap教程,方法几乎都是把Swap做到内存卡上去,偶尔看个不是做到内存卡上的还不能开机自启,开机后需要手动加载swap。在我还是小白的时候,我也跟风把swap做到了内存卡上,但是我的内存卡是C2的,读取速度是在很让我蛋疼。把swap做到了内存卡上后,每次系统在读swap的时候总让我感觉已经死机了..

看到这里也许你对手机已经失去信心了,别急,现在开始说正题。大家知道cliq的自带ROM是512M的,但是刷完机后查看手机可用存储时显示的却是200M左右。这是因为手机显示的可用存储仅仅是指/data目录的容量。手机的512M存储不是完全给了/data目录的,还有/system,/cache目录等,这几个目录加在一起的容量才是512M。但是经我观察发现,/system目录和/data目录使用比较充分,而/cache目录存在很大的浪费。一般情况下/cache目录剩余容量在80M-100M左右。另外一点,手机内存的读取速度和内存卡读速我觉得没有可比性,比如你把一个软件装到手机内存里,另一个在内存卡里,这两个软件哪个运行快我想大家都知道。所以,一个想法就很自然的应运而生了:把swap文件放到手机内存里!

相信很多做过swap的朋友都有一种一味的追求swap容量大的心理:有的把swap做到256M,甚至512M的。我可以很负责的告诉你,swap并不是越大越好!为什么呢?要回答这个问题,首先简单的向大家介绍一下swap虚拟内存的原理:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。太大的swap空间会造成系统以为有巨大的内存空间而毫不节制的想要把数据存进swap中,从而导致系统一直在做memory swap,进而拖慢系统响应速度。用过swapper 2的同学都知道要设置一个swappiness,他的作用就是当实际内存低于这个值的时候就进行交换,在/proc/sys/vm/下面就有一个swappiness文件,内容不多只有一个数字而已,不信的话可以自己去看一看!

但是以往的教程是把swap做到内存卡上的,卡的质量有好有坏,把swap做到卡上无疑是坑了那些内存卡不好的朋友。所以今天我给介绍大家一种方法,就是把swap做到手机内存里。手机内存的读取速度和内存卡实在没有可比性,现在我在手机内存里做了64M的swap,手机的运行速度真的有很大提升,和不做swap真的是天壤之别!好东西不敢独享,所以今天放一个教程出来给大家,希望大家支持!
----------------------------------------------------------------------------------------------------------------------------
步骤:
1.将附件解压,把CreatIMG.sh复制到手机里,修改权限为可执行(/system或/data或/cache都可以,但不是/sdcard,而且你要注意这些目录的剩余容量够不够你做swap)。
PS:我已经做了一个64M的swap.img文件,在下面附件里,大家可以直接下载解压使用。
2.点击执行CreatIMG.sh脚本,十几秒后系统就会在Cache目录下生成64M的swap.img文件。
PS:下载我做的64M的swap.img文件的童鞋把swap.img放到cache目录下,修改权限为可执行,以上两步就可以省略了!
3.把06userinit复制到\system\etc\init.d\目录下,修改权限为可执行。目的是让手机开机自动  加载swap.img文件为swap。
4.重启即可生效。可打开超级终端输入free命令查看是否已加载swap.
----------------------------------------------------------------------------------------------------------------------------
文件代码说明:
由于Android下不能像linux一样,直接使用交换文件所以我们可以这样写代码,把swapfile文件虚拟成设备分区loop7,然后将设备分区loop7创建为交换区,再启用交换分区即可!
以下是CreatIMG.sh的代码:
mount -o remount,rw /cache;                                 →加载cache分区,将cache属性设置成“可读写”swapoff /dev/block/loop7;dd if=/dev/zero of=/cache/swap.img bs=1024 count=64000;    →创建swap.img文件,文件大小为64000K,即64M,可更改
以下是06userinit的代码:
mount -o remount,rw /cache;                                 →加载cache分区,将cache属性设置成“可读写”losetup /dev/block/loop7 /cache/swap.img;                   →将swap.img文件虚拟成设备分区loop7mkswap /dev/block/loop7;                                    →将设备分区loop7创建为交换区swapon /dev/block/loop7;                                    →启用交换分区\system\etc\init.d目录里面的文件是开机自启脚本,比如00banner,01sysctl,02mkswap,03firstboot等等,就是在播放开机动画的时候系统依次运行这些脚本,从而达到开启服务的目的。系统会按照每个脚本前面的数字来运行脚本,所以大家应该猜到06userinit的意思了吧。就是系统会在开机时第六个运行userinit脚本,从而达到开机自动挂载swap.img文件的目的。这样swap才是真正的开机服务文件,就是在开机动画那段时间系统就已经自动加载swap了。省去了朋友们开机后手动挂载swap的麻烦。---------------------------------------------------------------------------------------------------------------------------
PS:1.cache目录是可以修改的。      用写字板打开这两个脚本文件,把cache改成你swap文件的目录就行。      比如手机内存的data目录,也就是软件安装的目录。      也可以改成手机内存system目录,也就是系统目录。   
2.swap.img的大小也是可以修改的      用写字板打开CreatIMG.sh,count=64000这个数字是可以修改的,但是请不要改太大。----------------------------------------------------------------------------------------------------------------------------
挂载swap后测试结果:
1.用RE安装软件后RE不重启。
2.用安卓市场安装软件后安卓市场不重启。
3.QQ登陆挂后台后玩愤怒的小鸟,2小时后重新进入QQ,没有掉线。
4.UC进入安卓网挂后台后玩愤怒的小鸟,重新进入UC,没有返回主页。
5.飞信登陆挂后台后玩愤怒的小鸟,重新进入飞信,没有掉线。
6.运行“地牢猎人2”后挂后台,登陆QQ聊天5分钟,退出QQ重新进入“地牢猎人2”,没有重启。
7.系统卡顿的现象明显改观。
下载地址:64Mswap:
http://u./file/clqmm0jq
开机自启脚本:
http://u./file/e6kwfksl
说了这么多,想必大家有点心动了吧,那就请你试一试,还是那句话:大家好才是真的好!还有一句:谁用谁知道!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多