VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2553|回复: 4

[原创] Android启用swap文件sh脚本

[复制链接]
发表于 2014-3-22 22:08:14 | 显示全部楼层 |阅读模式
本帖最后由 bxc1995 于 2014-3-22 22:22 编辑

上次手机用swapper2差点变砖,可是还是想试试手机开启虚拟内存。
于是想弄清swapper2的原理,今天研究了一天,终于写出来了android下开启虚拟内存的sh~

设备要求:
android + root
android终端 + busybox
*最好能用bash

直接上图:
刷机精灵截图20140322215528.png
刷机精灵截图20140322215939.png
刷机精灵截图20140322220055.png
刷机精灵截图20140322220204.png

脚本代码:
注意,换行符需为unix格式才能执行~
  1. #!/system/bin/bash

  2. sfpath=/mnt/sdcard/swapfile
  3. b_nrf=0

  4. if [ $# -eq 0 ] ; then
  5.     echo -e "AnSwap Information"
  6.     echo -e "Version: 1.0"
  7.     echo -e "Author: CserSoft"
  8.     echo -e "E-Mail: csersoft@qq.com"
  9.     echo -e "*** Be careful using this software! ***\n\n"
  10.     echo -e "AnSwap Usage: \n"
  11.     echo -e "answap -on <Swap File Size , Units of MB> [-d : Do not remove files] [Swap File Path]"
  12.     echo -e "answap -off [-d : Do not remove files] [Swap File Path]\n"
  13.     echo -e "Note: [Swap File Path] default is /mnt/sdcard/swapfile\n\n"
  14.     echo -e "AnSwap Example: \n"
  15.     echo -e "answap -on 128"
  16.     echo -e "answap -on 128 -d"
  17.     echo -e "answap -off"
  18.     echo -e "answap -off -d\n"
  19.     echo -e "answap -on 128 /mnt/sdcard/vmfile"
  20.     echo -e "answap -on 128 -d /mnt/sdcard/vmfile"
  21.     echo -e "answap -off /mnt/sdcard/vmfile"
  22.     echo -e "answap -off -d /mnt/sdcard/vmfile"
  23.     exit 2
  24. fi

  25. echo -n "Check: busybox ... "
  26. if [ ! -x "/system/bin/busybox" ] && [ ! -x "/system/xbin/busybox" ] ; then
  27.     echo "Failed!"
  28.     echo "Error: 'busybox' Do not exist or can not be executed !"
  29.     echo "Solve: Copy 'busybox' to the '/system/bin' or '/system/xbin' directory !"
  30.     exit 3
  31. else
  32.     echo "OK!"
  33. fi

  34. echo -n "Check: root ... "
  35. if [ `id -u $USER` -eq 0 ] ; then
  36.     echo "OK!"
  37. else
  38.     echo "Failed!"
  39.     echo "Error: Please run $0 as root !"
  40.     exit 4
  41. fi

  42. function EnableSwap()
  43. {
  44.     if [[ ! $1 =~ ^[[:digit:]]*$ ]] ; then
  45.         echo "Error: '$1' Is not legitimate digital ! "
  46.         exit 6
  47.     fi
  48.    
  49.     if [ "$1" -lt 32 ] || [ "$1" -gt 512 ] ; then
  50.         echo "Error: Swap File Size Should Range From 32 MB To 512 MB !"
  51.         exit 7
  52.     fi
  53.    
  54.     local sfs=$[$1*1024]
  55.    
  56.     if [[ ! $sfpath =~ ^((/?[a-zA-Z0-9._-]+(/[a-zA-Z0-9._-]+)*)|/)$ ]] ; then
  57.         echo "Error: Illegal path '$sfpath' ! "
  58.         exit 8
  59.     fi
  60.    
  61.     if [ -e "$sfpath" ] ; then
  62.         if [ -d "$sfpath" ] ; then
  63.             echo "Error: '$sfpath' Already exists , And is a directory !"
  64.             exit 9
  65.         elif [ -f "$sfpath" ] ; then
  66.             echo "Prompt: '$sfpath' Already exists"
  67.             if [ $b_nrf -eq 0 ] ; then
  68.                 echo "Do you want to remove it and continue anyway ?"
  69.                 echo "Prompt: Please enter 'y' or other :\n"
  70.                 read -n 1 selprm
  71.                 if [[ $selprm == "y" ]] ; then
  72.                     rm -f "$sfpath"
  73.                     if [ -f "$sfpath" ] ; then
  74.                         echo "Error: Remove File '$sfpath' Failed !"
  75.                         exit 10
  76.                     fi
  77.                 else
  78.                     echo "User abort the operation !"
  79.                     exit 11
  80.                 fi
  81.             fi
  82.         else
  83.             echo "Error: '$sfpath' Already exists , Unknown File Type !"
  84.             exit 12
  85.         fi
  86.     fi
  87.    
  88.     echo "Swap File Size is: $sfs KBytes"
  89.     echo "Swap File Path is: '$sfpath'"
  90.    
  91.     if [ $b_nrf -eq 0 ] ; then
  92.         dd if=/dev/zero of="$sfpath" bs=1024 count=$sfs
  93.         sleep 1s
  94.         if [ ! -f "$sfpath" ] ; then
  95.             echo "Error: Create File $sfpath Failed !"
  96.             exit 13
  97.         fi
  98.     fi
  99.    
  100.     mkswap "$sfpath"
  101.     sleep 1s
  102.     if [ $? -ne 0 ] ; then
  103.         echo -e "\nError: 'mkswap' Failed ! "
  104.         exit 14
  105.     fi
  106.    
  107.     swapon "$sfpath"
  108.     sleep 1s
  109.     if [ $? -ne 0 ] ; then
  110.         echo -e "\nError: 'swapon' Failed ! "
  111.         exit 15
  112.     else
  113.         echo -e "\n'swapon' Succeed ! "
  114.         echo "Use the 'free' command to view detailed ! "
  115.     fi
  116. }

  117. function DisableSwap()
  118. {
  119.     if [[ ! $sfpath =~ ^((/?[a-zA-Z0-9._-]+(/[a-zA-Z0-9._-]+)*)|/)$ ]] ; then
  120.         echo "Error: Illegal path '$sfpath' ! "
  121.         exit 16
  122.     fi
  123.    
  124.     if [ ! -f "$sfpath" ] ; then
  125.         echo "Error: '$sfpath' Does not exist ! "
  126.         exit 17
  127.     fi
  128.    
  129.     swapoff "$sfpath"
  130.     sleep 1s
  131.     if [ $? -ne 0 ] ; then
  132.         echo -e "\nPrompt: 'swapoff' Failed ! "
  133.     fi
  134.    
  135.     if [ $b_nrf -eq 0 ] ; then
  136.         rm -f "$sfpath"
  137.         sleep 1s
  138.         if [ -f "$sfpath" ] ; then
  139.             echo -e "\nPrompt: Remove File '$sfpath' Failed ! "
  140.         else
  141.             echo -e "\n'swapoff' Succeed ! "
  142.             echo "Use the 'free' command to view detailed ! "
  143.             return 0
  144.         fi
  145.     fi
  146.     echo -e "\n'swapoff' Succeed ! "
  147.     echo "Use the 'free' command to view detailed ! "
  148. }

  149. if [[ $1 == "-on" ]] ; then
  150.     if [[ $3 == "-d" ]] ; then
  151.         b_nrf=1
  152.         if [[ $4 != "" ]] ; then
  153.             sfpath=$4
  154.         fi
  155.     else
  156.         if [[ $3 != "" ]] ; then
  157.             sfpath=$3
  158.         fi
  159.     fi
  160.     EnableSwap $2
  161.     exit 0
  162. elif [[ $1 == "-off" ]] ; then
  163.     if [[ $2 == "-d" ]] ; then
  164.         b_nrf=1
  165.         if [[ $3 != "" ]] ; then
  166.             sfpath=$3
  167.         fi
  168.     else
  169.         if [[ $2 != "" ]] ; then
  170.             sfpath=$2
  171.         fi
  172.     fi
  173.     DisableSwap
  174.     exit 0
  175. else
  176.     echo "Error: Invalid argument of '$1'"
  177.     exit 5
  178. fi
复制代码
第一次写sh脚本,网上抄了不少代码

点评

……!!!  发表于 2014-3-22 23:13

本帖被以下淘专辑推荐:

头像被屏蔽
发表于 2014-3-24 00:18:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-24 01:36:49 | 显示全部楼层
lekj 发表于 2014-3-24 00:18
我最想把他重新分?.................data ?硬是分太小了......可?.....


在系统下不行。
用第三方recovery好像可以,不过一般的第三方recovery分data区大小也是多选1的。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-3-24 17:12:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-24 20:31:17 | 显示全部楼层
lekj 发表于 2014-3-24 17:12
是啊,  有个 onda 平板, 明明 32g , 可硬是把 data 分成 2g...刷好系统好就已经占了 6~700m 了, 用着用着 ...

那只能改第三方recovery,不过貌似难度比较大。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2020-6-4 06:33

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表