路由器(Router)是連接兩個或多個網(wǎng)絡(luò)的硬件設(shè)備,在網(wǎng)絡(luò)間起網(wǎng)關(guān)的作用,是讀取每一個數(shù)據(jù)包中的地址然后決定如何傳送的專用智能性的網(wǎng)絡(luò)設(shè)備,路由器最主要的功能為實現(xiàn)信息的轉(zhuǎn)送。 將路由器作下載器有時會遇到內(nèi)存居高不下,需要添加虛擬內(nèi)存做后援。一般虛擬內(nèi)存設(shè)為32M 或64M即可,再大沒有意義,拖慢速度。如果實在不明白此腳本的功能,何須介意,不必強(qiáng)開。
按照下面的教程,先開啟路由器的SSH和JFFS功能。
一、軟配置:
1)登錄路由器,進(jìn)入【系統(tǒng)管理】設(shè)置頁面
2)進(jìn)入【系統(tǒng)設(shè)置】選項,打開JFFS2和SSH功能
3)下拉到底,應(yīng)用設(shè)置后,重啟路由器生效。

4)下載WinSCP (點(diǎn)我下載 密碼:6q52)
5)輸入路由器IP,SCP協(xié)議,用戶名、密碼登錄

6)進(jìn)入路由器主目錄/

7)進(jìn)入 /jffs/scripts/目錄

8)新建文件

9)文件名sdaswap,注意更改編碼格式為UTF-8,否則后面會提示無此文件。

10)選擇UTF-8編碼,然后將下面腳本代碼復(fù)制到編輯器,并保存
#!/bin/sh R_BOLD="[31m[1m" G_BOLD="[32m[1m" BOLD="[33m[1m" NORM="[0m" INFO="$BOLD Info: $NORM" ERROR="$BOLD *** Error: $NORM" INPUT="$BOLD => $NORM" SWAP_FILE=`nvram get apps_swap_file` SWAP_SIZE=`nvram get apps_swap_size` i=1 cd /tmp echo -e "$INFO This script will guide you through the swap installation." echo -e "$INFO Script modifies "swap" folder only on the chosen drive," echo -e "$INFO Looking for available partitions..." for mounted in `/bin/mount |awk '{if($0 ~/mnt/){ print $3}}'` ; do echo -e "$G_BOLD [$i] --> $mounted $NORM" eval mounts$i=$mounted i=`expr $i + 1` done if [ $i == "1" ] ; then echo -e "$ERROR $R_BOLD No partitions available. Exiting...$NORM" exit 1 fi echo -en "$INPUT $BOLD Please enter partition number or 0 to exit $NORM $BOLD[0-`expr $i - 1`]$NORM: " read partitionNumber if [ "$partitionNumber" == "0" ] ; then echo -e $INFO Exiting... exit 0 fi if [ "$partitionNumber" = "" ] || [ "`echo $partitionNumber|sed 's/[0-9]//g'`" != "" ] ; then echo -e "$ERROR $R_BOLD Invalid arguments! Exiting...$NORM" exit 1 fi if [ "$partitionNumber" -gt `expr $i - 1` ] ; then echo -e "$ERROR $R_BOLD Invalid partition number! Exiting...$NORM" exit 1 fi eval entPartition=$mounts$partitionNumber echo -e "$INFO $G_BOLD $entPartition $NORM selected." APPS_INSTALL_PATH=$entPartition/swap case "$1" in start) mem_size=`free |awk '$0 ~/Swap/{print $4}'` pool_size=`df |awk '{if($0 ~"'$entPartition'") {print $4}}'` if [ $pool_size -gt $SWAP_SIZE ]; then [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH echo -e "$INFO Creating $APPS_INSTALL_PATH folder..." mkdir -p $APPS_INSTALL_PATH echo -en "$INFO Swap size is [$BOLD$SWAP_SIZE$NORM],changed:c $BOLD" read answer if [ "$answer" = "" ] then { echo -e "$INFO Swap size was not changed" } else { if [ "$answer" != "" ] && [ "`echo $answer|sed 's/[0-9]//g'`" = "" ] && [ $answer -lt $pool_size ] then { SWAP_SIZE=$answer echo -en "$INFO Swap size was changed $BOLD[$SWAP_SIZE]$NORM " } else { echo -e "$ERROR $R_BOLD Invalid arguments $NORM" exit 1 } fi } fi swap_count=`expr $SWAP_SIZE / 1000 - 1` echo -e "$INFO dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count" dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count echo -e "$INFO mkswap $APPS_INSTALL_PATH/$SWAP_FILE" mkswap $APPS_INSTALL_PATH/$SWAP_FILE echo -e "$INFO $G_BOLD swapon $APPS_INSTALL_PATH/$SWAP_FILE $NORM" swapon $APPS_INSTALL_PATH/$SWAP_FILE echo -e "**********************************************************" echo -e " ${G_BOLD}Swap:$NORM Total($G_BOLD$(free |grep -A1 "Swap" |awk '{print $2}')$NORM) Used($G_BOLD$(free |grep -A1 "Swap" |awk '{print $3}')$NORM) Free($G_BOLD$(free |grep -A1 "Swap" |awk '{print $4}')$NORM)" echo -e "**********************************************************" fi echo -e "$INFO Create boot entry, y? :c " read yor if [ "$yor" = "y" ] then { [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] && sed -i 'N;/ .*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start [ ! -e "/jffs/scripts/services-start" ] && echo "#!/bin/sh" > /jffs/scripts/services-start [ `grep "#!/bin/sh" /jffs/scripts/services-start |wc -l` -lt 1 ] && sed -i '1i#!/bin/sh' /jffs/scripts/services-start sed -i '1asleep 30' /jffs/scripts/services-start sed -i '2aswapon '$APPS_INSTALL_PATH'/'$SWAP_FILE'' /jffs/scripts/services-start chmod 755 /jffs/scripts/services-start echo -e "$INFO $G_BOLD Boot entry is created $NORM" } else { echo -e "$INFO $G_BOLD Boot entry was not created,Exiting $NORM" exit 1 } fi ;; stop) [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] && sed -i 'N;/ .*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH echo -e "**********************************************************" echo -e " ${G_BOLD}Swap:$NORM Total($G_BOLD$(free |grep -A1 "Swap" |awk '{print $2}')$NORM) Used($G_BOLD$(free |grep -A1 "Swap" |awk '{print $3}')$NORM) Free($G_BOLD$(free |grep -A1 "Swap" |awk '{print $4}')$NORM)" echo -e "**********************************************************" ;; *) exit 1 ;; esac
11)在sdaswap文件右擊鼠標(biāo),屬性。設(shè)置為0755權(quán)限 (該權(quán)限是可讀寫、執(zhí)行)
到此可以關(guān)閉WinSCP軟件。

