KoolShare

 找回密码
 立即注册
搜索
查看: 149857|回复: 204

[虚拟内存] 【进阶类教程】为路由器梅林固件增加虚拟内存 2018/7/14

  [复制链接]

117

主题

3032

帖子

1万

积分

版主

bbis

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

精华
2
门户文章
1
魔力币
7359
魔法值
0
注册时间
2015-11-1

DDOS纪念勋章AC68UR6300R7000那些年参与勋章R6400

发表于 2016-4-18 22:04:03 | 显示全部楼层 |阅读模式
本帖最后由 bbis 于 2018-7-17 12:48 编辑

将路由器作下载器有时会遇到内存居高不下,需要添加虚拟内存做后援。
一般虚拟内存设为32M 或64M即可,或按需要设置。


按照下面的教程,先开启路由器的SSH和JFFS功能。

一、软配置:


1)登录路由器,进入【系统管理】设置页面2)进入【系统设置】选项,打开JFFS2和SSH功能
3)下拉到底,应用设置后,重启路由器生效。

1.png


4)下载WinSCP  (点我下载  密码:6q52)

5)输入路由器IP,SCP协议,用户名、密码登录

2.jpg


6)进入路由器主目录/
3.jpg

7)进入 /jffs/scripts/目录
4.jpg

8)新建文件
5.jpg

9)文件名sdaswap
6.jpg

