Armadillo-IoTでSNMPを使いたい場合に、
SNMPエージェントをArmadillo-IoT上で動かす方法を紹介します。
1.ATDE5をダウンロード
開発環境ATDE5を以下からダウンロードします。
i386向け
http://armadillo.atmark-techno.com/files/downloads/atde/atde5-i386-20150727.tar.xz
amd64向け
http://armadillo.atmark-techno.com/files/downloads/atde/atde5-amd64-20150727.tar.xz
ATDE5のインストールや起動方法は以下を参照してください。
2.ソースコードをダウンロード
2.1 ATDE5上でソースコードをダウンロードします。
atmark@atde5:~$ wget http://armadillo.atmark-techno.com/files/downloads/armadillo-iot/source/dist/atmark-dist-20150918.tar.gz
atmark@atde5:~$ wget http://armadillo.atmark-techno.com/files/downloads/armadillo-iot/source/kernel/linux-3.14-at3.tar.gz
2.2 ソースコードを展開します。
atmark@atde5:~$ tar zxf atmark-dist-20150918.tar.gz
atmark@atde5:~$ tar zxf linux-3.14-at3.tar.gz
atmark@atde5:~$ ln -s atmark-dist-20150918 atmark-dist
atmark@atde5:~$ cd atmark-dist
atmark@atde5:~/atmark-dist$ ln -s ../linux-3.14-at3 ./linux-3.x
3.Perl5ビルド準備
SNMPエージェントの動作にはPerlが必要となります。
Perlのインストールについては、以下ブログを参照いただければと思います。
Armadillo-420でPerl5を使う
https://users.atmark-techno.com/blog/1562/1595
※上記ブログではカーネル2.6を使っていますが、カーネル3.14でも手順は同じです。
4.SNMPエージェントの準備
SNMPエージェント(以下、実行ファイルであるsnmpdと表記します)を準備します。
4.1 一旦ホームディレクトリに戻ります。
atmark@atde5:~$ cd
4.2 snmpdディレクトリを作成し、カレントディレクトリをsnmpdディレクトリに移動します。
atmark@atde5:~$ mkdir snmpd
atmark@atde5:~$ cd snmpd
4.3 romfsディレクトリを作成します。
atmark@atde5:~/snmpd$ mkdir romfs
4.4 snmpdに必要なパッケージをダウンロードします。
必要なパッケージは以下となります。
http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/snmpd_5.4.3~dfsg-2.8+deb7u1_armel.deb
http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/libsnmp15_5.4.3~dfsg-2.8+deb7u1_armel.deb
http://ftp.jp.debian.org/debian/pool/main/l/lm-sensors/libsensors4_3.3.2-2+deb7u1_armel.deb
http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/libsnmp-base_5.4.3~dfsg-2.8+deb7u1_all.deb
http://ftp.jp.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-24_armel.deb
atmark@atde5:~/snmpd$ wget http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/snmpd_5.4.3~dfsg-2.8+deb7u1_armel.deb
atmark@atde5:~/snmpd$ wget http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/libsnmp15_5.4.3~dfsg-2.8+deb7u1_armel.deb
atmark@atde5:~/snmpd$ wget http://ftp.jp.debian.org/debian/pool/main/l/lm-sensors/libsensors4_3.3.2-2+deb7u1_armel.deb
atmark@atde5:~/snmpd$ wget http://ftp.jp.debian.org/debian/pool/main/n/net-snmp/libsnmp-base_5.4.3~dfsg-2.8+deb7u1_all.deb
atmark@atde5:~/snmpd$ wget http://ftp.jp.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-24_armel.deb
4.5 ダウンロードしたパッケージをromfsディレクトリに展開します。
atmark@atde5:~/snmpd$ dpkg-deb -x libsensors4_3.3.2-2+deb7u1_armel.deb ./romfs/
atmark@atde5:~/snmpd$ dpkg-deb -x libsnmp-base_5.4.3~dfsg-2.8+deb7u1_all.deb ./romfs/
atmark@atde5:~/snmpd$ dpkg-deb -x libsnmp15_5.4.3~dfsg-2.8+deb7u1_armel.deb ./romfs/
atmark@atde5:~/snmpd$ dpkg-deb -x snmpd_5.4.3~dfsg-2.8+deb7u1_armel.deb ./romfs/
atmark@atde5:~/snmpd$ dpkg-deb -x libwrap0_7.6.q-24_armel.deb ./romfs/
4.6 不要なファイルを削除します。
atmark@atde5:~/snmpd$ rm -rf romfs/usr/share/doc
4.7 romfs/etc/snmp/snmpd.confを以下のように編集します。
atmark@atde5:~/snmpd$ vi romfs/etc/snmp/snmpd.conf
snmpd.confの内容:
--------------------------------------------------
1 ###############################################################################
2 #
3 # EXAMPLE.conf:
4 # An example configuration file for configuring the Net-SNMP agent ('snmpd')
5 # See the 'snmpd.conf(5)' man page for details
6 #
7 # Some entries are deliberately commented out, and will need to be explicitly activate
8 #
9 ###############################################################################
10 #
11 # AGENT BEHAVIOUR
12 #
13
14 # Listen for connections from the local system only
15 #agentAddress udp:127.0.0.1:161 # この行をコメントアウトします
16 # Listen for connections on all interfaces (both IPv4 *and* IPv6)
17 agentAddress udp:161,udp6:[::1]:161 # この行のコメントアウトを解除します。
--------------------------------------------------
4.8 romfsディレクトリを圧縮します。
atmark@atde5:~/snmpd$ tar zcf romfs-add-snmpd.tar.gz romfs
5 ユーザーランドにsnmpdを含める
5.1 カレントディレクトリをatmark-distに移動します。
atmark@atde5:~/snmpd$ cd ~/atmark-dist-20150918
5.2 4.8項で作成したromfs-add-snmpd.tar.gzをマージします。
atmark@atde5:~/atmark-dist-20150918$ tar zxf ../snmpd/romfs-add-snmpd.tar.gz
5.3 ビルドします。
atmark@atde5:~/atmark-dist-20150918$ make image
6 snmpd起動
Armadillo-IoT起動後に、以下のコマンドを実行します。
[root@armadillo-iotg (ttymxc1) ~]# /usr/sbin/snmpd
7 ATDE側から動作確認する
7.1 ATDEにSNMPマネージャーをインストールします。
atmark@atde5:~$ sudo apt-get install snmp snmp-mib-downloader
7.2 /etc/snmp/snmp.confを以下のように編集します。
atmark@atde5:~$ sudo vi /etc/snmp/snmp.conf
/etc/snmp/snmp.confの内容:
--------------------------------------------------
#
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loaging them by commenting out the following line.
#mibs : #この行をコメントアウトします。
--------------------------------------------------
7.3 MIBをダウンロードします。
atmark@atde5:~$ download-mibs
7.4 snmpgetでMIB情報を取得してみます。
atmark@atde5:~$ snmpget -v 1 -c public 192.168.11.118 system.sysName.0
SNMPv2-MIB::sysName.0 = STRING: armadillo-iotg
atmark@atde5:~$ snmpget -v 1 -c public 192.168.11.118 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux armadillo-iotg 3.14.36-at2 #5 PREEMPT Tue Sep 29 16:44:09 JST 2015 armv5tejl