在ARM-Linux系统上装个DHCP服务器,这样就可以通过一条网线与PC连接了。
当然,应该也是可以在PC上装一个DHCP服务器,关于这一点,以后再研究......
安装步骤:
1.下载UDHCP程序包(Google一下就可以了)
2.编译代码。首先修改Makefile,将 CROSS_COMPILE 值改成你将使用的编译器的特征名。注意:编译器名= CROSS_COMPILE+“gcc”
3.将编译好的udhcpd文件拷贝到ARM-Linux系统的/opt/udhcp/目录下面
4.拷贝UDHCP程序包中的/samples/udhcpd.conf文件拷贝到ARM-Linux系统的/etc/目录下面
5.配额制ARM-Linux系统的IP设置。打开/etc/init.d/rcS文件,找到以 /sbin/ifconfig eth0 开头的行,修改为
/sbin/ifconfig eth0 192.168.0.50 netmask 255.255.255.0
注意:这里的IP地址设置必须在192.168.0.20 至 192.168.0.254之间,这是由配置文件udhcpd.conf中的设定所决定的。当然也可以改变udhcpd.conf设置,如:改成173.1.1.10 到 173.1.1.222
注意:ARM系统中可能有多块网卡,这里可以根据实际需要去选择网卡来进行设置。但是设置的时候一定要注意保持rcS 和 udhcpd.conf 之间的统一,udhcpd.conf中的interface指的是使用那个网口来着DHCP服务器,默认是eth0。
http://udhcp.busybox.net/
下载Download the latest version (includes client):
udhcp-0.9.8.tar.gz
(43k) 31 Oct, 2002
在KERNEL中需要将 Packet socket和IP: DHCP support编译进内核或编译成模块.
DHCP服务器端:(编译器2.95.3)1. 修改Makefile: 添加: CROSS_COMPILE=arm-linux-2. #make , 把生成的dhcpd文件下载到板子上.make LDFLAGS="-static"
使用/usr/local/arm/2.95.3/bin/arm-linux-strip处理一下,3. #cp samples/udhcpd.conf /etc/ #copy udhcp/samples下的文件到目标板子的 /etc目录
4. # vi /etc/udhcpd.conf: 修改如下:
3 # The start and end of the IP lease block
4
5 start 192.168.1.20 #default: 192.168.0.20 为
winXP的ip地址范围
6 end 192.168.1.25 #default: 192.168.0.254
9 # The interface that udhcpd will use
10
11 interface
wlan0 #default: eth 0
#目标板子上的无线网卡wlan0
85 #Examles
86
opt dns 222.201.130.30 222.201.130.33 #dns服务器
87 option subnet 255.255.255.0
88
opt router 192.168.1.10 #wlan的 ip地址,做为网关地址
89 #opt wins 192.168.10.10 #注释掉
90 option dns 192.168.1.10 # appened to above DNS servers for a total of 3
91 option domain local
92 option lease 864000 # 10 days of seconds
5 # ./dhcpd
//运行dhcpd服务器6 .设置内网winXP主机的无线上网方式为自动获取ip地址
下面是dhcp客户端的,在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。
关键点要把
examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script
运行udhcpc
~ # udhcpc
udhcpc (v1.5.1) started
Sending discover...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Lease of 59.64.134.99 obtained, lease time 10800
deleting routers
route: SIOC[ADD|DEL]RT: No such process
adding dns 211.68.71.4
adding dns 211.68.71.5
adding dns 202.106.196.115
adding dns 202.106.0.20
DHCP:解析开发板上动态获取ip的2种实现方法详解
DHCP
动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:
1.给内部网络或网络服务供应商自动分配IP地址
2.给用户给内部网络管理员作为对所有计算机作中央管理的手段。
方法一:dhclient
1.下载
https://www.isc.org/software/dhcp/
2.解压
tar-zxvf dhcp-3.1.3.tar.gz
3.配置
cddhcp-3.1.3
./configure
成功之后生成work.linux-2.2文件夹.
4.编译
make "CC=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc-static"
可以在work.linux-2.2/client目录,也可以在dhcp-3.1.3目录下make,
5.拷贝
在work.linux-2.2client编译生成dhclient。
拷贝配置文件dhcp-3.1.3/client/dhclient.conf和/dhcp-3.1.3/client/scripts/linux 到开发板的/sbin/目录下,并linux文件重命名为dhclient-script,并修改该文件的第一行#! /bin/bash 为#! /bin/sh,保存后,修改权限 chmod +x /sbin/dhclient-script
6.创建目录
mkdir-p /var/state/dhcp
在/var目录下创建state目录,再在state目录下创建dhcp目录。
7.运行
dhclient ra0
结果:
复制代码 代码如下:
InternetSystems Consortium DHCP Client V3.1.3
Copyright2004-2009 Internet Systems Consortium.
Allrights reserved.
Forinfo, please visit https://www.isc.org/software/dhcp/
Listeningon LPF/ra0/7c:dd:90:25:9f:a9
Sendingon LPF/ra0/7c:dd:90:25:9f:a9
Sendingon Socket/fallback
DHCPDISCOVERon ra0 to 255.255.255.255 port 67 interval 6
DHCPDISCOVERon ra0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVERon ra0 to 255.255.255.255 port 67 interval 14
DHCPOFFERfrom 192.168.1.1
DHCPREQUESTon ra0 to 255.255.255.255 port 67
DHCPACKfrom 192.168.1.1
bound to 192.168.1.31 -- renewal in 282261 seconds.
方法二、udhcpc
udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微- DHCP -客户端(μDHCPc)。
1.udhcpc -i eth0
udhcpc只是获取一个IP,我们需要把usybox-1.1.2examplesudhcp下的脚本simple.script改名为default.script,放在开发板上的/usr/share/dhcpc/目录下,才能将获取的IP写到指定的网卡中。
2.ifconfig
详细出处参考:http://www.jb51.net/article/37379.htm
3.2. DHCP服务
DHCP服务在开发环境中的主要作用是支持Linux内核通过网络根文件系统启动。开发主机通过DHCP服务为目标机提供各网络配置。按下列步骤安装、配置并启动DHCP服务。
3.2.1. 获得下列软件包
从网络上下载DHCP服务主要依赖的下列软件包:
dhcp-3.0.5-1.fc6.i386.rpm
dhcp-devel-3.0.5-1.fc6.i386.rpm
dhcpv6-0.10-32.fc6.i386.rpm
dhcpv6_client-0.10-32.fc6.i386.rpm
3.2.2. 删除已安装的冲突软件包
[root@lxf dhcp]# rpm -e --nodeps dhclient-3.0.6-10.fc8
[root@lxf dhcp]# rpm -e --nodeps dhcpv6-client-0.10-51.fc8
3.2.3. 安装软件包
[root@lxf dhcp]# rpm -ivh *.rpm
warning: dhcp-3.0.5-1.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
1:dhcp ########################################### [ 25%]
2:dhcp-devel ########################################### [ 50%]
3:dhcpv6 ########################################### [ 75%]
4:dhcpv6_client ########################################### [100%]
3.2.4. 修改配置文件
修改配置文件/etc/dhcpd.conf,具体内容参见清单5。
清单5 文件/etc/dhcpd.conf
--------------------------------------------------------------------------------
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style none;
allow bootp;
subnet 135.1.2.0 netmask 255.255.255.0{
default-lease-time 1209600;
max-lease-time 31557600;
group{
host 135.1.2.150{
#hardware ethernet 00:00:C0:FF:EE:01;
hardware ethernet 08:00:3e:26:0a:5b;
fixed-address 135.1.2.150;
option root-path "/arm-linux/rootfs/nfs-rootfs"
}
}
}
--------------------------------------------------------------------------------
3.2.5. 启动DHCP服务
[root@lxf dhcp]# service dhcpd restart
关闭 dhcpd: [失败]
启动 dhcpd: [确定]