ワイヤレスカードの無線をデフォルトでオフにするにはどうすればよいですか?


11

デスクトップのPCIワイヤレスカードは常に利用可能なワイヤレスネットワークをスキャンしていますが、めったに使用しません。必要になるまで無線をオフにできますか?

回答:


4

デフォルトのワイヤレス状態に影響する少なくとも2つのUpstartジョブがあります。

  • /etc/init/rfkill-restore.confに記録されているように、すべての無線のソフトブロック状態を最後にシャットダウンしたときの状態に復元し/var/lib/rfkill/saved-stateます。
  • /etc/init/network-manager.confはネットワークマネージャーを起動します。ネットワークマネージャーはから無線状態の考えを復元し/var/lib/NetworkManager/NetworkManager.stateます。

これらの2つのジョブ構成を見る一時的な関係ないことがわかります。これは、設計上の欠陥のようです。私は、この競合状態が問題になること/etc/init/rfkill-restore.confはめったにないと思います。なぜなら、はるかに単純で、開始条件が少ないからです。

@Lekensteynと@ rubo77が思いつい/etc/rc.local「現代の」ソリューションを含め、私が見たワイヤレスオフのデフォルトを強制するためのすべてのソリューションは、使用しようとします。残念ながら、私が試した2台のラップトップのどちらでも、このソリューションは機能しません。ので、これは特に驚くべきことではありません/etc/rc.local 持っていない時間的な関係私はのいずれかに見つけることができる/etc/init/rfkill-restore.confとし/etc/init/network-manager.conf/etc/rc.localを発行する前に長時間スリープ状態にすることrfkill block wifiは、この競合状態の混乱のい回避策ですが、遅延が十分に長ければ機能します。

より良い解決策は/var/lib/rfkill/saved-state、これら2つのUpstartジョブの実行が許可される/var/lib/NetworkManager/NetworkManager.state 前に、望ましい状態を強制することです。これを実現するには、独自のUpstartジョブを作成します。実際、必要なタイミングを実現するには、2つのジョブ構成ファイルが必要です。

最初のジョブ構成は、必要な実際のファイル変更を行います。できるだけ早く実行され、1回だけ実行されます。/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、上記の最初のラジオを変更して、ソフトブロックしたいワイヤレスデバイスへのこのジョブの影響を制限することができます。

2番目のジョブ構成は、ファイルの変更が完了する前に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

一時的な目標を達成するためにこれらのジョブがどのように連携するかの詳細については、「2つの他のジョブが開始する前に完了することが保証された単一実行Upstartジョブを作成するにはどうすればよいですか?」


7

Network Managerを使用した「モダン」ソリューション:Network Managerアプレット(KDE:Network Management)の[ Wireless Enabled ]オプションをオフにするだけです。コマンドnmcli nm wifi offは同等です。Wi-Fiを散発的に有効にしているが、再起動時に無効に戻したい場合は、読み続けてください。

ワイヤレス状態はファイルに記憶されます/var/lib/NetworkManager/NetworkManager.state。起動時にWi-Fiを無効にするには、キーWirelessEnabledがのままであることを確認してくださいfalse。Network Managerの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 blockedOS(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のエイリアスです。rfkillのソースコードを参照してください)。

ここで、起動時にワイヤレス機能を無効にする場合は、を実行して/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から行を削除することを忘れないでください。


ありがとう。理由はわかりませんが、rfkillが機能するためにsudoを使用する必要はないようです。
アーンドリューク

1
/etc/rc.localスクリプトはroot権限で実行されるため、sudoは必要ありません。ルート権限なしでwifiを無効にできることはほとんどありません。rfkill block wifiまたはを試してみるとrfkill unblock wifi、「RFKILL制御デバイスを開けません:許可が拒否されました」と表示されます。
レーケンシュタイン

ThinkPad X60とPCIワイヤレスカードを搭載したデスクトップの両方で、実行する$ rfkill block wifiとNetworkManagerアプレットに「Wireless is disabled」と$ iwconfig表示され、が表示されますTx-Power=off$ rfkill unblock wifiこの効果を元に戻します。
アーンドリューク

1
私は遅れてそれを解決しました:Ubuntu 14.04では、wifiを無効にする前に数秒待つ必要があるようです/etc/rc.local。:この代わりに使用してください/bin/sleep 10 && rfkill block wifi
rubo77

1
@ rubo77ここ(Arch Linux、Network Manager 0.9.8.10-3)では/var/lib/NetworkManager/NetworkManager.state、設定を保持するファイルが存在しますが、そのWirelessEnabled=false1つです。私は、あなたの質問に投稿します。..
Lekensteyn

1

ワイヤレスカードを無効にする最も簡単な方法は、NetworkManagerインジケーター(パネルの右上にある小さなアイコン)を右クリックし、をオフにすることEnable Wirelessです。これによりifconfig wlan0 down、インターフェースがダウン()し、スキャンが実行されなくなります。


2
このメニュー項目をチェックしても、デフォルトの動作には影響しません。次回コンピューターの電源を入れると、無線が再びアクティブになります。
アーンドリューク

1
私のUbuntu 14.04では、ネットワークマネージャーアプレットでそれをオフにすると、再起動後に希望どおりにオフのままになります
rubo77 14

