技术分享 | 开发板网口热插拔自动获取IP地址
客户在使用启扬板卡的过程中提出要求开发板支持网口热插拔自动获取ip地址的需求。
启扬工程师了解到需求后快速确定了解决思路:
通过ifplugd工具监听网口热插拔信息,并且执行指定脚本,脚本中使用udhcpc工具自动获取ip地址。
接下来将对操作过程进行介绍与分析。
编译环境准备✦
主机:ubuntu16.04
编译器:arm-linux-gnueabihf-gcc,版本4.7
开发板环境:ARM32
1、移植libdaemon
因为ifplugd依赖libdaemon库,所以我们需要先编译daemon。
笔者这里选择daemon的版本是官方git下来的版本,git链接如下:
git clone git://git.0pointer.de/libdaemon
git下来之后先执行./bootstrap.sh脚本,此脚本会根据配置环境自动生成configure等编译相关文件,生成之后配置
./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/libdaemon/build,
脚本执行完成之后会检查配置等,这里会出现一个报错:
checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling
遇到这个报错可以在之前配置的configure中加入ac_cv_func_setpgrp_void=yes,即可解决。
最后通过make && make install会将所需的lib以及include文件生成到build文件夹下。
注意:最后用file命令检查一下文件架构,防止误用X86的库。
2、移植ifplugd
本次使用的编译器是4.7版本,因为版本较低,所以ifplugd选择的也是老版本——ifplugd-0.14.tar.gz。
编译过程需要daemon的库和头文件,笔者为了方便直接将库和头文件放到编译器的头文件与库中,准备完毕后直接解压文件,
随后配置./configure --host=arm-linux-gnueabihf --prefix=/home/ylook/Tools/ifplugd-0.14/build
这里会报lynx的错误,可直接在原先配置的configuer后添加“--disable-lynx”,就可解决,
即修改为./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/ifplugd-0.14/build/ --disable-lynx,;
此外还会报“ undefined reference to rpl_malloc”错误,解决方式是修改config.h.in,去掉其中的malloc。
配置完成后make && make install,同样会在build目录下生成我们需要的二进制文件。
注意:为了避免错误,最后依旧是用file命令检查文件架构,确认采用的是否为arm架构。
3、配置相关环境
配置环境过程中,启扬开发板需要daemon的库文件以及编译出来的ifplugd二进制文件。我们将daemon库文件拷贝到/usr/lib下,二进制文件拷贝到/usr/sbin下,输入ifplugd -h命令可以看到成功运行。
根据help信息,我们可以用以下两个命令监听两个网口:
ifplugd -i eth0 -r /etc/network/if.sh
ifplugd -i eth1 -r /etc/network/if.sh
监听两个网口并且执行后面的脚本文件,如果你的文件系统里有/etc/network/interface文件,需要将里面的auto改为allow-hotplug。
而if.sh里面的内容就是简单的检测并且dhcp。
最后我们可以将上面两个命令设置开机自启动,这样就会自动up两个网口,哪怕没有插网线也是准备状态,当插入网线后就会自动获取ip地址。
注意可能会出现延迟,可以稍等一下查看。
技术分享 | 开发板网口热插拔自动获取IP地址相关推荐
- 嵌入式linux通过DHCP自动获取IP地址实现
http://blog.chinaunix.net/uid-17188120-id-2820863.html 前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通). ...
- linux ip命令dhcp,嵌入式linux通过DHCP自动获取IP地址实现获取
前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通). 1.在内核中添加以下选项: Networking ---> [*] Networking suppo ...
- 计算机自动获取IP地址流程详解
计算机自动获取IP地址流程详解 你知道吗? 我们在日常生活中直接插上网线接口就可以直接上网,不需要拨号上网也不需要设置IP地址.那么我们在日常是怎么获得IP地址的呢? 这里就需要介绍一种服务是由Int ...
- html自动获取ip地址,自动获取ip地址怎么设置无线路由器?
自动获取ip地址怎么设置无线路由器?如果用户的宽带类型是:自动获取IP地址上网的,那么在设置无线路由器的时候,正常情况下,只需要在"WAN口连接类型"或者"上网方式&qu ...
- “自动获取IP地址”和“使用固定IP地址”的区别是什么?
自动获取IP地址是动态IP,是通过DHCP来获取IP地址,每次上网这个IP都不一样,在IP地址租期满后就有可能会换IP地址了. 使用固定IP地址是静态IP,是自己指定一个IP地址,ISP随时可以到你家 ...
- CentOS 7如何设置Linux开机自动获取IP地址
centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifco ...
- centOS7 Minima无法上网解决方案(Linux设置开机自动获取ip地址)
本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址. 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令) ...
- Linux如何自动获取IP地址
第一步:激活网卡 系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活. # ifconfig eth0 up 第二步:设置网卡进入系统时启动 想要每次开机就可以自动获取IP地址上网,就要设置网 ...
- centos7修改ip地址自动获取_南京课工场IT培训:如何搭建DHCP服务器及自动获取IP地址及相关操作...
DHCP服务相关理论知识 DHCP服务分为以下三点, IP地址(例:192.168.1.0) 子网掩码(例:255.255.255.0) 网关 DHCP服务的好处: 减少管理员的工作量 避免输入错误的 ...
- 如何设置CentOS 7开机自动获取IP地址详解
本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入"ip addr"并按回车键确定,发现无法获取IP(Cen ...
最新文章
- 数据结构实验之链表二:逆序建立链表
- GridView中DropDownList联动
- 印中合作国际农民丰收节贸易会-张志祥:谋定农业大健康
- CSS3特效之转化(transform)和过渡(transition)
- Linux常用指令自己备用
- case when语句中加上and or的处理方式
- 从C语言到C++的进阶之C到C++的转变(篇一)
- 矩形覆盖-----批了外皮的亲蛙跳
- OpenCV-扩充图像边界cv::copyMakeBorder
- Vue安装 devTool 时报错的解决办法
- c# 操作Word总结(四)——书签使用
- C语言赋值被截断,c语言中赋值截断
- visual assistant x 破解版使用方法及下载地址
- 09_Filter过滤器(访问所有资源前,首先执行自定义过滤器类的doFilter方法)_Listener监听器(监听域对象的改变)
- 解决google打开Github慢的问题,亲测有效
- java8新特性学习笔记(Lambda,stream(),filter(),collect(),map())
- 毕业半年,买了一台MacBook Pro
- 北京理工大学 计算机学院 书院,书院交流 | 北京理工大学睿信书院来我院调研交流...
- 北京Uber优步司机奖励政策(12月31日)
- 未来应用陈鸿:被微信封掉公众号后怎么办?——给微信创业者的10点真诚建议
热门文章
- 高性能计算机英语,“超级计算机”英语怎么说
- 毛玻璃 / 玻璃拟态 处理 backdrop-filter 兼容性问题
- 关于Xray中代理的一些总结
- 百度mip推送工具_链接提交主动推送(实时)、熊掌号天级/周级提交、MIP提交
- 电脑裸奔-中木马-QQ被盗-大团圆结局(QQ申诉艰难旅程)
- Fresher练打字
- SpringSecurity简单集成
- WebRTC 教程二:WebRTC API 和 Leak
- css中关于旋转属性trtransform: rotate影响文字轻微变形的解决办法。
- 五步帮你实现用户画像的数据加工