[OpenWRT] OpenWRTをRasPi2で作る

http://d.hatena.ne.jp/kinneko/20161205/p1 の続き。


Raspi1では失敗だった。
BBBでもビルドしてやってみたけど、標準のkernel configでは、USBまわりがオフになっていて、いろいろめんどくさそうなので、中断したまま。
一石アンプさんから、Raspi2/3をお借りできたので、これで試してみることにした。
まずは、Raspi2から。


イメージはこれ。
http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/
http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz
sha256sumsも落としておく。


ダウンロードの確認。

$ cat sha256sums | grep openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz
SHA256(openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz)= e25269b3eb9eb1b3aa24b1ccb1f6be15b4138f7e1f47ebf2ee3d9b0c468d04a5
$ shasum -a 256 openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz
e25269b3eb9eb1b3aa24b1ccb1f6be15b4138f7e1f47ebf2ee3d9b0c468d04a5  openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz

同じ。


展開する。

$ ls -lh openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz
-rw-r--r--@ 1 kinneko  staff   6.3M  3 16  2016 openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz

$ gzip -d openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img.gz
$ ls -lh openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img
-rw-r--r--@ 1 kinneko  staff    76M  3 16  2016 openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img

76MB。
と、ここまでは、Raspi1と同じ。やってあれば再度やる必要はない。


前に作ったSDをそのまま差し込めばいいんじゃないかと思ってたけど、初代はSDで2からはmicroなんだよね。
なんかちぐはぐだわ。
んで、そんな小さいmircoSDはないな...
新たに2GBを用意してイメージを書き込む。

$ diskutil list /dev/disk4
/dev/disk4
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 GB     disk4
   1:             Windows_FAT_32 NO_NAME                 2.0 GB     disk4s1

$ diskutil unmount /Volumes/"NO_NAME"
Volume NO_NAME on disk4s1 unmounted

$ sudo dd if=openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img of=/dev/rdisk4
155648+0 records in
155648+0 records out
79691776 bytes transferred in 1005.137241 secs (79284 bytes/sec)

$ diskutil eject /dev/disk4
Disk /dev/disk4 ejected


microSDをRaspi2に差し込み、HDMIケーブルとUSBキーボードを接続。
電源を供給する。
コンソール画面には、Raspiロゴが4つ出ている。
リターンキーを押すと、コンソールに落ちた。


Raspi1の時と同じイメージなので、有線のeth0はbr-lanにブリッジされて、固定IPのLAN側として設定されていると思われるので、コンソールからuciコマンドでDHCPでアドレスを受け取るように設定を変更する。

root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.iframe='eth0'
network.lan.type='bridge'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'

想定通り。
設定を変更する。

root@OpenWrt:~# uci set network.lan.proto=dhcp
root@OpenWrt:~# uci commit
root@OpenWrt:~# /etc/init.d/network restart
root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.iframe='eth0'
network.lan.type='bridge'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='dhcp'


NICにケーブルを接続し、コンソールからifconfigを打って、取得したIPアドレスを調べる。
そのアドレスにtelnetする。

root@OpenWrt:/# ifconfig br-lan | grep "inet addr"
          inet addr:192.168.51.54  Bcast:192.168.51.255  Mask:255.255.255.0
$ telnet 192.168.51.54
Trying 192.168.51.54...
Connected to 192.168.51.54.
Escape character is '^]'.
 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------


BusyBox v1.23.2 (2016-01-31 10:48:00 CET) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05.1, r48532)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/#

お、なんかRaspi1より反応が早いな。当たり前だけど。


ASIXのチップが乗ったUSB-CDC Etherのドングル用のドライバを入れる。
パッケージリストのアップデート。

root@OpenWrt:/# opkg update
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_base.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/luci/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_luci.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/luci/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_packages.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/packages/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/routing/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_routing.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/routing/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/telephony/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_telephony.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/telephony/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/management/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_management.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/management/Packages.sig.
Signature check passed.

