基于嵌入式linux的DHCP服务器的搭建与移植(udhcp)

news2025/7/21 5:11:39

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/。

图1 下载udhcp源码压缩包

2.拷贝udhcp源码压缩包到工作目录,并解压到当前目录,如下图所示:

图2 拷贝、解压udhcp压缩包

3.进入udhcp-0.9.8目录,修改dhcpc.c的源码,并保存修改后的源码。如下图所示(注意:如不修改,编译将报错):

图3 修改dhcpc.c的源码文件

4.在udhcp源码目录下,新建编译脚本build.sh,编译脚本内容下所示:

图4 新建编译脚本build.sh

 5.给编译脚本build.sh添加可执行权限,并运行编译脚本,如下所示:

图5 运行编译脚本

6.编译生成udhcpd和udhcpc的应用软件,其中udhcpd为服务器软件;udhcpc为客户端软件。本节仅介绍udhcpd的服务器的搭建。

图6 编译完成

7.查看udhcp目录下的samples/udhcpd.conf的dhcp服务器的配置文件,并进行如下的设置。如下所示:

图7 udhcpd.conf配置文件与修改

8.拷贝udhcpd到嵌入式linux的/sbin目录(注意:udhcpd添加可执行权限);拷贝samples中的udhcpd.conf文件嵌入式linux的/etc目录。

图8 udhcp拷贝到/sbin目录

图9 udhcpd.conf拷贝到/etc目录

9.在嵌入式linux的/var/lib/misc子目录下新建udhcpd.leases的空白文件,如下图所示:

图10 新建udhcpd.leases的空白文件

10.在嵌入式linux下调用如下指令(注意:由于嵌入式板卡ip地址为192.168.0.10eth0为默认网卡,因此配置文件仅需要修改路由信息router),运行udhcpd的服务器。

图11 运行udhcpd的服务器

11、电脑连接到嵌入式linux板卡,采用自动获取ip地址(DHCP)模式,windows利用cmd命令进入dos界面,使用ipconfig命令查看当前网口的ip地址分配是否符合udhcpd.conf配置文件要求。

图12  服务器打印显示为客户端分配的ip地址
图13 dhcp客户端分配ip地址成功

 12.ping指令测试结果如下所示:

图14 ping指令测试结果

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

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

相关文章

利用Python和Sprak求曲线与X轴上方的面积

有n组标本(1, 2, 3, 4), 每组由m个( , , ...)元素( , )组成(m值不定), . 各组样本的分布 曲线如下图所示. 通过程序近似实现各曲线与oc, cd直线围成的⾯积. 思路 可以将图像分成若干个梯形,每个梯形的底边长为(Xn1 - Xn-1),面积为矩形的一半&#xff0c…

原创壁纸小程序独立后台(1.3.5版本介绍)

1、新版本开发目的 历经前两次版本迭代,本人发现在整个系统的架构方面存在一定的缺陷,这种缺陷就是前后端不分离,导致在后期的维护方面遇到了很多问题。 那么这次版本更新并没有带来很多新的功能,而是重构了系统并优化UI&#x…

【PyQt5图形界面编程(2)】:创建工程

创建工程 一、创建工程二、开始开发1、运行Qt5Designer,创建QT窗口2、运行pyUIC,转换xx.ui成xx.py3、main.py中引用xx.py中的类4、打包main.py成main.exe来发布5、执行终端报警处理方法三、其他(如果涉及)1、配置环境变量一、创建工程 采用虚拟环境来创建工程 相关的paka…

STM32FreeRTOS - 按键实现任务挂起和恢复

STM32f103C8T6 FreeRTOS - 按键实现任务挂起和恢复,按键按下时,LED任务执行,led闪烁,当led任务挂起,Led停止闪烁。1.STM32CubeMX 创建任务1.1配置GPIO按键配置外部中断触发GPIO绿灯,红灯配置输出模式1.2配置…

Android中级——色彩处理和图像处理

色彩处理 通过色彩矩阵处理 色彩矩阵介绍 图像的RGBA可拆分为一个4行5列的矩阵和5行1列矩阵相乘 其中4行5列矩阵即为ColorMatrix,可通过调整ColorMatrix间接调整RGBA 第一行 abcde 决定新的 R第二行 fghij 决定新的 G第三行 klmno 决定新的 G第四行 pqrst 决定新…

Ubuntu64位下安装Anaconda3的详细过程

Ubuntu下安装Anaconda的详细过程 下载 Anaconda:首先,您需要在 Anaconda 的官网上下载适合您的 Linux 版本的安装包。您可以使用以下命令下载最新版本: wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh下载完毕后…

春季 3 月 · CSM 认证周末班【提前报名特惠】“全球金牌课程”CST 导师亲授

