嵌入式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://hbruida.cn/article/cseooo.html