在启动时使用 rfkill 解锁 wifi

在启动时使用 rfkill 解锁 wifi

我在嵌入式平台上使用 Debian wheezy(Solidrun Hummingboard 上的 iMX.6),并且 rfkill 阻止了我的 WiFi。

该命令sudo rfkill unblock wifi有效,因此我创建了一个名为的脚本unblock_wifi.sh并将其放入/etc/init.d

#!/bin/bash

logFile=/var/log/unblock_wifi.log
timestamp=$(date +%Y%m%d_%H%M%S)

echo "unblock_wifi - Started at $timestamp" > $logFile
rfkill unblock wifi &>> $logFile

timestamp=$(date +%Y%m%d_%H%M%S)
echo  "unblock_wifi - Done at $timestamp" >> $logFile

启动时,脚本被调用(日志出现在 /var/log 上,时间是正确的。除了启动和停止消息之外什么都没有),但 wifi 仍然被阻止。如果我在启动后自己调用该脚本,则会启用 wifi。

我的脚本已打开/etc/rc2.d/S05unblock_wifi.sh,最后出现在ls,我思考这意味着它最后运行。不过没有 rfkill 的脚本......

如果 init.d 中没有脚本,rfkill 如何运行?它可能在我的脚本运行后运行。我应该将脚本放在哪里才能在 rfkill 之后运行?

编辑:我到处寻找答案,但每个人似乎都建议将脚本放入/etc/init.d,这就是我尝试过的

答案1

您确定顺序正确吗? 问题似乎说ls没有显示正确的顺序,因此您可能需要确保它在其他服务的末尾加载。

答案2

在 Timidger 发表评论后,我开始更深入地了解启动顺序,并发现 connman 是禁用 wifi 的罪魁祸首。禁用其服务满足了我的需要。

供将来参考:启动顺序由每个服务所需的依赖关系决定。如果您希望脚本在某些内容之后运行 - 需要它作为依赖项(请参阅这个问题)--

答案3

在基于 systemd 的系统上,rfkill 状态是通过systemd-rfkill服务控制的,因此这应该执行重新启动后加载和保存的功能。

相关内容