如何让无线网卡的无线电默认关闭?

如何让无线网卡的无线电默认关闭?

我的台式机的 PCI 无线网卡一直在扫描可用的无线网络,但我很少使用它。我可以一直关闭无线网卡直到我需要它为止吗?

答案1

使用网络管理器的“现代”解决方案:只需取消选中已启用无线网络管理器小程序(KDE:网络管理)中的选项。该命令nmcli nm wifi off等效。如果您偶尔启用 Wi-Fi,但想在重启时将其恢复为禁用,请继续阅读。

无线状态会记录在文件中/var/lib/NetworkManager/NetworkManager.state。若要在启动时禁用 Wi-Fi,请确保键WirelessEnabled保持在false。您可以通过编辑网络管理器的 init 脚本或使用/etc/rc.local以下技巧来实现此目的。您需要的命令是:

sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi

将其放在前面exit 0(如下所述)。rfkill block wifi由于与网络管理器 (NM) 的启动存在竞争,因此仍然需要该命令。一旦 NM 启动,对状态文件的更改将不起作用。


(旧答案涉及编辑文件/etc/rc.local并附有命令的解释rfkill

有点不靠谱,但应该可以工作。可以使用该rfkill命令禁用无线网卡。可以使用显示 rfkill 使用的所有设备rfkill list。示例输出:

0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

Hard blocked取决于硬件设置,例如笔记本电脑上的无线开关。Soft blocked可以通过操作系统(Ubuntu)进行控制。

它是如何工作的?它没有手册页,rfkill在这种情况下运行会提供帮助文本:

Usage:  rfkill [options] command
Options:
        --version       show version (0.4)
Commands:
        help
        event
        list [IDENTIFIER]
        block IDENTIFIER
        unblock IDENTIFIER
where IDENTIFIER is the index no. of an rfkill switch or one of:
        <idx> all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm

啊,现在我们找到了一些线索。您需要rfkill block wifi以 root 身份运行以禁用无线设备。(wlan 是 wifi 的别名,请参阅源代码杀戮)。

现在,如果您想在启动时禁用无线功能,请通过运行将命令添加到 /etc/rc.local sudo nano /etc/rc.local。使用箭头键 / 向上/向下翻页键导航到之前的行exit 0并添加rfkill block wifi,以便文件结束如下:

# By default, this script does nothing

rfkill block wifi
exit 0

完成后,按Ctrl+ X,然后按Y保存并按Enter接受文件名。

如果您决定稍后激活该设备,请运行:sudo rfkill unblock wifi。如果您决定使用无线网卡,请不要忘记从 /etc/rc.local 中删除该行。

答案2

至少有两个 Upstart 作业会影响默认无线状态:

  • /etc/init/rfkill-restore.conf将所有无线电的软阻塞状态恢复到上次关闭时的状态,如 中所记录的/var/lib/rfkill/saved-state
  • /etc/init/network-manager.conf启动网络管理者,进而恢复其无线状态的想法/var/lib/NetworkManager/NetworkManager.state

如果你看一下这两个工作配置,你会发现它们没有时间关系,这对我来说似乎是一个设计缺陷。我猜这种竞争条件很少会成为问题,因为/etc/init/rfkill-restore.conf它更简单,启动条件也更少。

我见过的所有强制关闭无线默认设置的解决方案都尝试使用/etc/rc.local,包括“现代”解决方案@Lekensteyn 和 @rubo77 想出了这个解决方案。不幸的是,在我试过的两台笔记本电脑上,这个解决方案都不起作用。这并不奇怪,因为/etc/rc.local 没有时间关系我可以找到和/etc/init/rfkill-restore.conf。在发出之前/etc/init/network-manager.conf进行长时间的睡眠是解决这种竞争条件混乱的丑陋解决办法,但如果延迟足够长,它就会起作用。/etc/rc.localrfkill block wifi

/var/lib/rfkill/saved-state一个更好的解决方案是让我们在和中强加我们期望的状态/var/lib/NetworkManager/NetworkManager.state 这两个 Upstart 作业甚至被允许运行。我们可以通过创建自己的 Upstart 作业来实现这一点。实际上,我们需要两个作业配置文件来实现我们所需的时间。

我们的第一个作业配置执行我们需要的实际文件修改。它将尽早运行,并且只运行一次。/etc/init/radio-silence.conf使用以下内容创建:

# radio-silence - Ensure radio silence on startup
#
# Override default startup behaviour of radios to ensure they are all
# disabled until the user deliberately enables them. This job requires
# radio-silence-wait to delay start of any services that may depend on
# resources manipulated by this job.

description "Disable all radios by default"

start on local-filesystems

pre-start script
  sed -i -re "s/^(.+[[:space:]]+)[01][[:space:]]*\$/\11/" /var/lib/rfkill/saved-state
  sed -i -re "s/^(WirelessEnabled=).*\$/\1false/" /var/lib/NetworkManager/NetworkManager.state
end script

由于我喜欢在笔记本电脑启动时完全保持无线电静默,因此我软阻止全部无线电,不仅仅是无线,但您可以修改sed上面的第一个,以将此作业的影响限制在您希望软阻止的任何无线设备上。

我们的第二个作业配置负责确保rfkill-restore和作业都不会在完成文件修改network-manager之前启动。创建如下:radio-silence/etc/init/radio-silence-wait.conf

# radio-silence-wait - Helper task for radio-silence
#
# Delays the start of all jobs that may depend on resources manipulated
# by radio-silence job. Avoids the need to modify job configuration of
# those other jobs.

description "Assist radio-silence by delaying jobs it affects"

start on (starting rfkill-restore or starting network-manager)
stop on (started radio-silence or stopped radio-silence)

instance $JOB
normal exit 0 2
task

script
  status radio-silence | grep -q "start/running" && exit 0
  start radio-silence || true
  sleep infinity
end script

使用此解决方案,我不再看到竞争条件问题,尽管我还没有解决rfkill-restore和之间的理论竞争network-manager

有关这些工作如何协同工作以实现我们的时间目标的更多详细信息,请参阅我的问题和答案,“如何创建一个单次执行的 Upstart 作业,以保证在其他两个作业开始之前完成?”

答案3

禁用无线网卡最简单的方法是右键单击 NetworkManager 指示器(面板右上角的小图标),然后取消勾选Enable Wireless。这将关闭(ifconfig wlan0 down)界面,并且不再执行扫描。

答案4

我个人使用木星电源管理小程序禁用笔记本电脑上的无线功能,因为它由特殊按钮控制。我不认为它在主存储库中,我必须添加 Andrew 的 ppaWebupd8为拿到它,为实现它。

希望这可以帮助。

相关内容