回答:
デフォルトのワイヤレス状態に影響する少なくとも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ジョブを作成するにはどうすればよいですか?」
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 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
ワイヤレスデバイスを無効にするには、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から行を削除することを忘れないでください。
/etc/rc.local
スクリプトはroot権限で実行されるため、sudoは必要ありません。ルート権限なしでwifiを無効にできることはほとんどありません。rfkill block wifi
またはを試してみるとrfkill unblock wifi
、「RFKILL制御デバイスを開けません:許可が拒否されました」と表示されます。
$ rfkill block wifi
とNetworkManagerアプレットに「Wireless is disabled」と$ iwconfig
表示され、が表示されますTx-Power=off
。$ rfkill unblock wifi
この効果を元に戻します。
/etc/rc.local
。:この代わりに使用してください/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.state
、設定を保持するファイルが存在しますが、そのWirelessEnabled=false
1つです。私は、あなたの質問に投稿します。..
ワイヤレスカードを無効にする最も簡単な方法は、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とWi-Fiをオフにしてください。
tlp
:tlp 0.8-1
、16.04リポジトリで利用可能です。tlp 0.9-1
linrunner 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 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
linrunner ppa を使用するように更新します。元の回答:
有効にするDEVICES_TO_DISABLE_ON_STARTUP
と無効にBluetoothと無線LANに設定するとあなたのために働くことがあります。(それは、この人のために働いていました)
askubuntuのこの質問。これは、この質問に対する古い回答に似ています。しかし、私は自分で試していないことに注意してください。動作する場合と動作しない場合があります。
その他のソース:systemd-rfkill、tlp-configuration
GRUB_CMDLINE_LINUX
とGRUB_CMDLINE_LINUX_DEFAULT
プラス(unmentioned)sudo update-grub
コマンドを、私はPop_OSで仕事にそれを得ることができませんでした!19.10(Ubuntu 19.10に基づいています)。によればsystemctl status systemd-rfkill
、このサービスはすべてのブートですでに実行されており、デフォルト値は1
なので、この作業の必要はないはずです。の情報に基づいて、man systemd-rfkill
「早期起動時」の無線状態を記憶することがデフォルトの動作であるはずであり、このコンポーネントが何らかの形で壊れていると信じさせられます。
追加できます
ifconfig wlan0 down
に/etc/rc.local
、しかし最初に、
NetworkManager(バージョン0.8.4〜git.20110319t175609.d14809b-0ubuntu3を使用)を使用している場合は、メニュー「接続の編集」->「ワイヤレス」タブに移動し、接続をクリックして、「編集」をクリックしてください。 、[ ワイヤレス ]タブで[ 自動的に接続 ] チェックボックスがオフになっていることを確認してください。
rfkill
。