web-dev-qa-db-ja.com

dd-wrtを使用してルーターに永続ストレージがありますか

私はこれの初心者です。 dd-wrtをルーターにインストールして構成しました。

dd-wrtバージョン:DD-WRT v24-sp2(08/07/10)ルーターバージョン:D-Link DIR 600

その中に帯域幅使用量監視スクリプトを設定しようとしています。

再起動時に削除されることなく、ルーターに詳細を保存する方法はありますか?

つまり、取得できる永続ストレージの種類はありますか?

ありがとう
J

6
Jijoy

nvram(つまり、不揮発性RAM)が必要です。

nvram show            # list all variables
nvram get name        # get variable
nvram set name=value  # set variable
nvram unset name      # delete variable
nvram commit          # save changes to flash
8
Mika Fischer

ミカが言ったように:nvramは永続ストレージの名前です。残念ながら、それはnotファイルシステムです。 DD-WRTのファイルシステム(少なくとも小さいもの)は、squashfsとramfsの組み合わせであり、起動時にnvramに格納されている値から入力されます。

管理->コマンドに移動すると、スクリプトを入力して、カスタムスクリプト(ページの下部)として保存できます。これらがすべてこの単一のスクリプトに含まれている場合は、この機能を使用していくつかのユースケースを実装できます。私はこのようなものを作りました:

case "$1" in
  wificontrol)
    #here is code which turns off wlan after 30 mins of inactivity
    ;;

  wifion|wifi)
    wlanIF=ra0
    ifconfig $wlanIF up
    touch /tmp/wlan-online0
    ;;

  *)
    echo "$0 {wificontrol|wifi[on]}"
esac

次に、コマンドラインでスクリプトを実行します。

/tmp/custom.sh wifion

そしてcronジョブとして(管理->管理):

*/4 * * * * root /tmp/custom.sh wificontrol

私は知っています、これはあまり良い解決策ではありませんが、それは機能します。私のv24-sp2(rev 14896)でテスト済み

6
Daniel Alder

通常、使用できるスペースがあります。たとえば、次の回答を読んでください: https://stackoverflow.com/questions/451638/list-free-flash-space-on-wrt54gl-with-dd-wrt-v24sp1-firmare 。私のWAG200Gでは、目的のためにmtd2またはmtd3をフォーマットしました。ただし、使用できるフラッシュブロックを確認する必要があります。そうしないと、デバイスをブリックに変えることができます。

1
Gigamegs

使用できる小さなスペースがあります。ルーターのスペックを調べていなかったので、正確にはわかりません。ファイルシステムに書き込んでいるcronジョブを設定すると、そうではありませんか? SSHで接続し、/ varディレクトリをチェックアウトします。 USBポートがある場合は、そこにログファイルを配置できます。ログが特定のサイズになったらログを削除するようにスクリプトで確認してください。そうしないと、ルーターが停止します。

これはあなたの興味を引くかもしれません http://www.dd-wrt.com/wiki/index.php/Useful_Scripts またはこのフォーラムスレッド。 http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81432

1
atrueresistance

JFFSを有効にする

リンクには2つの指示があります。

  • web-GUIインターフェースの使用
  • コマンドラインインターフェイスの使用

私の場合、コマンドラインインターフェイスのみが機能しました。 Web-GUIインターフェイスはそうではありませんでした。


変更したコマンドラインインターフェイスの手順

これらのコマンドは、sshを介してシェルで実行するのが最も簡単です。 sshを有効にする必要があります。

まず、jffsがすでにマウントされているかどうかを確認します。

mount

マウントされたjffsパーティションは次のようになります。

$ mount
...
/dev/mtdblock/4 on /jffs type jffs2 (rw)

$ df -h
Filesystem                Size      Used Available Use% Mounted on
...
/dev/mtdblock/4           4.3M    260.0K      4.0M   6% /jffs

利用できない場合は、DD-WRTにフォーマットして作成するように指示します。

これらを実行する前に、おそらくDD-WRT構成をバックアップする必要があります

nvram set jffs_mounted=1
nvram set enable_jffs2=1
nvram set sys_enable_jffs2=1
nvram set clean_jffs2=1
nvram set sys_clean_jffs2=1
nvram commit
reboot

再起動後、ファイルが失われないように、ブートごとの再フォーマットの設定を解除します

nvram set clean_jffs2=0
nvram set sys_clean_jffs2=0
nvram commit

でテストする

date | tee /jffs/test
cat /jffs/test
0