1

注:を使用する場合tlpは、回答全体をお読みください。

この質問に対する答えはすべてかなり古く、systemdを使用する新しいUbuntuリリースでは機能しません。froageの回答は14.04では機能しましたが、16.04では機能しません。

Systemdはsystemd-rfkill.service、シャットダウン中にrfkillスイッチの状態を保存し、ブートごとに復元するために使用します。

ブートごとにrfkillスイッチの状態を復元するには、カーネルコマンドラインパラメーターを渡す必要があります。

  1. /etc/default/grub任意のテキストエディターで開きます。
  2. systemd.restore_state=1パラメータとして追加しますGRUB_CMDLINE_LINUX。その行は今読むべきGRUB_CMDLINE_LINUX="systemd.restore_state=1"です。追加することもできGRUB_CMDLINE_LINUX_DEFAULTます。どちらも機能します。詳細については、この質問を参照してください。

これにより、ブートごとにrfkill状態が確実に復元されます。再起動する前に、BluetoothとWi-Fiをオフにしてください。


の問題tlp

更新:これらの問題はtlp 0.8-1、16.04リポジトリで利用可能です。tlp 0.9-1linrunner ppa を使用するように更新した後、すべての問題が解決されました。

元の回答:

tlpマスク/無効systemd-rfkill.service「を避けるための競合とTLPの無線装置のスイッチングオプションの適切な動作を保証します」。(ソース1ソース2

これは、カーネルパラメーターを渡すことが機能しないことを意味します。

tlpのデフォルト設定ファイル(/etc/default/tlp)からの小さなスニペット(行番号195付近)です。

# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
# on system startup: 0=disable, 1=enable.
# Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
#   are ignored when this is enabled!
RESTORE_DEVICE_STATE_ON_STARTUP=0

# Radio devices to disable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"

# Radio devices to enable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_ENABLE_ON_STARTUP="wifi"
  • ご覧のように、オプションRESTORE_DEVICE_STATE_ON_STARTUPはデフォルトで無効になっています。ただし、そのオプションを有効にしても効果はありません。

    のオプションを有効にした後でもRESTORE_DEVICE_STATE_ON_STARTUP 、wifiとbluetoothを無効にし(を使用rfkill block all)、再起動を続けると、2回目または3回目の起動ごとにWiFiが有効になります。次回の起動時にWiFiが無効になる保証はありません。驚くべきことにtlp、すべてのブートでbluetoothを無効にしておくこと ができます。

  • 同様に、スニペットの2番目のオプション、DEVICES_TO_DISABLE_ON_STARTUPデフォルトでも無効になっています。有効化しても機能しません。Network MangerWiFiが無効になっrfkill listていることを示しますが、WiFiにソフトブロックは表示されません。

    注:行を読みました"Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below are ignored when this is enabled!"

    競合を避けるため、RESTORE_DEVICE_STATE_ON_STARTUP有効にDEVICES_TO_DISABLE_ON_STARTUPする前に無効にしました 。

  • 同様に、提供されtlp-rdwている他のオプションは期待どおりに機能しません。


tlpユーザー向けのソリューション:

更新:tlp 0.9-1linrunner ppa を使用するように更新します。

元の回答:

  1. 有効にするDEVICES_TO_DISABLE_ON_STARTUPと無効にBluetoothと無線LANに設定するとあなたのために働くことがあります。(それは、この人のために働いていました

  2. askubuntuのこの質問。これは、この質問に対する古い回答に似ています。しかし、私は自分で試していないことに注意してください。動作する場合と動作しない場合があります。


その他のソース:systemd-rfkilltlp-configuration



私は両方の修正関与するあなたの答えを試みたGRUB_CMDLINE_LINUXGRUB_CMDLINE_LINUX_DEFAULTプラス(unmentioned)sudo update-grubコマンドを、私はPop_OSで仕事にそれを得ることができませんでした!19.10(Ubuntu 19.10に基づいています)。によればsystemctl status systemd-rfkill、このサービスはすべてのブートですでに実行されており、デフォルト値は1なので、この作業の必要はないはずです。の情報に基づいて、man systemd-rfkill「早期起動時」の無線状態を記憶することがデフォルトの動作であるはずであり、このコンポーネントが何らかの形で壊れていると信じさせられます。
パトリックダーク

0

個人的には、電源管理アプレットのJupiterを使用して、特別なボタンで制御されているラップトップのワイヤレスを無効にします。私はそれを得るためにWebupd8で AndrewからPPAを追加しなければならなかったメインレポにあるとは思わない。

お役に立てれば。


0

追加できます

ifconfig wlan0 down

/etc/rc.local、しかし最初に、

NetworkManager(バージョン0.8.4〜git.20110319t175609.d14809b-0ubuntu3を使用)を使用している場合は、メニュー「接続の編集」->「ワイヤレス」タブに移動し、接続をクリックして、「編集」をクリックしてください。 、[ ワイヤレス ]タブで[ 自動的に接続 ] チェックボックスがオフになっていることを確認してください。


1
これによりインターフェイスがダウンしますが、を使用して無線を無効にするほど電力を節約することはできませんrfkill
gertvdijk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.