嵌入式Linux上ifpulgd的使用配置与qemu模拟验证-创新互联

问题引入

最近在项目开发中收到了一个非常简单的需求,我们的嵌入式Linux板卡需要在检测到网口插拔后重新配置网络,这在pc环境中非常常见。但是在这个项目的默认SDK中并没有相关配置,稍微查询了一下,在一般pc上通常使用Ifpulgd,并且在较新的busybox中已经提供了这个实用程序,而我们使用的旧版并未提供,因此我这里记录下使用和配置过程并且在qemu中进行了模拟验证。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、合阳网站维护、网站推广。ifpulgd编译

ifpulgd非常简单,下载最新的 busybox源码,编译生成的 ifpulgd位于/usr/sbin中。

启动脚本与配置

busybox并沒有提供示例说明,这里我提供一个启动脚本 /etc/init.d/S50ifpulgd.sh

#! /bin/sh
#
# ifplugd  init.d script
test  -x /usr/sbin/ifplugd || exit 0
test  -f /etc/ifplugd/ifplugd.conf || exit 0

source /etc/ifplugd/ifplugd.conf

case "$1" in
  start)
    echo -n "Starting ifplugd: "
	for i in $INTERFACES
	do
    /usr/sbin/ifplugd -pq -t1 -u1 -d1 -i $i -r /etc/ifplugd/ifplugd.action
	done
    echo "OK"
	;;
  stop)
	echo -n "Stopping ifplugd: "
	for i in $INTERFACES
	do
	kill $(cat /var/run/ifplugd.$i.pid)
	done
	echo "OK"
	;;
  restart|force-reload)
	$0 stop
	sleep 2
	$0 start
	;;
  *)
	echo "Usage: $0 { start | stop | restart | force-reload }">&2
	exit 1
	;;
esac

exit 0

启动脚本通过访问/etc/ifplugd/ifplugd.conf配置文件获取要监控的ETH,然后启动守护进程分别监控ETH接口状态变化,一旦发生变动/etc/ifplugd/ifplugd.action来重新配置网络。

/etc/ifplugd/ifplugd.conf

INTERFACES="eth0 eth1"

/etc/ifplugd/ifplugd.action

#! /bin/sh

case "$2" in
  up)
	/sbin/ifup $1
	;;
  down)
	/sbin/ifdown $1
	;;
  *)
	echo "Usage: /etc/ifplugd/ifplugd.action [interface] { up | down }">&2
	exit 1
	;;
esac

exit 0
qemu模拟

ok,完成配置脚本编写后我们可以直接上机实测,功能很简单。但是孰悉我的朋友都知道我会尽可能的把开发板上的功能上qemu上模拟,那么qemu如何实现网络接口的插拔呢?其实很简单在qemu的monitor终端输入:

set_link net0 off
set_link net0 on

就可以实现与真实板卡上一样的效果了。下图是在我的博客《基于qemu-riscv从0开始构建嵌入式linux系统》中搭建的平台上测试ifplugd效果的示意图,本文全部相关源码全部都更新到该开源项目中,欢迎大家查阅。
github仓库:https://github.com/QQxiaoming/quard_star_tutorial
gitee仓库:https://gitee.com/QQxiaoming/quard_star_tutorial

在这里插入图片描述
在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:嵌入式Linux上ifpulgd的使用配置与qemu模拟验证-创新互联
转载来于:http://ybzwz.com/article/cseooo.html