Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->网络应用 ->正文

高手进阶 学会做嵌入式Linux操作系统

来源:赛迪网技术社区  作者:Webmaster 时间:2007-06-03 点击: [收藏] [投稿]

看看我们需要的mib文件:

[root@skynet net-snmp-5.1.3.1]# ls ${TARGET_PREFIX}/share/snmp

mib2c.access_functions.conf mib2c.column_defines.conf mib2c.int_watch.conf mib2c.old-api.conf

mib2c.array-user.conf mib2c.column_enums.conf mib2c.iterate_access.conf mib2c.scalar.conf

mib2c.check_values.conf mib2c.conf mib2c.iterate.conf mibs

mib2c.check_values_local.conf mib2c.create-dataset.conf mib2c.notify.conf snmpconf-data

5、移植

基本完成了,因为snmpd太大了点,对它进行strip处理:

先备个份:

[root@skynet net-snmp-5.1.3.1]# cp ${TARGET_PREFIX}/sbin/snmpd ${TARGET_PREFIX}/sbin/snmpd.bak

[root@skynet net-snmp-5.1.3.1]# i386-linux-strip ${TARGET_PREFIX}/sbin/snmpd

[root@skynet net-snmp-5.1.3.1]# ls -l ${TARGET_PREFIX}/sbin/snmpd

-rwxr-xr-x 1 root root 503300 Nov 16 09:30 /home/skynet/tools/i386-linux/sbin/snmpd

经过处理后,还有近500KB了。

因为只有SNMP agent功能,即snmpd程序,其它的都可以忽略。用了静态编译,lib下边那些libnetsnmp文件都可以不需要了,程序运行

需要MIB库,也就是share下的内容,把这两个东东拷到rootfs相应的目录中去:

[root@skynet net-snmp-5.1.3.1]# cp ${TARGET_PREFIX}/sbin/snmpd ${PRJROOT}/rootfs/usr/sbin

[root@skynet net-snmp-5.1.3.1]# mkdir -p ${PRJROOT}/rootfs/usr/local/share

[root@skynet net-snmp-5.1.3.1]# cp -r ${TARGET_PREFIX}/share/snmp ${PRJROOT}/rootfs/usr/local/share

[root@skynet net-snmp-5.1.3.1]# cp EXAMPLE.conf ${PRJROOT}/rootfs/usr/local/share/snmp/snmpd.conf

最后一步是把安装目录下的配置文件范例拷到snmpd启动时默认的搜索目录中去。

6、测试

打开snmpd.conf看看:

[root@skynet net-snmp-5.1.3.1]# vi ${PRJROOT}/rootfs/usr/local/share/snmp/snmpd.conf

有如下语句:

# sec.name source community

com2sec local localhost COMMUNITY

com2sec mynetwork NETWORK/24 COMMUNITY

定义了两个用户,本地及网络的,以及它们的通读密钥,按自己的需要修改一下,如:

# sec.name source community

com2sec local 127.0.0.1 public

com2sec mynetwork 0.0.0.0 public

后面是定义用户的用户组等一大堆东东,事实上不用修改它们了。运行它:

[root@skynet net-snmp-5.1.3.1]# chroot ${PRJROOT}/rootfs /bin/sh

BusyBox v1.00 (2004.10.13-06:32+0000) Built-in shell (ash)

Enter 'help' for a list of built-in commands.

/ # snmpd

/ # exit

在我们自己的根文件系统环境下运行它,然后退出来。用ps查看:

#ps -aux

……

root 32270 0.0 0.3 1212 936 ? S 09:38 0:00 snmpd

[root@skynet net-snmp-5.1.3.1]# netstat -anu

……

udp 0 0 0.0.0.0:161 0.0.0.0:*

呵呵,已经成功启动了。用一个SNMP管理软件试试,可以成功地获取到信息。OK!

总结一下:

1、主程序+MIB库大了点,共计约2M,不过我确实没有办法再小了,而且一味求小,也不是我的目的。

2、功能稍微简单了些,只有agent,如果需要,可以类似地把其它程序加上去就可以了。

3、第一次玩net-snmp,还是有点生疏,比如我静态编译二进制程序,并不需要include/lib下的文件,但是如何关闭它们呢?我试过--disable-ucd-snmp-compatibility,不过好像不是这个选项……下次改进了……

独孤九贱 2005-11-16 05:38

继续工作,使用ramdisk

前提:内核编译时得选相应的支持选项,前文已有叙述。

1、rootfs中的/boot文件夹删除;

2、建立ramdisk:

使用dd命令建立一个空的文件系统映像:

# dd if=/dev/zero of=images/initrd.img bs=1k count=8192

大小8192K,用/dev/zero对其初始化;

利用刚才的空的文件系统映像,建立文件系统并安装它,使用了mke2fs命令:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:修正Linux下丑陋的FireFox表单控件问题   下一篇:实用技巧两则 主机名修改与Cat命令退出

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号