デスクトップのPCIワイヤレスカードは常に利用可能なワイヤレスネットワークをスキャンしていますが、めったに使用しません。必要になるまで無線をオフにできますか?
デフォルトのワイヤレス状態に影響する少なくとも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.local
alsoも時間的関係がないため/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.state
beforeで望ましい状態を課すことです。これらの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-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ジョブを作成するにはどうすればよいですか?」
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
の前に置きます(以下で説明します)。 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から行を削除することを忘れないでください。
ワイヤレスカードを無効にする最も簡単な方法は、NetworkManagerインジケーター(パネルの右上にある小さなアイコン)を右クリックし、Enable Wireless
のチェックを外すことです。これにより、インターフェースがダウン(ifconfig wlan0 down
)し、スキャンは実行されなくなります。
tlp
を使用する場合は、回答全体をお読みください。この質問に対する回答はすべてかなり古いものであり、systemdを使用する新しいUbuntuリリースでは機能しません。 froageの答え 14.04では動作しましたが、16.04では動作しません。
Systemdはsystemd-rfkill.service
を使用して、シャットダウン中にrfkillスイッチの状態を保存し、ブートごとにそれを復元します。
ブートごとにrfkillスイッチの状態を復元するには、カーネルコマンドラインパラメーターを渡す必要があります。
/etc/default/grub
を開きます。systemd.restore_state=1
のパラメーターとしてGRUB_CMDLINE_LINUX
を追加します。その行はGRUB_CMDLINE_LINUX="systemd.restore_state=1"
になります。 GRUB_CMDLINE_LINUX_DEFAULT
にも追加できます。どちらも機能します。 この質問を参照 詳細については。これにより、ブートのたびにrfkill状態が確実に復元されます。再起動する前に、必ずbluetoothとwifiをオフにしてください。
tlp
の問題: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
ユーザー向けのソリューション:tlp 0.9-1
に更新します。元の答え:
DEVICES_TO_DISABLE_ON_STARTUP
を有効にして、BluetoothとWiFiを無効にするように設定すると、動作する場合があります( この人には機能しました )
この質問 askubuntuのこちら。これは、この質問に対する古い回答に似ています。しかし、私は自分で試していないことに注意してください。動作する場合と動作しない場合があります。
その他のソース: systemd-rfkill 、 tlp-configuration
追加できます
ifconfig wlan0 down
/etc/rc.local
に、しかし最初に、
networkManagerを使用している場合(バージョン0.8.4〜git.20110319t175609.d14809b-0ubuntu3がある場合)、メニュー「Edit Connections」->「Wireless」タブで接続をクリックし、「Edit」、および「Wireless」タブで、「自動的に接続」チェックボックスはオフになっています。