web-dev-qa-db-ja.com

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

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

11
ændrük

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

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

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

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

より良い解決策は、/var/lib/rfkill/saved-stateおよび/var/lib/NetworkManager/NetworkManager.statebeforeで望ましい状態を課すことです。これらの2つのUpstartジョブも許可されます。走る。これを実現するには、独自の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

私はラップトップの起動時に完全な無音を好むため、無線だけでなくall無線をソフトブロックしますが、最初のsedを変更できます上記で、このジョブの影響をソフトブロックするワイヤレスデバイスに限定します。

2番目のジョブ構成は、rfkill-restoreがファイルの変更を完了する前に、network-managerradio-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-restorenetwork-managerの間の理論的な競合に対処していませんが、競合状態の問題は発生しなくなりました。

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

3
froage

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

ワイヤレス状態はファイル/var/lib/NetworkManager/NetworkManager.stateに記憶されます。起動時にWi-Fiを無効にするには、キーWirelessEnabledfalseのままであることを確認します。 Network Managerのinitスクリプトを編集するか、以下の/etc/rc.localトリックを使用して、それを行うことができます。必要なコマンドは次のとおりです。

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

これをexit 0の前に置きます(以下で説明します)。 Network Manager(NM)の起動との競合のため、rfkill block wifiコマンドは引き続き必要です。 NMが開始されると、状態ファイルの変更は無効になります。


rfkillコマンドの説明を含むファイル/etc/rc.localの編集に関する古い回答)

少しハッキーですが、動作するはずです。 rfkillコマンドを使用して、ワイヤレスカードを無効にすることができます。 rfkillで使用されるすべてのデバイスは、rfkill listを使用して表示できます。サンプル出力:

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

Hard blockedはハードウェア設定に依存しています。ノートブックのワイヤレススイッチ。 Soft blockedはOS(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をルートとして実行する必要があります。 (wlanはwifiのエイリアスです。 rfkillソースコード を参照してください)。

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

7
Lekensteyn

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

1
user4124

注: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とwifiをオフにしてください。


tlpの問題:

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

元の答え:

tlpマスク/無効化systemd-rfkill.service to "競合を回避し、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 MangerはWiFiが無効になっていることを示しますが、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ユーザー向けのソリューション:

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

元の答え:

  1. DEVICES_TO_DISABLE_ON_STARTUPを有効にして、BluetoothとWiFiを無効にするように設定すると、動作する場合があります( この人には機能しました

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


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


1
Manoj Sawai

追加できます

ifconfig wlan0 down

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

networkManagerを使用している場合(バージョン0.8.4〜git.20110319t175609.d14809b-0ubuntu3がある場合)、メニュー「Edit Connections」->「Wireless」タブで接続をクリックし、「Edit」、および「Wireless」タブで、「自動的に接続」チェックボックスはオフになっています。

0
waltinator

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

お役に立てれば。

0
Allan