ルータ用に一年前に買ったものの、じっくり取り組む時間無く「積み基板」化していた NanoPi R2S へ OpenWRT 21.02 をインストールして、マルチコアSoCで動かす OpenWRT の世界へ足を踏み入れます。
ハードウェア
2021年初めにOpenWRTの勉強用にと、淘寶でRMB199で購入したNanoPi R2Sはその後、既にシリーズ後継機種がいくつも発売されている現時点に於いても、価格は世界的な半導体不足等の影響を受けてか、RMB265と値上がりしたまま。
買ってから一年半も放置していた言い訳はさておき、基本仕様をまとめると次の通りです。
- CPU : Rockchip RK3328 (1.3GHz / 4Cores)
- RAM : DDR4 1GB
- Storage : micro SD
- Power : USB Type-C 5V2A
- Network : GbE x2 (うち1つはUSB3.0経由)
- USB : 2.0 x1
前モデルR1Sでは2つ目のGbEがUSB2.0であったために、その半分の速度も得られないという不評だったのを、今モデルで払拭した形になっています(実はR1Sも買いました)。
WiFiは内蔵していないので必要ならUSBドングルを挿すことになるのですが、USB2.0の最高伝送速度は理論値でも480Mbpsなので、頑張っても11ac初期の433Mbps程度にしかならない点を割り切る必要があります。
UNBOXING
金属筐体底面の保護シールを剥がすと+ネジが見えるので、これを外せば底面が開きますが、この時点でおそらくメーカー保証も外れます。

図02.底面の保護シール
もうこれ以上ネジは使われておらず、基板表側にいるSoCが金属筐体とサーマルパッドでくっついているだけなので、基板上左部分のピンヘッダ端子辺りを軽くこじるだけで外れます。
特にSoCのある側の金属筐体が分厚くなっているのが分かります。
基板表側のUSBポート付近にある白いコネクタはFAN用のもので、外付けFANが上に乗ったケースもあるようです。
OpenWRTの準備
分解したR2S本体を元に戻したら、micro SDカードにOpenWRTをセットアップします。コンパクトなOpenWRTのシステムのメディアは以前、淘寶で何枚か買っておいた1GB無印激安micro SDで十分でしょう。
使用するイメージはFirendlyElec謹製のFriendlyWRTではなく、本家OpenWRTの21.02にしました。
1 |
9,510,215 byte openwrt-21.02.2-rockchip-armv8-friendlyarm_nanopi-r2s-ext4-sysupgrade.img.gz |
Ubuntu 18.04LTS母艦で、ダウンロードしたイメージをddで書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sudo fdisk -l /dev/sdd ディスク /dev/sdd: 961 MiB, 1007681536 バイト, 1968128 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト $ gunzip -c ./openwrt-21.02.2-rockchip-armv8-friendlyarm_nanopi-r2s-ext4-sysupgrade.img.gz | sudo dd of=/dev/sdd bs=4M conv=fsync gzip: ./openwrt-21.02.2-rockchip-armv8-friendlyarm_nanopi-r2s-ext4-sysupgrade.img.gz: decompression OK, trailing garbage ignored 0+5342 レコード入力 0+5342 レコード出力 176160768 bytes (176 MB, 168 MiB) copied, 32.703 s, 5.4 MB/s $ sudo sync $ sudo fdisk -l /dev/sdd ディスク /dev/sdd: 961 MiB, 1007681536 バイト, 1968128 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x5452574f デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ /dev/sdd1 * 65536 98303 32768 16M 83 Linux /dev/sdd2 131072 344063 212992 104M 83 Linux |
せっかく1GBあるmicro SDの容量を活かすべく、2番めのパーティションrootfsを拡大したいと思います。作業はパーティション拡大からファイルシステム拡大まで一気に処理してくれるGPartedを使いました(メディア間の微妙な容量差を鑑みて後方に多少空きをのこしています)。
uci-defaultsを設定
OpenWRTのファーストブート時に実行されるスクリプトを収めたフォルダが /etc/uci-defaults/ で、ここへある程度の設定を uci コマンドの要領で記述しておけば、ルータの初期設定作業を省力化することが可能です(実行後これらのスクリプトは自動的に削除されます)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# mount | grep /media/user/ /dev/sdd2 on /media/user/rootfs type ext4 (rw,nosuid,nodev,relatime,block_validity,delalloc,barrier,user_xattr,acl,uhelper=udisks2) # ls -l /media/user/rootfs/etc/uci-defaults/ -rw-r--r-- 1 root root 350 Feb 17 04:29 00_uhttpd_ubus -rw-r--r-- 1 root root 395 Feb 17 04:29 10_migrate-shadow -rw-r--r-- 1 root root 369 Feb 17 04:29 12_network-generate-ula -rw-r--r-- 1 root root 179 Feb 17 04:29 13_fix-group-user -rw-r--r-- 1 root root 425 Feb 17 04:29 14_migrate-dhcp-release -rwxr-xr-x 1 root root 1092 Feb 17 04:29 15_odhcpd -rwxr-xr-x 1 root root 299 Feb 17 04:29 20_migrate-feeds -rwxr-xr-x 1 root root 483 Feb 17 04:29 30_luci-theme-bootstrap -rwxr-xr-x 1 root root 189 Feb 17 04:29 50-dnsmasq-migrate-resolv-conf-auto.sh -rwxr-xr-x 1 root root 162 Feb 17 04:29 50-migrate-rpcd-ubus-sock.sh -rwxr-xr-x 1 root root 461 Feb 17 04:29 50_luci-mod-admin-full |
OpenWRT開発者ガイドにある作成方法に沿って、ルータのLAN IPやhostnameなどの基本設定を仕込んでみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# cat << "EOF" > /media/user/rootfs/etc/uci-defaults/99-custom > uci -q batch << EOI > set network.lan.ipaddr='192.168.51.2' > commit network > > set system.@system[0].cronloglevel='8' > set system.@system[0].hostname='R2S' > set system.@system[0].timezone='HKT-8' > set system.@system[0].zonename='Asia/Hong Kong' > commit system > EOI > EOF # ls -l /media/user/rootfs/etc/uci-defaults/99* -rw-r--r-- 1 root root 255 Jun 15 08:44 99-custom # cat /media/user/rootfs/etc/uci-defaults/99-custom uci -q batch << EOI set network.lan.ipaddr='192.168.51.2' commit network set system.@system[0].cronloglevel='8' set system.@system[0].hostname='R2S' set system.@system[0].timezone='HKT-8' set system.@system[0].zonename='Asia/Hong Kong' commit system EOI |
micro SDをNanoPi R2Sへセットして起動させると、2,3分後にはLANインターフェイスからLuCiへアクセスすることが出来ました。
次ページでは、OpenWRTのチューニングをいくつか施してみます。