微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 成功移植NET-SNMP到ARM平台

成功移植NET-SNMP到ARM平台

时间:11-11 来源:互联网 点击:
经过一个月的不懈努力终于将NET-SNMP成功移植到了ARM平台,网上关于NET-SNMP的资料很少,仅有的一些文章也都是轻描淡写,很容易被误导,我就是其中的受害者之一,交叉编译过程很复杂,要配置参数,路径,还有库。所以稍有插翅就会前功尽弃。而且每编译一次NET-SNMP都会耗费很多的时间。很容易挫败人的自信心。我整整啃了一个月的英文文档,边看边试。下面把详细过程贴出来,跟大家共享,希望那些也想移植NET-SNMP能够少走弯路。

主机环境

Windows + vmware(redhat9.0)

IP分配如下:

ARM开发板:192.168.4.151

Windows: 192.168.4.44

Redhat9.0: 192.168.4.150

搭建交叉编译环境

把交叉编译器解压到/opt/目录下,然后在/etc/profile文件中添加

环境变量,pathmunge /opt/hardhat/devkit/arm/xscale_be/bin.

交叉编译步骤

①. tar –zxvf net-snmp-5.3.2.tar.gz

②. cd net-snmp-5.3.2

③../configure --host=armv5teb-hardhat-linux //运行平台

--build=i686-linux //编译平台

--with-cc=xscale_be-gcc //交叉编译器

--with-ar=xscale_be-ar //

--prefix=/usr/local/net-snmp //安装目录

--disable-shared //静态编译

--with-endianness=little //指定小端

--enable-mini-agent//最小的SNMPD

--with-openssl=/opt/hardhat //openssl库路径

/devkit/arm/xscale_be/target/usr

④. make (make LDFLAGS="-static",如果没有指定disable-shared)

⑤. make install

⑥. cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

⑦. 配置/usr/local/net-snmp/share/snmp/snmpd.conf文件

⑧.xscale_be-strip /usr/local/net-snmp/sbin/snmpd,压缩snmpd.

移植文件

在移植以前首先要删除AP上的/usr/sbin/snmpd和/etc/snmpd.conf.

1./usr/local/net-snmp/sbin/目录下snmpd进程

2./usr/local/net-snmp/share/snmp/目录下snmpd.conf ,mibs

3./usr/local/net-snmp/bin目录下net-snmp-config, snmpwalk, snmpget等

备注:snmpd,net-snmp-config,snmkwalk,snmpget等工具在移植以前,要先用xscale_be-strip压缩一下。然后snmpd放到AP的/usr/sbin中,

Snmpd.conf放到Ap 的/etc中。其他按照上面目录存放。AP上没有就自动创建。

在AP上运行snmpd

#snmpd –c /etc/snmpd.conf

备注:

1.在AP上运行时会出现缺少libcrypto.so.0.9.6文件。在交叉编译器中(/opt/hardhat/devkit/arm/xscale_be/target/usr/lib)能找到这个文件,然后put到AP的/lib/目录下。或者

创建软连接ln –s /mnt/ramd/libcrypto.so.0.9.6 /lib/libcrypto.so.0.9.6。

2.原来snmpd.conf在/usr/local/net-snmp/share/snmp/snmpd.conf中,传到AP时放到/etc/目录中,所以在运行时用参数C来指定最新目录。

3.当snmpd进程运行时会在/var/net-snmp目录下创建一个snmpd.conf.

原来没有,Snmpd.conf文件中有engineboot和engineID。当用net-snmp-config创建v3用户时,下面会自动添加

createuser zhuangqian MD5 “19840318” DES,当然同时也会在/usr/local/net-snmp/share/snmp/snmpd/conf中添加rwuser zhuangqian.

如何创建V3用户

方法一

①首先关闭snmpd进程

②net-snmp-config --create-snmpv3-user –a “19840318” zhuangqian

执行上面操作之后,/var/net-snmp/snmpd.conf文件中增加一行

createuser zhuangqian MD5 “19840318” DES

/usr/local/net-snmp/share/snmp/snmpd.conf中增加一行

rwuser zhuangqian

③snmpd 启动进程

④snmpget –v 3 –u zhuangqian –l authNoPriv –a MD5 –A “19840318” localhost sysUpTime.0或者

snmpget -v 3 -u zhuangqian –l authPriv –a MD5

-A “19840318” –x DES – X “19840318” localhost sysUpTime.0

方法二

# net-snmp-config --create-snmpv3-user ↙

# 输入用户名(zhuangqian)↙

# 输入authentication pass-phrase(验证)如19840318长度不小于8

# 输入encryption pass-phrase(加密)如19840318,直接回车则跟上面一样。

测试:

Snmpget –v 3 –l authPriv –u zhuangqian –A “19840318” –X “19840318” localhost sysUpTime.0

注意v3中authprotocal MD5 SHA Privprotocal DES AES

客户端能ping通运行snmpd进程的设备,但取不到值,可能是客户端防火墙问题,取消客户端防火墙试试。

测试V2

snmp

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top