【Openwrt】Hotplug热插拔事件

Procd作为init系统的一部分,处理热插拔事件,例如网络接口的up/down、新存储设备检测等。它通过执行/etc/hotplug.d目录下的脚本来响应这些事件。不同类型的事件对应不同的目录,如block、iface等。当事件触发时,Procd按字母顺序执行脚本,并提供环境变量供脚本使用。例如,在iface目录下,ACTION变量指示了接口的状态变化,如ifup、ifdown等。此外,文章还提到了NTP相关的热插拔事件,即使在无同步时也会定期触发。在某些硬件上,如MTK7621,接口up/down可能不自动调用热插拔脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

热插拔

当某些事件发生时,Procd(init系统和进程管理守护进程)执行位于/etc/hotplug.d/中的脚本,例如当接口up或down、检测到新的存储驱动器或按下设备上的某个key。它在PPPoE连接或不稳定的网络中,或者使用硬件key时非常有用。

这个功能模拟/扩展了长期退役的hotplug2软件包所做的事情。

它是如何工作的

在/etc/hotplub.d目录中,你会发现一些目录block,iface,net和ntp。

当触发器事件触发时,Procd将按字母顺序执行该触发器目录中的所有脚本。这就是为什么其中的大多数脚本都使用数字前缀。

目录

描述

block

块设备事件:设备连接/断开连接

button

按钮:默认情况下没有创建按钮,请参见/etc/rc.button

dhcp

dhcp相关事件

dsl

DSL调制解调器事件

firewall

防火墙相关事件

iface

接口相关事件: LAN/WAN/等连接或断开

neigh

邻居发现

net

网络相关事件

ntp

时间同步事件:时间步长、时间服务器层变化

tftp

TFTP相关事件

usb

USB设备,如3g调制解调器和tty*

用法/排障

只需将你的要执行的脚本放到正确的hotplug.d目录,如果没有,就创建一个。

Procd在/etc/hotplug.d中执行脚本时公开了大量的信息,例如环境变量。如果您想了解它提供了什么环境变量,请制作这样的脚本:

cat<<"EOF">/etc/hotplug.d/iface/00-logger

logger -t hotplug $(env)

EOF

注:

cat <<EOF 什么意思?

cat命令表示查看,而cat <<EOF命令表示将进行输入,直到以EOF终止符来结束输入(最后的新行)。EOF必须写在一行的头部,前面不能有制表符或者空格。如果结束符EOF前面有制表符或者空格,则EOF不会被当做结束符,只会被视为继续输入的状态。

简单的理解,就是随意输入一堆字符,当输入EOF的时候才真正结束。

然后可以通过logread命令查看输出。

事件分类/目录

iface

对于iface目录中的脚本,有如下(相关的)环境变量:

变量名称

描述

ACTION

ifdown, ifup, ifup-failed, ifupdate, free, reload, iflink, create

INTERFACE

Name of the logical interface which went up or down (e.g. wan or ppp0)

DEVICE

Physical device name which interface went up or down (e.g. eth0.1 or br-lan), when applicable

大多数ACTION的含义很明了,以下几个是不明显的:

描述

ifup-failed

接口up的过程中报错了,up失败

free

接口被删除了,和create相反

iflink

the interface reported the presence of a carrier

当 ACTION 是 ifupdate, 可以设置以下环境变量:

变量名称

描述

IFUPDATE_ADDRESSES

自上次ifupdate事件后,IP地址发生改变了

IFUPDATE_ROUTES

自上次ifupdate事件后,路由发生改变了

IFUPDATE_PREFIXES

if prefix changed since previous ifupdate event

IFUPDATE_DATA

if ubus call network.interface.$INTERFACE set_data … (or equivalent) happened

ntp

以下变量基于busybox中的ntpd进程

变量名称

描述

ACTION

step, stratum, unsync or periodic

freq_drift_ppm

ntp variables

offset

Time adjustment done

stratum

Quality (nr of servers to atomic clock)

poll_interval

ntp variables

即使没有NTP同步,您也会收到一个“周期性”热插拔事件,stratum=16,大约每11分钟输出一次。

MTK7621上接口updown默认是没有调用热插拔脚本的,手工执行脚本可以通过logread看到日志,但是插、拔网口网线是没有打印任何日志的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白20200202

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值