Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android手機 >> Android刷機教程 >> 三星刷機 >> 自動開啟掛載虛擬內存,無須其他swap軟件!

自動開啟掛載虛擬內存,無須其他swap軟件!

編輯:三星刷機

  首先簡單的向大家介紹一下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卡備份,數據丟失本人不負責!
然後大家需要這個工具包
   
attach 自動掛載swap.rar (235.58 KB)



下載下來解壓,讓手機和www.shuleba.com電腦正常連接,然後雙擊包中的“點擊我開啟swap腳本.bat”文件既可自動開機掛載swap空間虛擬內存,然後把你的swapper2卸載了,重新開機在模擬終端中使用free命令查看,第二行就是你的swap虛擬內存使用情況!
1.jpg 

++++++++++++++++++++分割線+++++++++++++++++++++
下面是進階篇,看不懂的就算了,也當本人裝十三吧!
  1. #!/system/bin/sh
     
  2. #重新掛載system讀寫
     
  3. echo "preparing system..."
     
  4. mount -o remount,rw /system      
     
  5.                            
     
  6. #檢測以前是否存在 /system/bin/swap
     
  7. echo "checking for swap installation..."   
     
  8. if [ -e /system/bin/swap ];
     
  9.         then
     
  10.                 echo "swap already enabled, exiting.."
     
  11.                 mount -o remount,ro /system
     
  12.                 exit
     
  13. fi
     
  14. #創建/system/bin/swap文件
     
  15. echo "checking for swap partition"           
     
  16. if [ -e /dev/block/mmcblk0p2 -a -e /dev/block/mmcblk0p3 ] ;   
     
  17.   then
     
  18.     touch /system/bin/swap
     
  19.                 echo '#!/system/bin/sh' >> /system/bin/swap
     
  20.                 echo '' >> /system/bin/swap
     
  21.                 echo 'bprop=/system/build.prop' >> /system/bin/swap
     
  22.                 echo '' >> /system/bin/swap
     
  23.                 echo 'swapon=$(cat $bprop | egrep -c -i -o ro.config.swap=1)' >> /system/bin/swap
     
  24.                 echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p3 ]; then' >> /system/bin/swap
     
  25.                 echo '  echo '60' >/proc/sys/vm/swappiness' >> /system/bin/swap
     
  26.                 echo '  swapon /dev/block/mmcblk0p3' >> /system/bin/swap
     
  27.                 echo 'fi' >> /system/bin/swap
     
  28.                 echo 'exit 0' >> /system/bin/swap
     
  29. fi  
     

  30.  
  31. system讀寫權限
     
  32. if [ "`ls /sbin|grep -q recovery;echo $?`" = "0" ];     
     
  33. then
     
  34.     mount -a > /dev/null
     
  35.     recoverymode=y
     
  36. else
     
  37.     mount -o rw,remount /system
     
  38.     recoverymode=n
     
  39. fi
     

  40.  
  41. #設置開機腳本
     
  42. echo "preparing startup scripts..."           
     
  43. echo '' >> /system/etc/init.local.rc
     
  44. echo '' >> /system/etc/init.local.rc
     
  45. echo '###Swap - Safe to Delete: Start ###' >> /system/etc/init.local.rc
     
  46. echo "" >> /system/etc/init.local.rc
     
  47. echo 'service swap /system/bin/swap' >> /system/etc/init.local.rc
     
  48. echo '        user root' >> /system/etc/init.local.rc
     
  49. echo '        group shell' >> /system/etc/init.local.rc
     
  50. echo '        disabled' >> /system/etc/init.local.rc
     
  51. echo '        oneshot' >> /system/etc/init.local.rc
     
  52. echo '' >> /system/etc/init.local.rc
     
  53. echo 'on property:init.svc.bootanim=running   # to correct timin' >> /system/etc/init.local.rc
     
  54. echo '        start swap' >> /system/etc/init.local.rc
     
  55. echo '' >> /system/etc/init.local.rc
     

  56.  
  57. #設置swap權限
     
  58. chmod 777 /system/bin/swap
     
  59. chown root:shell /system/bin/swap
     

  60.  
  61. #添加 /system/build.prop系統默認
     
  62. echo '' >> /system/build.pro
     
  63. echo 'ro.config.swap=1' >> /system/build.prop
     

  64.  
  65. #重新掛載system只讀
     
  66. sleep 1                                                   
     
  67. mount -o ro,remount /system
     
  68. echo "done."
     
  69. exit
復制代碼
swap文件是真正的開機服務文件,就是在開機動畫時運行這個服務達到開啟虛擬內存的效果
build.prop文件主要是和一些系統默認設置相關,做過ROM的肯定都知道這個文件
init.local.rc開機進程文件,控制開機動畫,開機音樂等內容
簡簡單單的給腳本添加了一些注釋,能看懂則就能看懂,看不懂則也看不懂
原理就是通過運行這個腳本來創建swap服務文件,設置在開機播放開機動畫的時候運行swap服務,達到開啟虛擬內存的目的!
++++++++++++++++++++分割線+++++++++++++++++++++
有些機油問我如果只有兩個分區(一個fat32一個swap)怎麼辦,呵呵,很簡單,改三行代碼就OK啦!
第一行:

  1. if [ -e /dev/block/mmcblk0p2 -a -e /dev/block/mmcblk0p3 ] ;
復制代碼 改成

  1. if [ -e /dev/block/mmcblk0p2 ] ;
復制代碼 第二行

  1. echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p3 ]; then' >> /system/bin/swap
復制代碼 改成

  1. echo 'if [ "$swapon" = "1" -a -e /dev/block/mmcblk0p2 ]; then' >> /system/bin/swap
復制代碼 第三行

  1.                 echo '  swapon /dev/block/mmcblk0p3' >> /system/bin/swap
復制代碼 改成

  1.                 echo '  swapon /dev/block/mmcblk0p2' >> /system/bin/swap
復制代碼
除此之外還可以利用這個原理來達到開啟開機音樂的目的,腳本可能不同,但是原理一樣!
++++++++++++++++++++分割線+++++++++++++++++++++
如果你沒有分區不想使用swap的話,在sd卡上創建一個swap文件也不失為一個辦法,但是效果肯定入swap分區理想,下面就給大家幾行代碼,還是那樣說,看懂就能看懂,不會也不要問了!

  1. 命令free查看系統內 Swap 分區大小
     
  2. free
     

  3.  
  4. #創建一個 Swap 文件
     
  5. cd /sdcard
     
  6. mkdir swap   
     
  7. cd swap   
     
  8. dd if=/dev/zero of=swapfile bs=1024 count=64000
     
  9. #swap文件大小1024X64000字節大小(大約64M)
     

  10.  
  11. #把生成的文件轉換成 Swap 文件
     
  12. mkswap swapfile
     

  13.  
  14. #激活 Swap 文件
     
  15. swapon swapfile
     

  16.  
  17. 再次查看結果
     
  18. 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卡備份,數據丟失本人不負責!
然後大家需要這個工具包
   
attach 自動掛載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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved