무선 카드의 무선 전원을 기본적으로 끄는 방법은 무엇입니까?


11

데스크탑의 PCI 무선 카드는 항상 사용 가능한 무선 네트워크를 검색하지만 거의 사용하지 않습니다. 라디오가 필요할 때까지 계속 꺼둘 수 있습니까?

답변:


4

기본 무선 상태에 영향을주는 Upstart 작업이 두 개 이상 있습니다.

  • /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훨씬 간단하고 시작 조건이 적기 때문에이 경쟁 조건은 거의 문제가되지 않습니다 .

@Lekensteyn과 @ rubo77이 제안한 "현대"솔루션/etc/rc.local포함하여 내가 본 무선 끄기 기본값을 적용하기위한 모든 솔루션을 사용하려고합니다 . 불행히도, 그 해결책은 내가 시도한 두 개의 노트북 중 하나에서 나에게 적합하지 않습니다. 때문에 특히 놀라운 일이 아니다 또한 이없는 시간적인 관계 내가 중 하나를 찾을 수 및 . 를 발행하기 전에 긴 수면을 취하는 것은 이 경쟁 조건 혼란에 대한 추악한 해결책이지만 지연 시간이 충분히 길면 작동합니다./etc/rc.local /etc/init/rfkill-restore.conf/etc/init/network-manager.conf/etc/rc.localrfkill block wifi

우리가 우리의 원하는 상태를 부과하는 더 나은 솔루션이 될 것입니다 /var/lib/rfkill/saved-state/var/lib/NetworkManager/NetworkManager.state 전에 두 갑자기 출세 한 작업이도 실행이 허용됩니다. 자체 Upstart 작업을 생성하여이를 달성 할 수 있습니다. 실제로 필요한 타이밍을 달성하려면 두 가지 작업 구성 파일이 필요합니다.

첫 번째 작업 구성은 필요한 실제 파일 수정을 수행합니다. 가능한 빨리 실행되며 한 번만 실행됩니다. /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-restorenetwork-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-restorenetwork-manager.

이러한 작업이 시간 목표를 달성하기 위해 함께 작동하는 방법에 대한 자세한 내용은 " 질문과 대답 "을 참조하십시오 . "다른 두 개의 작업이 시작되기 전에 단일 실행 Upstart 작업을 완료하려면 어떻게해야합니까?"


7

Network Manager를 사용한 "현대"솔루션 : Network Manager 애플릿 (KDE : 네트워크 관리)에서 무선 사용 옵션을 선택 취소하면 됩니다. 명령 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 (우분투)로 제어 할 수 있습니다.

어떻게 작동합니까? 맨 페이지가 없으므로 running 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 의 소스 코드 를 참조 하십시오 ).

부팅시 무선 기능을 비활성화하려면을 실행하여 /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를 사용할 필요가없는 것 같습니다.
ændrük

1
/etc/rc.local스크립트가 루트 권한으로 실행 되므로 sudo in이 필요하지 않습니다 . 루트 권한없이 wifi를 비활성화 할 가능성은 거의 없습니다. rfkill block wifi또는을 시도 rfkill unblock wifi하면 "RFKILL 제어 장치를 열 수 없습니다 : 권한이 거부되었습니다"라는 메시지가 나타납니다.
Lekensteyn

PCI 무선 카드가 장착 된 ThinkPad X60 및 데스크탑에서 실행 $ rfkill block wifi하면 NetworkManager 애플릿에 "Wireless is disabled"가 표시되고이 $ iwconfig표시됩니다 Tx-Power=off. $ rfkill unblock wifi이 효과를 취소합니다.
ændrük

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=false. 질문에 게시하겠습니다.
Lekensteyn

1

무선 카드를 비활성화하는 가장 쉬운 방법은 NetworkManager 표시기 (패널의 오른쪽 위에 작은 아이콘)를 마우스 오른쪽 단추로 클릭하고을 선택 해제하는 것 Enable Wireless입니다. ifconfig wlan0 down인터페이스 가 다운되고 ( ) 더 이상 스캔을 수행하지 않습니다.


2
이 메뉴 항목을 확인해도 기본 동작에는 영향을 미치지 않습니다. 다음에 컴퓨터를 켜면 무선 라디오가 다시 활성화됩니다.
ændrük

1
Ubuntu 14.04에서는 네트워크 관리자 애플릿에서 켜면 재부팅 후 원하는대로 유지됩니다.
rubo77

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 상태가 복원됩니다. 다시 시작하기 전에 블루투스와 Wi-Fi를 끄십시오.


관련 문제 tlp:

업데이트 : tlp 0.8-116.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 Wi-Fi 및 블루투스를 비활성화하고 (을 사용하여 rfkill block all) 계속 다시 시작 하더라도 두 번째 또는 세 번째 부팅마다 WiFi가 활성화됩니다. 다음 부팅시 WiFi가 비활성화 될 것이라는 보장은 없습니다. 놀랍게도 tlp모든 부팅에서 블루투스를 비활성화 상태로 유지합니다.

  • 스 니펫의 두 번째 옵션도 동일 DEVICES_TO_DISABLE_ON_STARTUP하며 기본적으로 비활성화되어 있습니다. 활성화해도 작동하지 않습니다. Network MangerWiFi가 비활성화되었지만 WiFi에 rfkill list소프트 블록이 표시되지 않음을 나타냅니다.

    참고 : 나는 라인을 읽었습니다 "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하고 당신을 위해 작동 할 수 비활성화 블루투스 및 WiFi로 설정. ( 그것은이 사람을 위해 일 )

  2. 이 질문 은 askubuntu에 있습니다. 이 질문에 대한 이전 답변과 비슷합니다. 그러나 나는 그것을 직접 시도하지 않았다는 점에 유의하십시오. 작동하거나 작동하지 않을 수 있습니다.


다른 출처 : systemd-rfkill , tlp-configuration



나는 모두의 수정과 관련된 답변 시도 GRUB_CMDLINE_LINUX하고 GRUB_CMDLINE_LINUX_DEFAULT플러스 (언급되지 않은) sudo update-grub명령을 나는 Pop_OS에서 일하기를 가져올 수 없습니다! 19.10 (우분투 19.10을 기반으로 함). 에 따르면 systemctl status systemd-rfkill이 서비스는 부팅 할 때마다 이미 실행 중이며 기본값은 1이므로이 작업이 필요하지 않습니다. 의 정보를 기반으로 man systemd-rfkill"초기 부팅시"라디오 상태를 기억하는 것이 기본 동작이어야하므로이 구성 요소가 손상되었다고 생각하게됩니다.
Patrick Dark

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.