打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【进阶类教程】为路由器梅林固件增加虚拟内存 补图
将路由器作下载器有时会遇到内存居高不下,需要添加虚拟内存做后援。
一般虚拟内存设为32M 或64M即可,或按需要设置。


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

一、软配置:


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




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

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




6)进入路由器主目录/


7)进入 /jffs/scripts/目录


8)新建文件


9)文件名sdaswap


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. echo -e "$INFO 此脚本文件指导你创建虚拟内存"
  14. echo -e "$INFO 默认创建的虚拟内存文件存放在 \"swap\" 文件夹并不可改变"

  15. echo -e "$INFO 检查可用的挂载分区......"
  16. for mounted in `/bin/mount |awk '{if($0 ~/mnt/){ print $3}}'` ; do
  17.   echo -e "$G_BOLD [$i] --> $mounted $NORM"
  18.   eval mounts$i=$mounted
  19.   i=`expr $i + 1`
  20. done

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

  25. echo -en "$INPUT $BOLD 请输入磁盘分区序号或键入 0 退出程序 $NORM\n$BOLD[0-`expr $i - 1`]$NORM: "
  26. read partitionNumber
  27. if [ "$partitionNumber" == "0" ] ; then
  28.   echo -e $INFO 执行退出...  
  29.   exit 0
  30. fi
  31. if [ "$partitionNumber" = "" ] || [ "`echo $partitionNumber|sed 's/[0-9]//g'`" != "" ] ; then  
  32.   echo -e "$ERROR $R_BOLD 无效的参数,执行退出...$NORM"
  33.   exit 1
  34. fi
  35. if [ "$partitionNumber" -gt `expr $i - 1` ] ; then
  36.   echo -e "$ERROR $R_BOLD 分区序号无效,执行退出...$NORM"
  37.   exit 1
  38. fi

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

  42. case "$1" in
  43.   start)

  44. mem_size=`free |awk '$0 ~/Swap/{print $4}'`
  45. pool_size=`df |awk '{if($0 ~"'$entPartition'") {print $4}}'`
  46. if [ $pool_size -gt $SWAP_SIZE ]; then
  47.         [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE
  48.         [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH
  49.         echo -e "$INFO 创建虚拟内存文件夹: $APPS_INSTALL_PATH "
  50.         mkdir -p $APPS_INSTALL_PATH
  51.         echo -en "$INFO 默认虚拟内存大小: [$BOLD$SWAP_SIZE$NORM],新文件大小:\c $BOLD"
  52.         read answer
  53.         if [ "$answer" = "" ]
  54.         then
  55.         {
  56.         echo -e "$INFO 虚拟内存大小未改变"
  57.         }
  58.         else
  59.         {
  60.              if [ "$answer" != "" ] && [ "`echo $answer|sed 's/[0-9]//g'`" = "" ] && [ $answer -lt $pool_size ]
  61.              then
  62.              {
  63.                   SWAP_SIZE=$answer                                                                  
  64.                   echo -en "$INFO 虚拟内存大小已改变: $BOLD[$SWAP_SIZE]$NORM \n"
  65.              }
  66.             else
  67.             {
  68.                   echo -e "$ERROR $R_BOLD 无效的参数! $NORM"
  69.                   exit 1
  70.             }
  71.             fi
  72.         }
  73.         fi
  74.        swap_count=`expr $SWAP_SIZE / 1000 - 1`
  75.        echo -e "$INFO dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
  76.        dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
  77.        echo -e "$INFO 已创建虚拟内存文件: $APPS_INSTALL_PATH/$SWAP_FILE"
  78.        mkswap $APPS_INSTALL_PATH/$SWAP_FILE
  79.        echo -e "$INFO $G_BOLD 虚拟内存路径:$APPS_INSTALL_PATH/$SWAP_FILE $NORM"
  80.        swapon $APPS_INSTALL_PATH/$SWAP_FILE
  81.        echo -e "**********************************************************"
  82.         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)"
  83.        echo -e "**********************************************************"
  84.        fi
  85.        echo -e "$INFO 是否创建启动项? y? :\c "
  86.        read yor
  87.        if [ "$yor" = "y" ]
  88.        then
  89.        {
  90.        [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  91.        sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  92.        [ ! -e "/jffs/scripts/services-start" ] && echo "#!/bin/sh" > /jffs/scripts/services-start
  93.        [ `grep "#!/bin/sh" /jffs/scripts/services-start |wc -l` -lt 1 ] && sed -i '1i#!\/bin\/sh' /jffs/scripts/services-start
  94.        sed -i '1asleep 30' /jffs/scripts/services-start
  95.        sed -i '2aswapon '$APPS_INSTALL_PATH'/'$SWAP_FILE'' /jffs/scripts/services-start
  96.            chmod 755 /jffs/scripts/services-start
  97.        echo -e "$INFO $G_BOLD开机启动项已创建! $NORM"
  98.        }
  99.        else
  100.        {
  101.        echo -e "$INFO $G_BOLD开机启动项未创建成功,执行退出... $NORM"
  102.        exit 1
  103.        }
  104.        fi
  105.        ;;
  106.   stop)
  107.        [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  108.        sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  109.        [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE                        
  110.        [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH      
  111.        echo -e "**********************************************************"
  112.         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)"
  113.        echo -e "**********************************************************"
  114.        ;;
  115.   *)
  116.   exit 1
  117.   ;;
  118. esac
复制代码

文件版下载:
sdaswap.zip(1.66 KB, 下载次数: 696)

11)在sdaswap文件右击鼠标,属性。设置为0755权限 (该权限是可读写、执行)
到此可以关闭WinSCP软件。



二、执行命令

1)进入路由器的软件中心 Software Center 安装shellinabox命令工具
输入用户名和密码登录


2)运行命令行:/jffs/scripts/sdaswap start
注意“start”的参数不可少.


3)脚本自动扫描路由器外接的USB设备,列出所有存储类设备供选择使用哪个USB硬盘作为虚拟内存的载体。
支持NTFS\EXT2,3,4
注意:建议使用高速U盘或者SSD硬盘,虚拟内存类似于普通内存,需要多次高速读写,整体速度取决于USB设备的速度。这里可以选择虚拟内存的大小,默认为33000=32M,可以设置为64M=>65500。
如果没有特殊需求,建议使用默认大小。并不是越大越好,更大的内存容量 可能会拖慢系统速度。



4)加载成功后,自动加载Swap的信息。Total是总缓存,Used 已使用,Free未使用
如果Total显示为0证明没有加载成功或者已关闭虚拟内存功能。

最后一行是提示是否加载到开机启动项。y回车是添加到启动项。


5)停用虚拟内存功能命令:/jffs/scripts/sdaswap stop
扫描USB设备,选择要停用哪个设备的虚拟内存。Swap: Total显示0,证明已经停用虚拟内存



The end!
Ps:代码借鉴eyre0950的 【虚拟内存】修改自bbis的脚本,添加usb选择及内存大小

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
碾压全国99%的电脑 开机提速很简单
新入手RT-AC86U后更新S大改版梅林固件、官改固件的体会
[教程] 【虚拟内存】为路由器增加虚拟内存 SWAP(更新脚本)
家里网络越用越慢? 路由器也该做个SPA了
释放C盘空间的27招优化技巧-03
彻底解决智能设备 2.4G WiFi 经常掉线离线的问题 (华硕路由器/梅林固件设置)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服