NanoPi R2SへOpenWRTをインストール

公開 | 更新 

高速化とマルチコア向け設定

LuCiをしばらく触ってみた感触は、キビキビとしていて今まで使ってきたシングルコアルータとは全く異次元のレスポンスと安定性。このままでも申し分ないのですが、マルチコア向けの設定をいくつか試してみましょう。

まず、以前GL-AR750Sで試してパフォーマンス向上が図れたFlow Offloadingを有効にしてみます。メニューを NetworkFirewall と辿ったGeneral Settingsタブから。

図08.Flow Offloadingの有効化

図08.Flow Offloadingの有効化



次に、 NetworkInterface のGlobal network optionsタブにある、Packet Steering機能を有効にします。

図09.Packet Steeringの有効化

図09.Packet Steeringの有効化



これは、OpenWRTユーザガイドによると「Use every cpu to handle packet traffic」と記述がありました。

 

そして最後にマルチコアの各コアへ負荷分散を促してくれる、irqbalanceを導入します。こちらもOpenWRTユーザガイドに個別のページが用意されているので、導入も簡単です。

パッケージのインストール後、設定ファイルのを編集するか uci コマンドを発行して、irqbalanceが自動起動するように設定し、サービスを立ち上げます。

コア間で負荷分散する様子は /proc/interrupt を参照することで次のように確認できるのですが、テスト環境では導入前との違いがありませんでした。NanoPi R2Sを本格運用するようになったら、再検証してみるつもりです。

 

ここまで手を加えたところで、インターネットスピードテストを比較してみると、おそらくFlow Offloadingの働きにより、上下共に速度が上がりました。

図10.Speedtest 結果向上

図10.Speedtest 結果向上

USB給電ケーブルにはUSBテスターUM25Cを通して、その消費電力を測っていたのですが、WiFiインターフェイス未搭載なこともあり、このスピードテスト計測時でも、0.5A 2.8W程度しか消費していませんでした。

図11.スピードテスト時の消費電力

図11.スピードテスト時の消費電力

opkgでの一括更新

本機種に限らず、OpenWRTでパッケージをインストールするにつれ、手間に感じるのがその更新手段ではないでしょうか。

Linuxの多くのディストリビューションではパッケージ管理マネージャ(Debian系 apt など)から、一括でインストールされている複数のパッケージを更新することが可能です。

OpenWRTの opkg には同様にワンライナーで一括更新する方法が無いのか調べてみたところ、こちらのフォーラムで紹介されていました(Great Works!)。

早速、ワンライナーを左方から順に実行して、その仕組みを確認してみます。

尚、 opkgupgrade オプションが無いような古いOpenWRTでは、次のようにすれば良いようです。

 

デフォルトシェルをBashに

今まで使って来たフラッシュベースのOpenWRTではその性質上、シェルのコマンドヒストリhistoryが保持されないのは納得していましたが、今回は違います。シェルでhistoryを有効にする方法を調べてみると、

「OpenWRT標準シェルであるashはBusyBoxにより、提供されている。コマンドヒストリを有効にしたい場合は、自身で当該オプションを設定した状態でリコンパイル、インストールするしかない」

とあり、技量の問題はもちろん、後々のことも考えると明らかに非現実的です。

上記スレッドを読み進めてゆくと、Bashパッケージを導入してこれを標準シェルとするのが便利、との記述が目に留まったので早速試してみます。

 

パッケージのインストールを終えたら、Bashをログイン時の標準シェルにすべく、/etc/passwdファイルを編集します。

次に自分仕様に定義した .bashrc ファイルを /root/ へ配置します(無くても機能します)。

このファイルを読み込んでくれるように、 .bash_profile ファイルを生成します。

これでターミナルへ入り直せば標準シェルはBashに変わり、コマンドヒストリも有効になっているはずです。

 

上述のスレッドを更に読み進めると、この設定の以外な落とし穴が指摘されていました。

それは、sysupgrade時などで opkg で入れたパッケージが抜けてしまった状態では、ネイティブではないシェルを標準にしているとターミナルに入れなくなるというものでした。

実際にLuCiでBashパッケージを削除してから、ターミナルへ入ろうとすると弾き出されました。

そのスレッドの最後には解決策が提示されていて、起動時の自動起動スクリプト /etc/rc.local で、 /bin/bash の存在有無をチェックし、必要なら /etc/passwd を訂正するという方法でした。

これも実際にBashパッケージを抜いて試してみましたが、ターミナルへashでログインすることが出来ました(Great Works!)。

 

次回はOpenWRTの鬼門でもあるWiFiモジュールについて、NanoPi R2SのUSB2.0ポートに挿して使えるUSBドングルをいくつか試してみたいと思います。

 

created by Rinker
¥10,339 (2024/04/19 00:32:02時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA