嵌入式linux通过DHCP自动获取IP地址实现

http://blog.chinaunix.net/uid-17188120-id-2820863.html


前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通)。

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

Networking  --->

   [*] Networking support  

      Networking options  ---> 

          <* > Packet socket                 //添加.配置CONFIG_PACKET

          [ * ]     IP: DHCP support         //添加

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

说明:若没选<* > Packet socket, [ * ] 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, Address family not supported by protocol

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

2.  Busybox中添加以下选项:

Networking Utilities  --->

   udhcp Server/Client  --->

        [] udhcp Server (udhcpd)       //在此不作服务端,故不选。生成udhcpd命令                             

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

        [ ] Lease display utility (dumpleases)                        

        [ ]   Log udhcp messages to syslog (instead of stdout)        

        [ ]   Compile udhcp with noisy debugging messages

busybox没编译相应选项,也可从网上下载相应文件,用arm-linux交叉编译得到udhcpd,udhcpc命令copyusr/sbin下就可以了。

我从 网上  下的udhcp_0.9.8cvs20050303.orig.tar.gz文件

解压后修改Makefile文件

19行添加CROSS_COMPILE=arm-linux-  

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

3.  建相关配置文件

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

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

#!/bin/sh

 

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

 

[ -z "$1" ] && echo "Error: should be called from udhcpc" && 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"

                        while route del default gw 0.0.0.0 dev $interface ; do

                                :

                        done

                        for i in $router ; do

                                route add default gw $i dev $interface

                        done

                fi

 

                echo -n > $RESOLV_CONF

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

                for i in $dns ; do

                        echo adding dns $i

                        echo nameserver $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 for 192.168.1.109...

 

Lease of 192.168.1.109 obtained, lease time 86400

udhcpc[228]: Lease of 192.168.1.109 obtained, 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): 56 data bytes

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

[1] + Stopped                    ping www.baidu.com

 

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

例:udhcpc  -i  eth1 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脉冲同步电路

脉冲同步电路 题目解析 从A时钟域提取一个单时钟周期宽度脉冲,然后在新的时钟域B建立另一个单时钟宽度的脉冲。 A时钟域的频率是B时钟域的10倍;A时钟域脉冲之间的间隔很大,无需考虑脉冲间隔太小的问题。 电路的接口如下图所示。data_in是脉冲输入信号,data_out是新的脉冲信…

贷款审批到底会考核哪些内容?

经常贷款的朋友应该知道&#xff0c;贷款看着简单&#xff0c;其实要经过层层的审核程序&#xff0c;有时候明明觉得自己的条件还不错&#xff0c;可是贷款审批结果要么是直接被拒贷&#xff0c;要么就是额度很低。那贷款到底会审核哪些内容呢&#xff1f;下面我们就来看看。以…

clnt_create: RPC: Program not registered

NFS问题&#xff1a;nfs与portmap都正常启动了[rootserver /]# showmount -e mount clntudp_create: RPC: Program not registered[rootserver /]# rpc.mountd[rootserver /]# showmount -e Export list for server.example.com:/home *[rootserver /]#Stale NFS file handleLi…

可置位计数器

可置位计数器 题目描述 请编写一个十六进制计数器模块&#xff0c;计数器输出信号递增每次到达0&#xff0c;给出指示信号zero&#xff0c;当置位信号set 有效时&#xff0c;将当前输出置为输入的数值set_num。 模块的接口信号图如下&#xff1a; timescale 1ns/1nsmodule c…

信用卡有哪些好处?

信用卡现在已经很普遍&#xff0c;人手几张信用卡很常见&#xff0c;但是也有很多朋友对信用卡不感冒&#xff0c;认为办理信用卡之后会产生不理智的消费行为。但是信用卡的这些好处你知道吗&#xff1f;1、没钱也能当土豪没钱想消费怎么办&#xff1f;是去抢还是去借&#xff…

信用卡多还钱了怎么办?

我有一个朋友&#xff0c;前段时间还信用卡&#xff0c;他自己不记得消费了多少&#xff0c;也没有及时去查账单&#xff0c;然后就随便还款了5000元进去。可后来他查了自己的账单&#xff0c;发现当期的账单只有2000多元&#xff0c;多出的的2000多元他以为可以像储蓄卡那样可…

rmmod 提示 No such file or directory

作者&#xff1a;liukun321&#xff08;咕唧咕唧&#xff09; 原文出处&#xff1a;http://blog.csdn.net/liukun321 我们在卸载内核模块时常常遇到rmmod: No such file or directory这个错误.原因是我们没将内核模块放在文件系统指定的目录内.我们在配置内核时 General setup…

加减计数器

