嵌入式处理器中DHCP移植

DHCP移植搭建

              华环电子-任晓亮              2015/4/03

项目:南非铁路,三层交换单臂路由

平台:Nios2

单板:ETR01

1.  在内核中添加以下选项:

Networking  --->

   [*] Networkingsupport  

      Networkingoptions  ---> 

          <*> Packetsocket                 //添加.配置CONFIG_PACKET

          [* ]     IP: DHCP support         //添加

          [* ] Network packet filtering (replacesipchains)  --->    //添加,后面子选项可不选,配置CONFIG_NETFILTER

说明:若没选<* > Packetsocket, [ * ] Network packet filtering (replaces ipchains)  --->选项,在执行udhcpc命令时出现如下错误:

# udhcpc

udhcpc (v0.9.9-pre) started

udhcpc[208]: udhcpc (v0.9.9-pre) started

FATAL: couldn't listen on socket, Addressfamily not supported by protocol

udhcpc[208]: FATAL: couldn't listen onsocket, Address family not supported by protocol

 

2.  Busybox中添加以下选项:

Networking Utilities  --->

   udhcpServer/Client  --->

        [*]udhcp Server (udhcpd)    //生成udhcpd命令                          

        [*]udhcp Client (udhcpc)       //生成udhcpc命令                               

        [] Lease display utility (dumpleases)      //支持抓包                  

        []   Log udhcp messages to syslog (instead ofstdout)        //支持系统日志

        []   Compile udhcp with noisy debugging messages        //支持调试信息

 

3.交叉编译得到软件

若busybox没编译相应选项,也可从网上下载相应文件,用nios2-linux交叉编译得到udhcpd,udhcpc命令copy到系统的usr/sbin下就可以了。

我从 网上  下的udhcp-0.9.8.tar.gz文件

解压后修改Makefile文件

在19行添加CROSS_COMPILE=nios2-linux-gnu -  

注释12行的COMBINED_BINARY=1,否则不生成udhcpc命令。

执行make命令编译

4.  建相关配置文件

从busybox的examples/udhcp/下copy  simple.script文件到开发板/usr/share/udhcpc/下,并重命名为default.script,udhcp_0.9.8.tar.gz中也有这样的文件。

[root@localhostroot]# vi usr/share/udhcpc/default.script

#!/bin/sh

 

# udhcpc scriptedited by Tim Riker <Tim@Rikers.org>

 

[ -z"$1" ] && echo "Error: should be called fromudhcpc" && exit 1

 

RESOLV_CONF="/etc/resolv.conf"

[ -n"$broadcast" ] && BROADCAST="broadcast $broadcast"

[ -n"$subnet" ] && NETMASK="netmask $subnet"

 

case"$1" in

        deconfig)

                /sbin/ifconfig$interface 0.0.0.0

                ;;

 

        renew|bound)

                /sbin/ifconfig$interface $ip $BROADCAST $NETMASK

 

                if[ -n "$router" ] ; then

                        echo"deleting routers"

                        whileroute del default gw 0.0.0.0 dev $interface ; do

                                :

                        done

                        fori in $router ; do

                                routeadd default gw $i dev $interface

                        done

                fi

 

                echo-n > $RESOLV_CONF

                [-n "$domain" ] && echo search $domain >> $RESOLV_CONF

                fori in $dns ; do

                        echoadding dns $i

                        echonameserver $i >> $RESOLV_CONF

                done

                ;;

esac

 

exit 0

 

4.  重启系统,执行客户端程序udhcpc就可自动获取IP地址了,以下是执行udhcpc的输出信息:

~ # udhcpc

udhcpc (v0.9.9-pre) started

udhcpc[228]: udhcpc (v0.9.9-pre) started

 

Sending discover...

udhcpc[228]: Sending discover...

 

Sending select for 192.168.1.109...

udhcpc[228]: Sending select for192.168.1.109...

 

Lease of 192.168.1.109 obtained, leasetime 86400

udhcpc[228]: Lease of 192.168.1.109obtained, lease time 86400

 

deleting routers

route: SIOC[ADD|DEL]RT: No such process

adding dns 192.168.0.1

~ # ping www.baidu.com

PING www.a.shifen.com (220.181.38.4): 56data bytes

64 bytes from 220.181.38.4: icmp_seq=0ttl=52 time=1219.0 ms

[1] +Stopped                    pingwww.baidu.com

 

5.  如果是双网卡必须用参数指明

例:udhcpc  -i  eth1 

6.启动udhcpd服务

#udhcpd &

指定网卡:在配置文件/etc/udhcpd.conf  第六行interface      eth0

指定ip池: start   192.168.5.20

                    end  192.168.5.254

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值