Беспроводная карта PCI моего настольного компьютера всегда сканирует доступные беспроводные сети, но я использую ее редко. Могу ли я оставить радио выключенным, пока оно мне не понадобится?
Существует по крайней мере два Новомодных задания, которые влияют на беспроводное состояние по умолчанию:
/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.local
до издания rfkill block wifi
ужасное обходное решение для этой путаницы состояния состязания, но она работает, если задержка является достаточно длительной.
Лучшее решение состояло бы в том, чтобы мы наложили наши требуемые состояния в /var/lib/rfkill/saved-state
и /var/lib/NetworkManager/NetworkManager.state
прежде чем тем двум Новомодным заданиям даже разрешают работать. Мы можем достигнуть этого путем создания нашего собственного Новомодного задания. На самом деле нам будут нужны два конфигурационных файла задания для достижения синхронизации, в которой мы нуждаемся.
Наша первая конфигурация задания делает фактические модификации файла, в которых мы нуждаемся. Это будет работать как можно раньше и будет только работать однажды. Создать /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
.
Для большего количества детали о том, как эти задания сотрудничают для достижения нашей временной цели, обратитесь к моему вопросу и ответу, "Как я создаю Новомодное задание единственного выполнения, которое, как гарантируют, будет завершаться, прежде чем два других задания начнутся?"
Самый простой способ отключить беспроводную карту - щелкнуть правой кнопкой мыши индикатор NetworkManager (маленький значок в правом верхнем углу панели) и снять флажок Enable Wireless
. Это разрушает (ifconfig wlan0 down
) интерфейс и больше не выполняет сканирование.
Лично я использую Jupiter апплет управления питанием, чтобы отключить беспроводную связь на моем ноутбуке, так как она управляется специальной кнопкой. Я не думаю, что в основном репо я должен был добавить ppa от Эндрю в Webupd8 , чтобы получить его.
Надеюсь, это поможет.
Вы можете добавить
ifconfig wlan0 down
к /etc/rc.local
, но сначала
убедитесь, что, если вы используете NetworkManager (у меня версия 0.8. 4 ~ git.20110319t175609.d14809b-0ubuntu3), вы переходите в меню « Редактировать соединения » -> « Беспроводная », нажмите на соединение, нажмите « Редактировать [ 118] ", и убедитесь, что на вкладке" Wireless "флажок" Автоматически подключаться "НЕ установлен.
«Современное» решение с использованием Network Manager: просто снимите флажок Wireless Enabled в апплете Network Manager (KDE: Управление сетью). Команда nmcli nm wifi off
эквивалентна. Продолжайте чтение, если вы время от времени включаете Wi-Fi, но хотите перезагрузить его при перезагрузке.
Состояние беспроводной связи запоминается в файле /var/lib/NetworkManager/NetworkManager.state
. Чтобы отключить Wi-Fi при загрузке, убедитесь, что ключ WirelessEnabled
остается на false
. Вы можете сделать это, отредактировав сценарий инициализации Network Manager или воспользовавшись уловкой /etc/rc.local
ниже. Вам нужна команда:
sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi
Поставьте это перед exit 0
(как описано ниже). Команда rfkill block wifi
все еще необходима из-за гонки с запуском Network Manager (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).
Как это работает? У него нет man-страницы, в этом случае команда 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 kbd> + X kbd>, затем нажмите Y kbd>, чтобы сохранить его, и нажмите Enter kbd>, чтобы принять имя файла.
Если вы решите активировать устройство позже, запустите: sudo rfkill unblock wifi
. Не забудьте удалить строку из /etc/rc.local, если вы решите использовать беспроводную карту.
tlp
, прочитайте весь ответ. Все ответы на этот вопрос уже устарели и не работают в новых версиях Ubuntu, использующих systemd. Ответ 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
: strike>
tlp 0.8-1
который доступен в 16.04 репозиториях. После обновления до tlp 0.9-1
с использованием linrunner ppa, ВСЕ были решены. Первоначальный ответ:
tlp
маскирует / отключает systemd-rfkill.service
- ", чтобы избежать конфликтов и обеспечить правильную работу опций переключения радиоустройств TLP ". ( Source-1 , Source-2 )
Это означает, что передача параметра ядра не будет работать для вас.
Вот небольшой фрагмент (около строки 195) из стандартного файла конфигурации tlp (/etc/default/tlp
).
# 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
, отключите Wi-Fi и Bluetooth (используя rfkill block all
) и продолжите перезапуск, каким-то образом WiFi включается при каждой 2-й или 3-й загрузке. Нет гарантии, что при следующей загрузке WiFi будет отключен. Удивительно, но tlp
удается отключить Bluetooth при каждой загрузке.
То же самое относится ко второму варианту во фрагменте, 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!"
.Я отключил
blockquote>RESTORE_DEVICE_STATE_ON_STARTUP
, прежде чем включитьDEVICES_TO_DISABLE_ON_STARTUP
, чтобы избежать конфликтов.
tlp-rdw
не работают должным образом. strike>
tlp
пользователей: tlp 0.9-1
с использованием linrunner ppa. Оригинальный ответ:
Включение DEVICES_TO_DISABLE_ON_STARTUP
и настройка его на отключение Bluetooth и WiFi могут работать для вас. ( Это сработало для этого человека )
Этот вопрос здесь, на Askubuntu. Это похоже на более старый ответ на этот вопрос. Но учтите, что я сам не пробовал. Это может или не может работать.
Другие источники: systemd-rfkill , tlp-configuration