二、執(zhí)行命令
1)進(jìn)入路由器的軟件中心 Software Center 安裝shellinabox命令工具
輸入用戶名和密碼登錄

2)運(yùn)行命令行:/jffs/scripts/sdaswap start
注意“start”的參數(shù)不可少.

3)腳本自動掃描路由器外接的USB設(shè)備,列出所有存儲類設(shè)備供選擇使用哪個USB硬盤作為虛擬內(nèi)存的載體。
支持NTFSEXT2,3,4
注意:建議使用高速U盤或者SSD硬盤,虛擬內(nèi)存類似于普通內(nèi)存,需要多次高速讀寫,整體速度取決于USB設(shè)備的速度。這里可以選擇虛擬內(nèi)存的大小,默認(rèn)為33000=32M,可以設(shè)置為64M=>65500。如果沒有特殊需求,建議使用默認(rèn)大小。并不是越大越好,更大的內(nèi)存容量 可能會拖慢系統(tǒng)速度。

4)加載成功后,自動加載Swap的信息。Total是總緩存,Used 已使用,F(xiàn)ree未使用
如果Total顯示為0證明沒有加載成功或者已關(guān)閉虛擬內(nèi)存功能。
最后一行是提示是否加載到開機(jī)啟動項。y回車是添加到啟動項。
5)停用虛擬內(nèi)存功能命令:/jffs/scripts/sdaswap stop
掃描USB設(shè)備,選擇要停用哪個設(shè)備的虛擬內(nèi)存。Swap: Total顯示0,證明已經(jīng)停用虛擬內(nèi)存

下面是增加虛擬內(nèi)存前后的結(jié)果圖


本文可以幫助您基本地設(shè)置和管理您的路由器。
|