現在インストールされているパッケージのリストはこんな感じ。

root@OpenWrt:/# opkg list_installed
base-files - 157.2-r48532
brcm2708-gpu-fw - 20150210-1
busybox - 1.23.2-1
dnsmasq - 2.73-1
dropbear - 2015.67-1
firewall - 2015-07-27
fstools - 2016-01-10-96415afecef35766332067f4205ef3b2c7561d21
ip6tables - 1.4.21-1
iptables - 1.4.21-1
jshn - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
jsonfilter - 2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9
kernel - 3.18.23-1-53057a7eaf7678caec0da6075f620e1f
kmod-hid - 3.18.23-1
kmod-hid-generic - 3.18.23-1
kmod-input-core - 3.18.23-1
kmod-input-evdev - 3.18.23-1
kmod-ip6tables - 3.18.23-1
kmod-ipt-conntrack - 3.18.23-1
kmod-ipt-core - 3.18.23-1
kmod-ipt-nat - 3.18.23-1
kmod-ipv6 - 3.18.23-1
kmod-lib-crc-ccitt - 3.18.23-1
kmod-nf-conntrack - 3.18.23-1
kmod-nf-conntrack6 - 3.18.23-1
kmod-nf-ipt - 3.18.23-1
kmod-nf-ipt6 - 3.18.23-1
kmod-nf-nat - 3.18.23-1
kmod-nf-nathelper - 3.18.23-1
kmod-nls-base - 3.18.23-1
kmod-ppp - 3.18.23-1
kmod-pppoe - 3.18.23-1
kmod-pppox - 3.18.23-1
kmod-slhc - 3.18.23-1
kmod-sound-arm-bcm2835 - 3.18.23-1
kmod-sound-core - 3.18.23-1
kmod-usb-core - 3.18.23-1
kmod-usb-hid - 3.18.23-1
libblobmsg-json - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
libc - 0.9.33.2-1
libgcc - 4.8-linaro-1
libip4tc - 1.4.21-1
libip6tc - 1.4.21-1
libiwinfo - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libiwinfo-lua - 2015-06-01-ade8b1b299cbd5748db1acf80dd3e9f567938371
libjson-c - 0.12-1
libjson-script - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
liblua - 5.1.5-1
libnl-tiny - 0.1-4
libubox - 2015-11-08-10429bccd0dc5d204635e110a7a8fae7b80d16cb
libubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libubus-lua - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
libuci - 2015-08-27.1-1
libuci-lua - 2015-08-27.1-1
libxtables - 1.4.21-1
lua - 5.1.5-1
luci - git-16.018.33482-3201903-1
luci-app-firewall - git-16.018.33482-3201903-1
luci-base - git-16.018.33482-3201903-1
luci-lib-ip - git-16.018.33482-3201903-1
luci-lib-nixio - git-16.018.33482-3201903-1
luci-mod-admin-full - git-16.018.33482-3201903-1
luci-proto-ipv6 - git-16.018.33482-3201903-1
luci-proto-ppp - git-16.018.33482-3201903-1
luci-theme-bootstrap - git-16.018.33482-3201903-1
mtd - 21
netifd - 2015-12-16-245527193e90906451be35c2b8e972b8712ea6ab
odhcp6c - 2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8
odhcpd - 2015-11-19-01d3f9d64486ac1daa144848944e877e7f0cb762
opkg - 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9
ppp - 2.4.7-6
ppp-mod-pppoe - 2.4.7-6
procd - 2015-10-29.1-d5fddd91b966424bb63e943e789704d52382cc18
rpcd - 2015-01-10-f00890cd6eb47ad9bb5da0fb6c50aedc8406e7c5
ubox - 2015-11-22-c086167a0154745c677f8730a336ea9cf7d71031
ubus - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
ubusd - 2015-05-25-f361bfa5fcb2daadf3b160583ce665024f8d108e
uci - 2015-08-27.1-1
uhttpd - 2015-11-08-fe01ef3f52adae9da38ef47926cd50974af5d6b7
uhttpd-mod-ubus - 2015-11-08-fe01ef3f52adae9da38ef47926cd50974af5d6b7
usign - 2015-05-08-cf8dcdb8a4e874c77f3e9a8e9b643e8c17b19131