为什么“模块化分时段”单元教学 ☆ 有脑科学研究资料揭示: 成人学习者持续 3.5 小时已经达到极限,新模式教学,给学习者留有一些时间和空间去消化吸收,反思回顾(Reflection),讲师布置一些小作业,让学员课后去练习&…

React Draggable 实现图片拖拽

React Draggable 实现拖拽 React Draggable 是 react 生态中,最好用的拖拽实现库之一。如果你的应用中需要实现拖拽功能,可以尝试用 react-draggable,它可以满足多数情况下的拖拽需求,比如一个弹出设置浮窗,可以相互遮…

2月更新!EasyOps又迎来新升级,解锁9大新特性

又到了每月产品盘点时刻,9大新功能上线和升级优化,涉及Hyperlnsight超融合持续观测平台、CMDB立体化资源管理平台、DevOps持续交付平台、AutoOps自动化运维平台、EasyHub资源共享平台,在不断的技术创新过程中,进一步加速IT运维效率…

Android framework socketpair

简述 在Linux中,socketpair函数可以用于创建一对相互连接的、通信域为AF_UNIX的套接字,其中一个套接字可用于读取,另一个套接字可用于写入。可以使用这对套接字在同一进程内进行进程间通信(IPC)。 以下是使用socketp…

python 学习

1.转义字符 字符串前加r,使转义字符不起作用 print(r"hello\t world") 2.数据类型 python数据类型分为int,float,bool,str 整数类型的形式: print("二进制0b开头", 0b10111001) print("八进制0o开头", 0o1257436) print("…

Unable to connect to Redis无法连接到Redis

文章目录项目场景:问题描述原因分析:解决方案:项目场景: 提示:这里简述项目相关背景: 在某个项目中的提交按钮不好用 org.springframework.data.redis.RedisConnectionFailureException: Unable to con…

【线程基础篇】

进程 进程本质是一个正在执行的程序。程序运行时,系统会创建进程,并给进程分配独立的内存空间。 CPU时间片切换 CPU时间片切换时,进程需要从切换之前运行的位置开始执行,所以进程还包括程序计数器、堆栈指针。 单核CPU时&…

如何拼接字符串-探究“+号拼接”/“StringBuilder”在不同场景下的效率问题

拼接字符串,在程序开发中很常见也很常用,大家都会:号拼接String.concat(String str)StringBuffer / StringBuilder但这里今天主要探究“号拼接”,“StringBuilder”在不同场景下的效率问题。不都说 StringBuilder 在处理字符串拼接…

保持超低温环境新方法:功耗降至十分之一!

(图片来源:网络)量子比特是量子计算机的主要构建部分,然而热量会导致量子比特容易出错,因此量子系统通常保存在超低温稀释制冷机内,可以将温度保持在绝对零度(−273.15℃)以上。但是…

消费复苏迎“春”暖,服装行业如何开启“狂飙”模式?

2023年开年前2个月,全国多地消费市场的“热度”一直在持续上涨,商场、餐馆、娱乐场所等消费市场人气旺盛,消费复苏的“暖”意十足,一幕幕“忙”起来、“热”起来的场景,让各行各业的商家都对未来充满了期待与信心。在消…

基于SpringBoot的外卖项目的优化

基于SpringBoot的外卖项目的优化1、缓存优化1.1、缓存短信验证码问题分析代码改造1.2、缓存菜品数据实现思路1.3、Spring Cache介绍常用注解CachePutCacheEvictCacheable使用方式1.4、缓存套餐数据实现思路代码改造2、读写分离2.1、主从复制存在的问题介绍配置配置主库--master…

获取浏览器硬件资源的媒体数据(拍照、录音、录频、屏幕共享)

目录一、window.navigator 对象包含有关访问者浏览器的信息取二、MediaDevices1.使用麦克风2.使用摄像头&#xff08;和音频一样&#xff09;3.拍照4.录屏三、MediaRecorder(录制,可录制音频视屏)一、window.navigator 对象包含有关访问者浏览器的信息取 <!DOCTYPE html>…

YZRJ面试

面试过程目录概述需求&#xff1a;设计思路实现思路分析1.自我介绍之类的2.http 和https 协议的区别3.进程和线程的区别4.vm 安装的nginx 和Mysql5.评价拓展实现参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…

自然语言处理(NLP)之求近义词和类比词<MXNet中GloVe和FastText的模型使用>

这节主要就是熟悉MXNet框架中的两种模型&#xff1a;GloVe和FastText的模型(词嵌入名称)&#xff0c;每个模型下面有很多不同的词向量&#xff0c;这些基本都来自wiki维基百科和twitter推特这些子集预训练得到的。我们只需要导入mxnet.contrib中的text模块即可&#xff0c;这里…