10)选择UTF-8编码,然后将下面脚本代码复制到编辑器,并保存



  1. #!/bin/sh
  2. R_BOLD="\033[31m\033[1m"
  3. G_BOLD="\033[32m\033[1m"
  4. BOLD="\033[33m\033[1m"
  5. NORM="\033[0m"
  6. INFO="$BOLD Info: $NORM"
  7. ERROR="$BOLD *** Error: $NORM"
  8. INPUT="$BOLD => $NORM"

  9. SWAP_FILE=`nvram get apps_swap_file`
  10. SWAP_SIZE=`nvram get apps_swap_size`
  11. i=1
  12. cd /tmp

  13. swap_info(){
  14.        echo -e "**********************************************************"
  15.        echo -e ""
  16.        echo -e "  ${G_BOLD}虚拟内存:$NORM  总计($G_BOLD$(free |grep -A1 "Swap" |awk   '{print $2}')$NORM)  已用($G_BOLD$(free |grep -A1 "Swap" |awk   '{print $3}')$NORM)  可用($G_BOLD$(free |grep -A1 "Swap" |awk   '{print $4}')$NORM)"
  17.        echo -e ""
  18.        echo -e "**********************************************************"
  19. }


  20. case "$1" in
  21.   start)
  22. echo -e "$INFO 此脚本文件指导创建虚拟内存"
  23. echo -e "$INFO 默认创建的虚拟内存文件存放在 \"swap\" 文件夹并不可改变"
  24. echo -e "$INFO 检查可用的挂载分区......"
  25. for mounted in `/bin/mount |awk '{if($0 ~/mnt/){ print $3}}'` ; do
  26.   echo -e "$G_BOLD [$i] --> $mounted $NORM"
  27.   eval mounts$i=$mounted
  28.   i=`expr $i + 1`
  29. done

  30. if [ $i == "1" ] ; then
  31.   echo -e "$ERROR $R_BOLD 未找到挂载磁盘,执行退出。$NORM"
  32.   exit 1
  33. fi

  34. echo -en "$INPUT $BOLD 请输入磁盘分区序号或键入 0 退出程序 $NORM\n$BOLD[0-`expr $i - 1`]$NORM: "
  35. read partitionNumber
  36. if [ "$partitionNumber" == "0" ] ; then
  37.   echo -e $INFO 执行退出...  
  38.   exit 0
  39. fi
  40. if [ "$partitionNumber" = "" ] || [ "`echo $partitionNumber|sed 's/[0-9]//g'`" != "" ] ; then  
  41.   echo -e "$ERROR $R_BOLD 无效的参数,执行退出...$NORM"
  42.   exit 1
  43. fi
  44. if [ "$partitionNumber" -gt `expr $i - 1` ] ; then
  45.   echo -e "$ERROR $R_BOLD 分区序号无效,执行退出...$NORM"
  46.   exit 1
  47. fi

  48. eval entPartition=\$mounts$partitionNumber
  49. echo -e "$INFO 已选择$G_BOLD $entPartition $NORM磁盘分区"
  50. APPS_INSTALL_PATH=$entPartition/swap


  51. mem_size=`free |awk '$0 ~/Swap/{print $4}'`
  52. pool_size=`df |awk '{if($0 ~"'$entPartition'") {print $4}}'`
  53. if [ $pool_size -gt $SWAP_SIZE ]; then
  54.         [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE
  55.         [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH
  56.         echo -e "$INFO 创建虚拟内存文件夹: $APPS_INSTALL_PATH "
  57.         mkdir -p $APPS_INSTALL_PATH
  58.         echo -en "$INFO 默认虚拟内存大小: [$BOLD$SWAP_SIZE$NORM],新文件大小:\c $BOLD"
  59.         read answer
  60.         if [ "$answer" = "" ]
  61.         then
  62.         {
  63.         echo -e "$INFO 虚拟内存大小未改变"
  64.         }
  65.         else
  66.         {
  67.              if [ "$answer" != "" ] && [ "`echo $answer|sed 's/[0-9]//g'`" = "" ] && [ $answer -lt $pool_size ]
  68.              then
  69.              {
  70.                   SWAP_SIZE=$answer                                                                  
  71.                   echo -en "$INFO 虚拟内存大小已改变: $BOLD[$SWAP_SIZE]$NORM \n"
  72.              }
  73.             else
  74.             {
  75.                   echo -e "$ERROR $R_BOLD 无效的参数! $NORM"
  76.                   exit 1
  77.             }
  78.             fi
  79.         }
  80.         fi
  81.        swap_count=`expr $SWAP_SIZE / 1000 - 1`
  82.        echo -e "$INFO dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
  83.        dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
  84.        echo -e "$INFO 已创建虚拟内存文件: $APPS_INSTALL_PATH/$SWAP_FILE"
  85.        mkswap $APPS_INSTALL_PATH/$SWAP_FILE
  86.        echo -e "$INFO $G_BOLD 虚拟内存路径:$APPS_INSTALL_PATH/$SWAP_FILE $NORM"
  87.        swapon $APPS_INSTALL_PATH/$SWAP_FILE

  88.            swap_info

  89.        fi
  90.        echo -e "$INFO 是否创建启动项? y? :\c "
  91.        read yor
  92.        if [ "$yor" = "y" ]
  93.        then
  94.        {
  95.        [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  96.        sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  97.        [ ! -e "/jffs/scripts/services-start" ] && echo "#!/bin/sh" > /jffs/scripts/services-start
  98.        [ `grep "#!/bin/sh" /jffs/scripts/services-start |wc -l` -lt 1 ] && sed -i '1i#!\/bin\/sh' /jffs/scripts/services-start
  99.        sed -i '1asleep 30' /jffs/scripts/services-start
  100.        sed -i '2aswapon '$APPS_INSTALL_PATH'/'$SWAP_FILE'' /jffs/scripts/services-start
  101.            chmod 755 /jffs/scripts/services-start
  102.        echo -e "$INFO $G_BOLD开机启动项已创建! $NORM"
  103.        }
  104.        else
  105.        {
  106.        echo -e "$INFO $G_BOLD开机启动项未创建成功,执行退出... $NORM"
  107.        exit 1
  108.        }
  109.        fi
  110.        ;;
  111.   stop)
  112. echo -e "$INFO 请选择要卸载虚拟内存的文件路径"
  113. echo -e "$INFO 检查可用的挂载分区......"
  114. for mounted in `/bin/mount |awk '{if($0 ~/mnt/){ print $3}}'` ; do
  115.   echo -e "$G_BOLD [$i] --> $mounted $NORM"
  116.   eval mounts$i=$mounted
  117.   i=`expr $i + 1`
  118. done

  119. if [ $i == "1" ] ; then
  120.   echo -e "$ERROR $R_BOLD 未找到挂载磁盘,执行退出。$NORM"
  121.   exit 1
  122. fi

  123. echo -en "$INPUT $BOLD 请输入磁盘分区序号或键入 0 退出程序 $NORM\n$BOLD[0-`expr $i - 1`]$NORM: "
  124. read partitionNumber
  125. if [ "$partitionNumber" == "0" ] ; then
  126.   echo -e $INFO 执行退出...  
  127.   exit 0
  128. fi
  129. if [ "$partitionNumber" = "" ] || [ "`echo $partitionNumber|sed 's/[0-9]//g'`" != "" ] ; then  
  130.   echo -e "$ERROR $R_BOLD 无效的参数,执行退出...$NORM"
  131.   exit 1
  132. fi
  133. if [ "$partitionNumber" -gt `expr $i - 1` ] ; then
  134.   echo -e "$ERROR $R_BOLD 分区序号无效,执行退出...$NORM"
  135.   exit 1
  136. fi

  137. eval entPartition=\$mounts$partitionNumber
  138. echo -e "$INFO 已卸载$G_BOLD $entPartition/swap/$SWAP_FILE $NORM虚拟内存文件"
  139. APPS_INSTALL_PATH=$entPartition/swap

  140.        [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  141.        sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  142.        [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE                        
  143.        [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH      
  144.            swap_info
  145.        ;;

  146.   info)
  147.        swap_info
  148.        ;;

  149.   *)
  150.   exit 1
  151.   ;;
  152. esac

复制代码

文件版下载: sdaswap.zip (1.73 KB, 下载次数: 1975)

评分

1

查看全部评分

نگو نه ،بگو بله .

16

主题

106

帖子

402

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
353
魔法值
0
注册时间
2016-4-26

DDOS纪念勋章

发表于 2016-5-3 17:31:00 | 显示全部楼层
这个教程很好.
等软件装的很多内存不够就用此招.

9

主题

96

帖子

2205

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1072
魔法值
10
注册时间
2015-8-4
发表于 2016-5-5 07:39:00 | 显示全部楼层
开机不能自启动啊...

9

主题

96

帖子

2205

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
1
魔力币
1072
魔法值
10
注册时间
2015-8-4
发表于 2016-5-5 07:40:18 | 显示全部楼层
shikixkokuto 发表于 2016-5-5 07:39
开机不能自启动啊...

好了...要等一会啊

11

主题

327

帖子

837

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
734
魔法值
0
注册时间
2016-2-27

DDOS纪念勋章

发表于 2016-5-17 10:03:13 | 显示全部楼层
花花绿绿的挺好看的

3

主题

94

帖子

239

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
220
魔法值
0
注册时间
2016-4-26
发表于 2016-5-17 13:08:41 | 显示全部楼层
多谢教程,6500v2迅雷远程下载总死机。。试试这个方法

2

主题

71

帖子

67

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
57
魔法值
0
注册时间
2016-5-18
发表于 2016-5-25 13:30:15 | 显示全部楼层
请问,设置这个虚拟内存的时候,外挂的硬盘需要格式化成特定模式不?

2

主题

29

帖子

27

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
22
魔法值
0
注册时间
2016-5-24
发表于 2016-5-26 09:11:40 | 显示全部楼层
这个教程真心不错!!赞一个

1

主题

20

帖子

155

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
151
魔法值
0
注册时间
2016-5-29
发表于 2016-6-2 15:06:17 | 显示全部楼层
大神,图全挂了。。

5

主题

44

帖子

110

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
98
魔法值
0
注册时间
2016-4-27
发表于 2016-6-6 13:42:50 | 显示全部楼层
楼主,弄完后路由显示如下,应该是成功了吧,没有重启路由。
Swap usage        0.00 / 126.99 MB

2

主题

21

帖子

76

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
71
魔法值
0
注册时间
2016-6-17
发表于 2016-6-19 18:05:17 | 显示全部楼层
图挂了,看不懂哦
个性签名

117

主题

3032

帖子

1万

积分

版主

bbis

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

精华
2
门户文章
1
魔力币
7359
魔法值
0
注册时间
2015-11-1

DDOS纪念勋章AC68UR6300R7000那些年参与勋章R6400

 楼主| 发表于 2016-6-19 21:01:18 | 显示全部楼层
mawzyo 发表于 2016-6-19 18:05
图挂了,看不懂哦

论坛抽风
نگو نه ،بگو بله .

3

主题

45

帖子

30

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
22
魔法值
0
注册时间
2016-6-16
发表于 2016-6-22 12:19:17 | 显示全部楼层
图挂了,看不懂啊!!!!!

3

主题

55

帖子

259

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
245
魔法值
0
注册时间
2016-8-4
发表于 2016-8-5 08:23:34 | 显示全部楼层
看不到图,有点晕

3

主题

55

帖子

259

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
245
魔法值
0
注册时间
2016-8-4
发表于 2016-8-8 10:57:52 | 显示全部楼层
设置之后貌似不起作用啊,始终占用为0

6

主题

95

帖子

261

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
236
魔法值
0
注册时间
2016-8-8
发表于 2016-10-12 02:09:19 | 显示全部楼层
图片是挂了吗……

14

主题

204

帖子

907

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
797
魔法值
0
注册时间
2016-10-8
发表于 2016-11-14 17:51:43 | 显示全部楼层
图全挂了,别的帖子图片都正常的

3

主题

134

帖子

397

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
367
魔法值
0
注册时间
2016-8-23
发表于 2016-12-16 13:26:36 | 显示全部楼层
为什么我查询的时候used总是0呢,是不是压根没有效果呢?

0

主题

23

帖子

186

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
183
魔法值
0
注册时间
2016-11-9
发表于 2016-12-27 15:14:13 | 显示全部楼层
图好像都挂了

25

主题

192

帖子

616

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
511
魔法值
0
注册时间
2016-5-30
发表于 2016-12-29 11:00:58 | 显示全部楼层
图都挂了lz。。。。

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2020-2-29 07:31 , Processed in 0.100077 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表