インストール可能なパッケージのリストからASIX用のkmodを探す。

root@OpenWrt:/# opkg list | grep asix
kmod-usb-net-asix - 3.18.23-1 - Kernel module for USB-to-Ethernet Asix convertors
kmod-usb-net-asix-ax88179 - 3.18.23-1 - Kernel module for USB-to-Ethernet ASIX AX88179 based USB 3.0/2.0 to Gigabit Ethernet adapters.

インストールする。
関連する依存パッケージもインストールされる。

root@OpenWrt:/# opkg install kmod-usb-net-asix
Installing kmod-usb-net-asix (3.18.23-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/kmod-usb-net-asix_3.18.23-1_brcm2708.ipk.
Installing kmod-libphy (3.18.23-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/kmod-libphy_3.18.23-1_brcm2708.ipk.
Installing kmod-usb-net (3.18.23-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/kmod-usb-net_3.18.23-1_brcm2708.ipk.
Installing kmod-mii (3.18.23-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/brcm2708/bcm2709/packages/base/kmod-mii_3.18.23-1_brcm2708.ipk.
Configuring kmod-mii.
Configuring kmod-libphy.
Configuring kmod-usb-net.
failed to find a module named usbnet
Configuring kmod-usb-net-asix.

あれ?足りない?
usb-netはデフォルトでインストールされていた。
USBドングルを差し込んでみる。

[  762.533426] usbcore: registered new interface driver asix
[  799.825432] usb 1-1.4: new high-speed USB device number 5 using dwc_otg
[  799.949069] usb 1-1.4: New USB device found, idVendor=0b95, idProduct=1720
[  799.959822] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  799.971019] usb 1-1.4: Product: USB2.0 10/100 Ethernet Adapter
[  799.980728] usb 1-1.4: Manufacturer: USB
[  800.049126] asix 1-1.4:1.0 eth1: register 'asix' at usb-bcm2708_usb-1.4, ASIX AX8817x USB 2.0 Ethernet, 00:10:60:2b:a4:05

なんか認識はしているみたい。


ブラウザで割り当てアドレスに接続して、LuCIから設定を変更。
こころなしか、動きもキビキビしている気が。
Create Interfaceで、名前をWANに、ProtocolをDHCP client、Cover the following interfaceでEthernet Adapter: "eth1"にチェックを入れ、Submitボタンを押して登録する。Common ConfigurationのFirewall Settingsタブを押して、wanにチェックを入れてSave&Applyボタンを押す。

InterfacesからLANのEditボタンを押して、ProtocolをStatic addressに、Switch protocolボタンを押す。IPv4 addressを192.168.1.1、netmaskを255.255.255.0に、gatewayを192.168.1.1に、Save&Applyボタンを押す。
これで、NATルータを構成しているはず。


USB-NICにWAN側のケーブルを接続し、MacにLAN側の本体NICをケーブル接続する。

$ ifconfig en0 | grep "inet "
	inet 192.168.1.225 netmask 0xffffff00 broadcast 192.168.1.255

ブラウザで192.168.1.1に接続して、LuCIが開くのを確認する。
Macから外部ネットワークに出られるのを確認する。問題なし。
ただ、LuCIでパスワードを設定しようとしたら、保存できなかった。
再起動して、ブラウザをsafariからfirefox変えてうまくいった。


ダウンロードなどの作業をやっても安定して動いている。
SoCはさわると少し熱い。40度くらいかな。
USB-NICドングルの表面温度もそのくらい。
ちょっと夏の長時間運用には向かないかも。