커널 모듈을 블랙리스트에 추가하지 않고 부팅 시 블루투스를 비활성화하려고 합니다.
나는 다음 두 줄에 주석을 달았습니다 /etc/init/bluetooth.conf
.
start on started dbus
stop on stopping dbus
그런 다음 다음을 추가했습니다.
stop on runlevel [0123456]
파일에서 /etc/init.d/bluetooth
앞에 exit 0
다음 줄을 추가했습니다.
rfkill block bluetooth
이러한 시도 중 어느 것도 성공하지 못했습니다.
/etc/rc.local
파일의 마지막 명령을 추가하기 위해 온라인에서 읽었습니다 . 하지만 이 파일 대신에 스크립트에 대한 심볼릭 링크로 가득 찬 rc0.d
and rc6.d
폴더가 있습니다.rcS.d
저는 커널 4.10.0이 설치된 Ubuntu-Mate 17.04에서 실행 중입니다.
답변1
다른 사람이 답변이 필요한 경우를 대비해 ;)
사용자가 systemd(많은 배포판에서 기본값)를 실행 중인 경우 다음 명령을 사용하여 서비스를 비활성화할 수 있습니다.
systemctl disable bluetooth.service
답변2
허용되는 해결책은 서비스가 (다시)시작될 때까지 Bluetooth를 완전히 비활성화하는 것입니다. 필요할 때까지 일시적으로 BT를 비활성화하려는 경우 문제는 bluez 또는 blueman-applet이 시작 및/또는 로그인 시 각각 블루투스를 활성화하는 것일 수 있습니다.
전자는 AutoEnable=false
섹션 [Policy]
에서 설정하여 비활성화할 수 있습니다 /etc/bluetooth/main.conf
.
Debian(기반) 배포판에서는 아마도사실로 설정다음을 통해 비활성화할 수 있습니다.
sudo sed -i -e 's/^AutoEnable=true/AutoEnable=false/' /etc/bluetooth/main.conf
후자는 "PowerManager" 아래의 GUI 플러그인 설정에서 또는 다음 명령을 통해 비활성화할 수 있습니다(https://askubuntu.com/a/923539/244648):
gsettings set org.blueman.plugins.powermanager auto-power-on false
(bluez 비트가 누락되었기 때문에 이 답변은 2년 동안 완료되지 않았습니다. 감사합니다.도헤르드이 질문을 해보세요. )
답변3
시작 시 블루투스 비활성화 문제
sudo systemctl disable bluetooth.service
그러면 다음에 재부팅하면 Bluetooth가 활성화되지 않습니다...상태 문제를 참조하세요.
sudo systemctl status bluetooth.service
시작 시 Bluetooth를 활성화하려면 다음을 수행하십시오.
sudo systemctl enable bluetooth.service
답변4
더 많은 솔루션이 있습니다!
고주파 킬
rfkill
2.6의 Linux 커널에 병합되어 무선 장치를 관리하는 간단한 방법입니다.
예를 들어, rfkill
매개변수 없이 호출하여 무선 장치를 봅니다.
cat@rt~ $ rfkill
ID TYPE DEVICE SOFT HARD
0 wlan phy0 unblocked unblocked
1 bluetooth hci0 blocked unblocked
그런 다음 (sudo/root를 사용하여) 장치를 차단합니다 rfkill block $TYPE
.
cat@rt~ $ sudo rfkill block bluetooth
cat@rt~ $ sudo rfkill block wlan
이제 rfkill
새로운 상태를 다시 확인하세요.
cat@rt~ $ rfkill
ID TYPE DEVICE SOFT HARD
0 wlan phy0 blocked unblocked
1 bluetooth hci0 blocked unblocked
내가 비활성화한 장치는 blocked
아래에 나열되어 있지만 SOFT
나열되어 있지는 않습니다 HARD
. 이는 소프트웨어를 통해 장치를 비활성화했음을 의미합니다(소프트웨어를 통해 장치를 다시 활성화할 수 있음).
차단된 장치는 HARD
무선 장치가 하드웨어에 의해 차단되었음을 의미합니다. 이는 하드웨어 킬 스위치(일부 노트북에는 무선을 끄는 스위치가 있음)일 수도 있고, BIOS에 의해 장치가 비활성화될 수도 있고, 소프트웨어와 상호 작용할 드라이버가 없을 수도 있습니다(제 경우에는 다시 확인하세요). 마지막 사진 ).
모듈 프로브
이러한 무선 장치에 대한 드라이버를 전혀 로드하지 않도록 커널에 지시할 수 있습니다. 즉, 운영 체제와 커널은 이러한 장치와 상호 작용하는 방법을 알 수 없으며 전원이 꺼진 상태로 유지됩니다.
먼저 현재 로드된 커널 모듈을 확인합니다 lsmod
.
cat@rt~ $ sudo lsmod
Module Size Used by
btusb 57344 0
btrtl 20480 1 btusb
btbcm 16384 1 btusb
btintel 28672 1 btusb
bluetooth 577536 5 btrtl,btintel,btbcm,btusb
ecdh_generic 16384 1 bluetooth
ecc 32768 1 ecdh_generic
[...]
이것이 바로 내 컴퓨터에 로드되는 내용입니다. 드라이버가 다르게 보일 수도 있고 다른 드라이버를 사용할 수도 있습니다.
내 컴퓨터에서 여러 Bluetooth 드라이버가 실행되고 있음을 알 수 있습니다. btusb
, btrtl
, btbcm
, btintel
, 그리고 bluetooth
.
btusb
다른 모든 모듈이 의존하는 범용 드라이버입니다. 제거하는 것만으로도 충분 btusb
하지만 다른 드라이버도 사용되지 않을 것이라는 것을 알고 있으므로 철저하게 해당 드라이버가 로드되지 않도록 하고 싶습니다.
우리는 modprobe
명령을 사용하여 구성 파일에 이러한 커널 모듈을 무시하도록 지시함으로써 이를 수행 할 것입니다 blacklist
. /etc/modprobe.conf
[^1] (으)로 이동합니다 .
파일이 존재하지 않더라도 걱정하지 마세요. 파일을 만들고 편집하면 됩니다. 이미 존재하는 경우 맨 아래에 다음 줄을 추가하십시오.
cat@rt~ $ sudo vim /etc/modprobe.conf
# In the editor vim, I added these lines to the bottom of the file:
blacklist btusb
blacklist btrtl
blacklist btbcm
blacklist btintel
blacklist bluetooth
다음에 재부팅할 때까지는 적용되지 않습니다. 시작 시 modprobe
이 파일은 로드할 커널 모듈에 대해 자세히 알아보는 데 사용되며, 이 파일에서 명령을 보면 blacklist
해당 이름을 가진 모듈을 무시하는 방법을 알게 됩니다.
각주
[^1]: 에서 정의할 수 있습니다 /etc/modprobe.conf
. 또는 원하는 경우 해당 디렉토리를 사용 /etc/modprobe.d/
하고 로 끝나는 여러 파일을 넣을 수 있습니다 .conf
. 이 모든 파일은 읽고 사용됩니다.