ホームルーターに追加のソフトウェアをインストールする方法(DD-WRT)
電子メール、ビットトレント、さらにはMySQLなどの追加機能を直接ルータに搭載したいと思ったことはありませんか。多分今あなたはできるよ。 How-To GeekがDD-WRTにOpkgソフトウェアをインストールする方法を詳しく説明します。.
Jean SpectorとAviad Ravivによるイメージ
まだ読んでいない場合は、このシリーズの以前の記事を確認してください。
- あなたのホームルーターをDD-WRTでスーパーパワードルーターに変える
- DD-WRTでPixelservを使って広告を削除する方法
あなたがそれらのトピックに精通していると仮定して、読んでください。このガイドはもう少し技術的なので、初心者はルーターを改造するときに注意する必要があります。.
苦難
私は最近、DD-WRTのブランドを変更したバージョンが付属している新しいBuffalo WZR-HP-AG300Hを購入しました。このルータはUSBポートを持っているという事実のために、私はすぐにHDを接続し、“ Optware、The Right Way”ウィキガイドを使おうとしました。残念ながら、私が手に入れたルーターはAtherosベースで、そのWikiページのスクリプトはそれをサポートしていないことがすぐにわかりました。だから私は(いつものように)掘り始めて、Opkgを手動で動かす方法を説明することを目的としたいくつかのガイド(1、2、3、4)に出会いました。このガイドへの(Web上の他の情報源の中での)貢献は非常に貴重でしたが、いくつかの指示は(私見)単純なものではありません。たとえば、「lib」ファイルに「魚」という名前を付けたとしても、それをソースから入手する方法を教えないでください。また、LinuxでフォーマットされたHDまたは少なくとも1つのパーティション(実際には私がテストしたファームウェアでも動作しません)を利用する必要があります。だからこそ、私は、OpenWRT Opkgパッケージマネージャをそのようなルータ上で動作させるために、以下の簡潔でわかりやすく再現可能な手順を作成する必要性を感じました。.
更新:マウントパーティション機能は、17798アルファビルドのブランド変更バージョンに再導入されました。.
Opkgとは何ですか?
Opkgはapt / aptitudeやyumのようなパッケージマネージャです。これはIpkgパッケージマネージャの代わりとして機能し、以下のようなソフトウェアをインストールするために使用することができます:Transmission BitTorrentデーモン、ssmtp電子メール送信者、Knockdデーモン。 OpenWRTサイトから:
opkgユーティリティ(ipkg fork)は、ローカルパッケージリポジトリまたはインターネット上にあるものからOpenWrtパッケージをダウンロードしてインストールするために使用される軽量のパッケージマネージャです。.
Opkg
リポジトリ内のパッケージとの依存関係を解決しようとします - これが失敗した場合、エラーを報告し、そのパッケージのインストールを中止します。.
そのため、Opkgを使ってIpkgで行ったようなことを「家庭用ルーターからより多くの電力を解放する」ガイドにインストールすることができます。主な違いは、
- SSMTPとKnockdの例を示すために、あなたは本当に依存関係を手動で見つけ出さなければなりませんでした。これを手動で行う手順は面倒であり、それほど簡単ではありません。 Opkgはこれを自動的にします.
- 今度は 追加 交換するのではなく、適切なファームウェアの上にソフトウェアをインストールします。それを取り替えることは優秀なオタクの練習でしたが、それは疑う余地がありませんでした:危険、問題を起こしやすい、不可逆的およびすべてのルータ固有の最悪。言うまでもありませんが、これはもっと簡単で安全です。.
前提条件
このガイドを完成させるために、次の点に注意してください。
- 前述のように、このガイドは、Buffaloの「Pro」ファームウェアバージョン17135を使用して、Buffalo WZR-HP-AG300Hで作成およびテストされています。それは、同じバージョンまたはそれ以上のDD-WRTのバージョンを持つAtheros(ar71xx)ベースのルーターで機能するはずです。しかし、あなたの走行距離は非常に.
- あなたはそれを接続するためにWinSCPをインストールして使用するのと同様に、ルータ上でSSHを有効にする必要があるでしょう。これは、「DD-WRTでPixelservを使って広告を削除する方法」ガイドで説明されています。実際、そのガイドで説明されていることはすべてあなたができると仮定されます。.
- 端末を使ってルータに接続できる必要があります(SSHをお勧めします)。これを行う方法についてのいくつかのポインターはDD-WRTウィキにあります.
- JFFS用のスペースと基本セットアップ用に約4MBのフォーマット済みスペース。 JFFSスペースは前提条件であるだけでなく、ショーストッパーです。これは、あなたのルーターが少なくとも上記の4MBのポストフォーマットスペースを持っていないのであれば、このガイドからは実質的な利益を得ることができず、「あなたのホームルーターからさらにパワーを引き出す」のほうがよいでしょうファームウェアに直接Ipkgパッケージをインストールするか、手動でIpkgパッケージをインストールするためのガイド。 JFFSを有効にするための「DD-WRT上のPixelservで広告を削除する方法」ガイドの指示に従い、あなたが実際に持っているどのくらいの空き容量を見てください 後に フォーマットされている.
注意: たった2MBのセットアップスペースでこれを実行することは可能ですが、その後毎回手動で設定ファイルを指定しながら“ / etc”が読み書き可能になるという結果を失い、Opkgを呼び出さなければならないでしょう…。すっごくラメ…
割れることができます
この時点でJFFSを有効にして、SSH / WinSCPをルータに接続できるはずです。.
- ルーターへのターミナルセッションを開く.
- 作業する一時ディレクトリを作成します。
mkdir / tmp / 1
cd / tmp / 1
Ipkgを使ってOpkgをインストールする
パッケージマネージャとしてIpkgを置き換える予定ですが、Opkgインストールパッケージを手動でインストールするためにそれを使用します。.
- これを行うには、OpenWRTプロジェクトトランクからar71xxアーキテクチャ用のOpkgインストールパッケージをダウンロードします。
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
注1: これを書いている時点では、618が最新バージョンです。これは将来変更される可能性があるため、適宜調整してください。.
注2: このガイドを他のアーキテクチャでも動作させる唯一の違いは、Opkgインストーラをあなたのルータに適したアーキテクチャから入手することである可能性があります。. - Ipkgを起動して、Opkgを手動でインストールします。
ipkg install opkg_618-2_ar71xx.ipk
注意: あなたが望むなら、この方法で手動でリポジトリのすべてのパッケージをインストールすることができます。しかし、これはあなたがあなた自身で依存関係を解決しなければならないことを意味するでしょう…そしてその中で何が楽しいでしょう?
動的ライブラリファイル(“ lib”)の入手
Opkgを機能させるために必要な“ lib”ファイルは、OpenWRTディストリビューションの一部です。それらを入手するには、配布物の「ルートファイルシステム」からそれらを抽出する必要があります。.
- これを行うには、OpenWRTプロジェクトトランクから必要な「lib」を含むopenWRTディストリビューション用の最新の基本的な「ルートファイルシステム」をダウンロードします。
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz
- これを使って解凍します。
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
- これらの属性とシンボリックリンクを保持しながら、上で抽出した「rootfs」から「libs」ファイルをJFFSの「libs」ディレクトリにコピーします。
cp -Pp / tmp / 1 / lib / * / jffs / usr / lib /
注意: サブディレクトリが省略されているというメッセージが表示されます。 「lib」ファイル以外は何も必要ないので、これで問題ありません。これらのメッセージは無視してかまいません。.
LD_LIBRARY“ PATH”を修正します。
ルーターに「インストール」したばかりの共有ライブラリ(libs)を探す場所を指定する必要があります。これを実行する必要があります。 前 ファームウェアに付属のもの.
- これを行うには、(今のところ)LD_LIBRARY環境変数を手動で設定し、新しいlibファイルをコピーした場所が「PATH」の最初の場所になるようにします。
LD_LIBRARY_PATHをエクスポートする= / jffs / usr / lib:$ LD_LIBRARY_PATH
読み書き可能な「/ etc」
“ / etc”をJFFSにコピーしてから、通常の“ / etc”マウントポイントを作成し、それをポイントします。そうすることで、「/ etc」が読み書き可能になり(これは私が個人的に諦めたり、7年も待っていた)、この振る舞いを期待するパッケージを正しく機能させることができるので、両方とも可能性の世界を開くでしょう。.
- / etcを格納するディレクトリを作成します。
mkdir -p / jffs / geek / etc
- すべてのサブディレクトリ、ファイル属性、およびシンボリックリンクを保持しながら、「/ etc」全体を再帰的にコピーします。.
cp -a / etc / * / jffs / geek / etc /
- 手動で(今のところ)JFFSディレクトリに「/ etc」ディレクトリを「バインドマウント」します。
mount -o bind / jffs / geek / etc / / etc /
Optwareディレクトリを設定します(“ / opt”)
OpenWRTのOpkgは、ルーターのファームウェアが構築されたときに使われることを期待しています。その時点では、FileSystemはまだルーター上にはなく、したがってまだ変更される可能性があるので、FileSystem上のどの場所にインストールしても問題はありません。 Opkg設定ファイルがインストールするパッケージをFileSystemの「ルート」(/)に指定するのはそのためです。しかし、私たちはOpkgを使っています 後に ファームウェアはルータ上に構築されインストールされています。ファイルシステムのルートを読み書き可能に変更することはできないため、すべてのインストールを「/ opt」の下にインストールするように指定します。ただし、現在「/ opt」はルーターのファームウェア上の読み取り専用の場所も指しています。これを克服するために、 "/ opt"を読み書き可能なJFFSを指すようにします。.
- これを行うには、Optwareパッケージを格納するディレクトリを作成します。
mkdir -p / jffs / opt
- 手動で(現時点では) "/ opt"ディレクトリをJFFSディレクトリに "バインドマウント"します。
mount -o bind / jffs / opt / / opt /
注:このガイドの範囲外ですが, 上級ユーザーは、このマウントポイントを変更してHDを指すようにしたい場合があります。.
Opkg設定ファイルを調整する
Opkg設定ファイルは、Opkgがデフォルトでそれを探す場所(「/ etc」)にして、「/ opt」にインストールするように調整する必要があります。.
- これを行うには、Opkgパッケージによってインストールされたopkg設定ファイルを読み書き可能な「/ etc」の場所に移動します。
mv /jffs/etc/opkg.conf / etc /
- Optwareのインストール先を「root」(/)ではなく「/ opt」に変更します。.
これを行うには、「vi」エディタまたはWinSCPを使用して「/ etc /」に移動し、「opkg.conf」ファイルの内容を次のようにします。vi /etc/opkg.conf
次のように見せてください。
src / gzスナップショットhttp://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root / opt
dest ram / tmp
lists_dir ext / var / opkg-lists
オプションoverlay_root / overlay注意: RAMの中ではなくJFFS上の場所を指すように「lists_dir」ディレクティブを変更することができます。これはリストを更新する手間を省きますが、(前回からルータを再起動した場合)追加のソフトウェアをインストールする前に、約1.5MBのJFFSスペースを失い、その侵食をさらに悪化させることになります。.
ハローベイビー
Opkgがupdateとlistsコマンドを発行することで動作していることを確認できるはずです。.
- すべてうまくいけば、Opkgリストはエラーなく更新されていることがわかり、次のステップでスクリプトを実装する準備が整いました。
opkgの更新opkgリスト
- リポジトリで利用可能なパッケージの探索に時間をかけてください… .
スタートアップスクリプト
これで、ルータの起動時に必要なマウントとパスのすべてが自動的に行われるようにする必要があります。そのために、この初期化geek-initスクリプトを作成しました。.
- ダウンロードして解凍し、「/ jffs / geek / etc /」の下に置きます。 (WinSCPでこれを行うことを検討してください).
- WinSCPでそのプロパティを調べるか、または次のコマンドを実行して、スクリプトを実行可能にします。
chmod + x /jffs/geek/etc/geek-init.sh
- WebGUIを使用して、ルータの起動時にスクリプトを実行します。 [管理] - > [コマンド]の下のテキストボックスに、次のように入力します。
/jffs/geek/etc/geek-init.sh web-gui
そして「Save Startup」をクリックしてください。.
タイヤを蹴る
すべてうまくいけば、ルータを再起動してもOpkgパッケージマネージャを使用できるはずです。それはアプリケーションを更新、一覧表示、インストールすることです.
何らかの理由で最近DD-WRTのビルドから省略された「netstat」コマンドをインストールすることによって、すべてがうまくいっていることをテストしましょう。これを実行する前に、ターミナルでnetstatコマンドを実行すると、シェルからのエラー(“ -sh:netstat:not found”)が表示されていることがわかります。.
- あなたの最初のステップは、リポジトリから最新のパッケージリストを入手するために、常にOpkgリストを更新することです。
opkgのアップデート
- どのパッケージに“ netstat”コマンドが含まれているのかわからない場合は、次のコマンドを使って結果を絞り込むことができます。.
opkgリスト| grep netstat
- そして今、「netstat」を使ってインストールします。
opkg install net-tools-netstat
そして今、あなたがもう一度netstatコマンドを実行するとき、それはうまくいきます…きちんとした? :)
この方法を使ってソフトウェアパッケージをインストールして設定する将来の記事まで、あなたの指先で今膨大な量のソフトウェアを探っているオタクの楽しみがたくさんあるかもしれません。.
そのようなマシンが仮想的に不可能であるならば、それは論理的に有限の可能性でなければなりません。ですから、どれほど正確にそれがあり得ないかを考え出し、その数値を有限のありそうもないジェネレータに送り込み、それを本当に熱いお茶を一杯飲んでそれをオンにすることだけです………本当に嫌いです、「Smart-Ass」です.