加减计数器 题目描述 请编写一个十进制计数器模块,当mode信号为1,计数器输出信号递增,当mode信号为0,计数器输出信号递减。每次到达0,给出指示信号zero。 模块的接口信号图如下: `timescale 1ns/1nsmodule count_module(input clk,input rst_n,input mode,output reg …

逾期后还能消除不良记录吗?

逾期了还能消除吗&#xff1f;估计这个问题有很多逾期的朋友都是比较关心的。逾期看着是小事&#xff0c;但是到了关键时刻逾期就是一件大事&#xff0c;比如申请房贷&#xff0c;申请车贷&#xff0c;申请贷款等&#xff0c;无一不是要考核个人的征信记录&#xff0c;如果有逾…

如何在Zynq-7000上烧写PL Image

在Zynq-7000上编程PL大致有3种方法&#xff1a; 1. 用FSBL&#xff0c;将bitstream集成到boot.bin中 2. 用U-BOOT命令 3. 在Linux下用xdevcfg驱动。 步骤&#xff1a; 1. 去掉bitstream的文件头 用FSBL烧写PL Images没有什么好说的&#xff0c;用Xilinx SDK的Create Boot Image…

单端口RAM

单端口RAM 题目描述 设计一个单端口RAM,它有: 写接口,读接口,地址接口,时钟接口和复位;存储宽度是4位,深度128。注意rst为低电平复位 信号示意图: 单口RAM的实现原理 建立一个reg的数组,将数据存储进来,进行的是读、写互不干扰的读写机制,即要么读要么写。这个时…

什么叫黑名单?黑名单还能贷款吗?

黑户&#xff0c;也就是大家经常听说的黑名单。有过贷款经历的朋友估计都会谈“黑”色变&#xff0c;因为一旦你“涉黑”&#xff0c;你的贷款基本就没戏了。那什么是黑名单&#xff1f;是不是个人征信上写一个大大的“黑”字呢&#xff1f;其实所谓的黑名单只是一种通俗的说法…

内部爆料:信用卡被盗刷,如何把风险降到最低?

信用卡在身上&#xff0c;可是手机却收到了异地的交易信息。相信很多人的第一反应是卡被盗刷了&#xff0c;赶紧打电话挂失&#xff0c;其实这并不是最好的选择。根据银行人提供的内部消息&#xff0c;如果信用卡被盗刷&#xff0c;这样做会把风险降到最低&#xff1a;步骤一&a…

RAM的简单实现

RAM的简单实现 题目描述 实现一个深度为8,位宽为4bit的双端口RAM,数据全部初始化为0000。具有两组端口,分别用于读数据和写数据,读写操作可以同时进行。当读数据指示信号read_en有效时,通过读地址信号read_addr读取相应位置的数据read_data,并输出;当写数据指示信号wri…

Cadence元器件库

Cadence ORCAD CAPTURE 元件库介绍 Ieee 文件夹 ieee_ 百度百科 美国电气和电子工程师协会 (IEEE) 是一个国际性的电子技术与信息科学工程师的协会&#xff0c;是世界上最大的专业技术组织之一&#xff08;成员人数&#xff09;&#xff0c;拥有来自 175 个国 ... IEEE …

没有工作怎么申请贷款?

大家都知道&#xff0c;贷款是需要考核借款人的职业&#xff0c;要么你是上班族&#xff0c;有稳定的工作&#xff0c; 要么你是企业主&#xff0c;有自己的生意。那对于那些既没有工作&#xff0c;也没有生意的人来说&#xff0c;想贷款怎么办呢&#xff1f;1、实物抵押贷款如…

买房为什么要少出首付,多贷款?

买房到底是全款买房好呢&#xff0c;还是贷款买房好呢&#xff1f;最近有一个朋友买了套房子&#xff0c;到处在借钱。我问他&#xff0c;你首付不够吗&#xff1f;这朋友说&#xff0c;如果按三成首付算的话&#xff0c;早就够&#xff0c;但是不想贷款&#xff0c;白白给银行…

Johnson Counter

Johnson Counter 题目描述 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下。 电路的接口如下图所示。 timescale 1ns/1nsmodule JC_counter(input clk ,input rst_n,output reg [3:0…

ORCAD CAPTURE 元件库详解

1 AMPLIFIER.OLB 共182个零件&#xff0c;存放模拟放大器IC&#xff0c;如CA3280&#xff0c;TL027C&#xff0c;EL4093等。 2 ARITHMETIC.OLB 共182个零件&#xff0c;存放逻辑运算IC&#xff0c;如TC4032B&#xff0c;74LS85等。 3 ATOD.OLB 共618个零件&#xff0c;存放A/D转…

Using Artica Squid Open Source Project to Build Powerful and Safe but Simple to Use Proxy

Looking for a pre-installed GUI based Proxy for a while and found Artica recently. The feature is pretty attractive and GUI interface looks cool. What is Artica? “Artica Proxy is an appliance that claim to manage Squid-cache proxy with all features that …