DHCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。DHCP是一个很重要的局域网的网络协议,使用UDP协议实现动态配置功能,主要有以下用途:
1、为内部网络或网络服务供应商自动分配IP地址;
2、为用户或者内部网络管理员作为对所有计算机作中央管理的手段;
3、为内部网络用户接受IP租约。
DHCP包括DHCP服务器和DHCP客户端两种模式,其中DHCP服务器用于设置IP分配规则、IP分配范围等管理功能;DHCP客户端提出分配请求,自动获得IP地址。本节介绍基于arm64的嵌入式linux移植udhcp搭建DHCP服务器的详细过程。本文采用udhcp源码压缩包进行aarch64交叉编译移植,并利用计算机作为客户端进行测试。
1.首先下载udhcp的压缩包udhcp-0.9.8.tar.gz,本文从厦门大学ftp路径下载。Index of /gentoo/distfiles/93/。
![](https://i-blog.csdnimg.cn/blog_migrate/80d072027f2faa7a237b3c6276de2655.png)
2.拷贝udhcp源码压缩包到工作目录,并解压到当前目录,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/49faa5109a52846c1f44f4f37423e7a5.png)
3.进入udhcp-0.9.8目录,修改dhcpc.c的源码,并保存修改后的源码。如下图所示(注意:如不修改,编译将报错):
![](https://i-blog.csdnimg.cn/blog_migrate/789e5771ab6ba5d504597e45e7223013.png)
4.在udhcp源码目录下,新建编译脚本build.sh,编译脚本内容下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/859bf6a0dc435479a53fd8435829c181.png)
5.给编译脚本build.sh添加可执行权限,并运行编译脚本,如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/736cdef559f83d47a2d03c65c6d1222b.png)
6.编译生成udhcpd和udhcpc的应用软件,其中udhcpd为服务器软件;udhcpc为客户端软件。本节仅介绍udhcpd的服务器的搭建。
![](https://i-blog.csdnimg.cn/blog_migrate/33f07ac20a05ce56e2e9d18e3d752112.png)
7.查看udhcp目录下的samples/udhcpd.conf的dhcp服务器的配置文件,并进行如下的设置。如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/7760e6cb475b39b5a52dedad51ffbf40.png)
8.拷贝udhcpd到嵌入式linux的/sbin目录(注意:udhcpd添加可执行权限);拷贝samples中的udhcpd.conf文件嵌入式linux的/etc目录。
![](https://i-blog.csdnimg.cn/blog_migrate/0194535fcf43e790d2ee87d1f9a3d8fc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/abb715cee3af42874fa020a9eaef3496.png)
9.在嵌入式linux的/var/lib/misc子目录下新建udhcpd.leases的空白文件,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/8f28a4daf06be12229042be258145da5.png)
10.在嵌入式linux下调用如下指令(注意:由于嵌入式板卡ip地址为192.168.0.10,eth0为默认网卡,因此配置文件仅需要修改路由信息router),运行udhcpd的服务器。
![](https://i-blog.csdnimg.cn/blog_migrate/7f32cb70c3e76d1ec345547e8eba980a.png)
11、电脑连接到嵌入式linux板卡,采用自动获取ip地址(DHCP)模式,windows利用cmd命令进入dos界面,使用ipconfig命令查看当前网口的ip地址分配是否符合udhcpd.conf配置文件要求。
![](https://i-blog.csdnimg.cn/blog_migrate/03616189ac4f7d8e58a4d6bab45177fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad7ec1ba1ee3032ff5dbce0d85f75301.png)
12.ping指令测试结果如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/feb40bfa7e908137efc3b52b7c499f39.png)