技术分享 | 开发板网口热插拔自动获取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地址。

注意可能会出现延迟,可以稍等一下查看。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将开发板的网络配置设置自动获取IP地址(DHCP),您可以按照以下步骤进行操作: 1. 连接到开发板:通过串口、SSH或其他适当的方式连接到开发板的终端。 2. 进入网络配置文件目录:在大多数Linux发行版中,网络配置文件位于`/etc/network/interfaces`或`/etc/sysconfig/network-scripts/`目录下。使用命令`cd`切换到正确的目录。 3. 编辑网络配置文件:使用文本编辑器(如vi或nano)打开网络配置文件。 4. 查找网络接口配置:在配置文件中找到与您要配置的网络接口对应的节(通常以`eth`或`enp`开头)。例如,如果要配置的接口是eth0,那么找到与eth0相关的节。 5. 配置接口为自动获取IP地址:在接口的节中,将IP地址设置自动获取。对于DHCP,通常使用下面这行配置: ``` iface eth0 inet dhcp ``` 6. 保存并退出:在完成编辑后,保存并关闭文件。 7. 重新启动网络服务:根据您的Linux发行版,使用适当的命令来重新启动网络服务。例如,可以使用以下命令重启网络服务: ``` sudo service networking restart ``` 或者 ``` sudo systemctl restart networking ``` 8. 等待网络配置生效:一旦网络服务重新启动,开发板将尝试通过DHCP协议自动获取IP地址和其他网络配置信息。这可能需要一些时间,请等待几秒钟或几分钟。 9. 检查IP地址:使用命令`ifconfig`或`ip addr`检查开发板IP地址。如果成功获取IP地址,则表示配置成功。 请注意,上述步骤可能会因为使用的Linux发行版或网络配置文件的位置而有所不同。确保根据您的具体情况进行相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值