首先簡單的向大家介紹一下swap虛擬內存的原理,可簡單描述為:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。那這樣是不是swap空間越大越好呢,根據我的經驗,可能不是這樣喔!太大的 swap 空間會造成 kernel 以為有巨大的內存空間而毫不節制的想要把數據捉進內存中,從而導致 kernel 一直在做 memory swap,進而連帶拖慢系統響應時間。用過swapper 2的同學都知道要設置一個swappiness,他的作用就是當實際內存低於這個值的時候就進行交換,在/proc/sys/vm/下面就有一個swappiness文件,內容不多只有一個數字而已,不信的話可以自己去看一看!
上面的看不懂無所謂,嘿嘿,就當是我裝十三使用的,下面才是正題!
首先大家需要有一個swap分區(本人的GT540數據,其他手機根據自身情況設置)
手機進入recovery,advanced(高級)— Partition SD Card 對SD卡分區(分區功能就在這裡,看這裡,看這裡)
注意:
1、swap分區大小建議64或者128自己看情況(本人128M)
2、進行這一步之前請首先做好SD卡備份,數據丟失本人不負責!
然後大家需要這個工具包
自動掛載swap.rar (235.58 KB)
下載下來解壓,讓手機和www.shuleba.com電腦正常連接,然後雙擊包中的“點擊我開啟swap腳本.bat”文件既可自動開機掛載swap空間虛擬內存,然後把你的swapper2卸載了,重新開機在模擬終端中使用free命令查看,第二行就是你的swap虛擬內存使用情況!
++++++++++++++++++++分割線+++++++++++++++++++++
下面是進階篇,看不懂的就算了,也當本人裝十三吧!
- #!/system/bin/sh
- #重新掛載system讀寫
- echo "preparing system..."
- mount -o remount,rw /system
-
- #檢測以前是否存在 /system/bin/swap
- echo "checking for swap installation..."
- if [ -e /system/bin/swap ];
- then
- echo "swap already enabled, exiting.."
- mount -o remount,ro /system
- exit
- fi
- #創建/system/bin/swap文件
- echo "checking for swap partition"
- if [ -e /dev/block/mmcblk0p2 -a -e /dev/block/mmcblk0p3 ] ;
- then
- touch /system/bin/swap
- echo '#!/system/bin/sh' >> /system/bin/swap
- echo '' >> /system/bin/swap
- echo 'bprop=/system/build.prop' >> /system/bin/swap
- echo '' >> /system/bin/swap
- echo 'swapon=$(cat $bprop | egrep -c -i -o ro.config.swap=1)' >> /system/bin/swap
- echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p3 ]; then' >> /system/bin/swap
- echo ' echo '60' >/proc/sys/vm/swappiness' >> /system/bin/swap
- echo ' swapon /dev/block/mmcblk0p3' >> /system/bin/swap
- echo 'fi' >> /system/bin/swap
- echo 'exit 0' >> /system/bin/swap
- fi
- system讀寫權限
- if [ "`ls /sbin|grep -q recovery;echo $?`" = "0" ];
- then
- mount -a > /dev/null
- recoverymode=y
- else
- mount -o rw,remount /system
- recoverymode=n
- fi
- #設置開機腳本
- echo "preparing startup scripts..."
- echo '' >> /system/etc/init.local.rc
- echo '' >> /system/etc/init.local.rc
- echo '###Swap - Safe to Delete: Start ###' >> /system/etc/init.local.rc
- echo "" >> /system/etc/init.local.rc
- echo 'service swap /system/bin/swap' >> /system/etc/init.local.rc
- echo ' user root' >> /system/etc/init.local.rc
- echo ' group shell' >> /system/etc/init.local.rc
- echo ' disabled' >> /system/etc/init.local.rc
- echo ' oneshot' >> /system/etc/init.local.rc
- echo '' >> /system/etc/init.local.rc
- echo 'on property:init.svc.bootanim=running # to correct timin' >> /system/etc/init.local.rc
- echo ' start swap' >> /system/etc/init.local.rc
- echo '' >> /system/etc/init.local.rc
- #設置swap權限
- chmod 777 /system/bin/swap
- chown root:shell /system/bin/swap
- #添加 /system/build.prop系統默認
- echo '' >> /system/build.pro
- echo 'ro.config.swap=1' >> /system/build.prop
- #重新掛載system只讀
- sleep 1
- mount -o ro,remount /system
- echo "done."
- exit
復制代碼
swap文件是真正的開機服務文件,就是在開機動畫時運行這個服務達到開啟虛擬內存的效果
build.prop文件主要是和一些系統默認設置相關,做過ROM的肯定都知道這個文件
init.local.rc開機進程文件,控制開機動畫,開機音樂等內容
簡簡單單的給腳本添加了一些注釋,能看懂則就能看懂,看不懂則也看不懂
原理就是通過運行這個腳本來創建swap服務文件,設置在開機播放開機動畫的時候運行swap服務,達到開啟虛擬內存的目的!
++++++++++++++++++++分割線+++++++++++++++++++++
有些機油問我如果只有兩個分區(一個fat32一個swap)怎麼辦,呵呵,很簡單,改三行代碼就OK啦!
第一行:
- if [ -e /dev/block/mmcblk0p2 -a -e /dev/block/mmcblk0p3 ] ;
復制代碼
改成
- if [ -e /dev/block/mmcblk0p2 ] ;
復制代碼
第二行
- echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p3 ]; then' >> /system/bin/swap
復制代碼
改成
- echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p2 ]; then' >> /system/bin/swap
復制代碼
第三行
- echo ' swapon /dev/block/mmcblk0p3' >> /system/bin/swap
復制代碼
改成
- echo ' swapon /dev/block/mmcblk0p2' >> /system/bin/swap
復制代碼
除此之外還可以利用這個原理來達到開啟開機音樂的目的,腳本可能不同,但是原理一樣!
++++++++++++++++++++分割線+++++++++++++++++++++
如果你沒有分區不想使用swap的話,在sd卡上創建一個swap文件也不失為一個辦法,但是效果肯定入swap分區理想,下面就給大家幾行代碼,還是那樣說,看懂就能看懂,不會也不要問了!
- 命令free查看系統內 Swap 分區大小
- free
- #創建一個 Swap 文件
- cd /sdcard
- mkdir swap
- cd swap
- dd if=/dev/zero of=swapfile bs=1024 count=64000
- #swap文件大小1024X64000字節大小(大約64M)
- #把生成的文件轉換成 Swap 文件
- mkswap swapfile
- #激活 Swap 文件
- swapon swapfile
- 再次查看結果
- free
復制代碼
首先簡單的向大家介紹一下swap虛擬內存的原理,可簡單描述為:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。那這樣是不是swap空間越大越好呢,根據我的經驗,可能不是這樣喔!太大的 swap 空間會造成 kernel 以為有巨大的內存空間而毫不節制的想要把數據捉進內存中,從而導致 kernel 一直在做 memory swap,進而連帶拖慢系統響應時間。用過swapper 2的同學都知道要設置一個swappiness,他的作用就是當實際內存低於這個值的時候就進行交換,在/proc/sys/vm/下面就有一個swappiness文件,內容不多只有一個數字而已,不信的話可以自己去看一看!
上面的看不懂無所謂,嘿嘿,就當是我裝十三使用的,下面才是正題!
首先大家需要有一個swap分區(本人的GT540數據,其他手機根據自身情況設置)
手機進入recovery,advanced(高級)— Partition SD Card 對SD卡分區(分區功能就在這裡,看這裡,看這裡)
注意:
1、swap分區大小建議64或者128自己看情況(本人128M)
2、進行這一步之前請首先做好SD卡備份,數據丟失本人不負責!
然後大家需要這個工具包
自動掛載swap.rar (235.58 KB)
下載下來解壓,讓手機和www.shuleba.com電腦正常連接,然後雙擊包中的“點擊我開啟swap腳本.bat”文件既可自動開機掛載swap空間虛擬內存,然後把你的swapper2卸載了,重新開機在模擬終端中使用free命令查看,第二行就是你的swap虛擬內存使用情況!
三星 Nexus S刷MIUI ROM最新圖文刷機教程 : www.quzhuo.com/article/html/79.html