การ์ดไร้สาย PCI บนเดสก์ท็อปของฉันสแกนหาเครือข่ายไร้สายที่มีอยู่เสมอ แต่ฉันไม่ค่อยได้ใช้มัน ฉันสามารถปิดวิทยุไว้จนกว่าจะต้องการได้หรือไม่
การ์ดไร้สาย PCI บนเดสก์ท็อปของฉันสแกนหาเครือข่ายไร้สายที่มีอยู่เสมอ แต่ฉันไม่ค่อยได้ใช้มัน ฉันสามารถปิดวิทยุไว้จนกว่าจะต้องการได้หรือไม่
คำตอบ:
มีงานพุ่งพรวดอย่างน้อยสองงานที่ส่งผลต่อสถานะไร้สายเริ่มต้น:
/etc/init/rfkill-restore.conf
/var/lib/rfkill/saved-state
คืนรัฐบล็อกนุ่มสำหรับวิทยุทุกสิ่งที่พวกเขาอยู่ที่ปิดสุดท้ายที่บันทึกไว้ใน/etc/init/network-manager.conf
เริ่ม Network Manager ซึ่งจะคืนความคิดของสถานะไร้สายจาก/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
ก่อนที่งาน 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
ตามที่ฉันต้องการเงียบวิทยุทั้งหมดเมื่อแล็ปท็อปของฉันเริ่มฉัน soft block วิทยุทั้งหมดไม่เพียง แต่ไร้สาย แต่คุณสามารถแก้ไขครั้งแรกsed
ในข้างต้นเพื่อ จำกัด ผลกระทบของงานนี้ต่ออุปกรณ์ไร้สายที่คุณต้องการ soft block
การกำหนดค่างานที่สองของเรามีหน้าที่รับผิดชอบในการทำให้มั่นใจว่าไม่มีงานใด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
สำหรับรายละเอียดเพิ่มเติมว่างานเหล่านี้ทำงานร่วมกันอย่างไรเพื่อให้บรรลุเป้าหมายทางโลกโปรดอ้างอิงคำถามและคำตอบของฉัน"ฉันจะสร้างงาน Upstart ที่ดำเนินการเพียงครั้งเดียวได้อย่างไร
โซลูชัน "ทันสมัย" โดยใช้ตัวจัดการเครือข่าย: เพียงยกเลิกการเลือกตัวเลือกเปิดใช้งานไร้สายที่แอปเพล็ตตัวจัดการเครือข่าย (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
คำสั่งยังคงเป็นสิ่งจำเป็นเนื่องจากการแข่งขันที่มีการเริ่มต้นของการจัดการเครือข่าย (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)
มันทำงานยังไง? มันไม่มี manpage การรัน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 )
ตอนนี้ถ้าคุณต้องการที่จะปิดการใช้งานฟังก์ชั่นไร้สายที่ boottime เพิ่มคำสั่งเพื่อ /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
เพราะสคริปต์ทำงานด้วยการอนุญาตรูท เป็นไปได้ยากมากที่คุณจะสามารถปิดใช้งาน wifi โดยไม่ได้รับอนุญาตจากรูท ถ้าฉันลองrfkill block wifi
หรือrfkill unblock wifi
ฉันได้รับ "ไม่สามารถเปิดอุปกรณ์ควบคุม RFKILL: การอนุญาตถูกปฏิเสธ"
$ rfkill block wifi
สาเหตุ NetworkManager แอปเพล็เพื่อแสดง "ไร้สายให้คนพิการ" และการแสดงผล$ iwconfig
ยกเลิกผลกระทบนี้ Tx-Power=off
$ rfkill unblock wifi
/etc/rc.local
คุณจะต้องรอวินาทีก่อนที่จะปิดการใช้งานอินเตอร์เน็ตไร้สายใน ใช้สิ่งนี้แทน:/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.state
ไฟล์ที่ยืนยันการตั้งค่าWirelessEnabled=false
อยู่หนึ่งในนั้นคือ ฉันจะโพสต์ในคำถามของคุณ ..
วิธีที่ง่ายที่สุดที่จะปิดการใช้งานบัตรไร้สายของคุณคือการคลิกขวาบนตัวบ่งชี้ NetworkManager (ไอคอนเล็ก ๆ ด้านบนขวาบนแผง) Enable Wireless
และ นี่จะifconfig wlan0 down
แสดงอินเทอร์เฟซ( ) ลงและไม่สามารถทำการสแกนได้อีกต่อไป
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 ได้รับการกู้คืนในการบู๊ตแต่ละครั้ง ตรวจสอบให้แน่ใจว่าปิดบลูทู ธ และ wifi ก่อนที่จะรีสตาร์ท
tlp
:tlp 0.8-1
ที่เก็บ 16.04 แห่ง หลังจากอัปเดตเป็นtlp 0.9-1
ใช้ linrunner ppa แล้วผู้ออกทั้งหมดจะถูกแก้ไขคำตอบเดิม:
tlp
มาสก์ / ปิดการใช้systemd-rfkill.service
เพื่อ"ความขัดแย้งและความมั่นใจหลีกเลี่ยงการดำเนินการที่เหมาะสมของตัวเลือกการเปลี่ยนอุปกรณ์วิทยุ TLP ของ" ( ที่มา -1 , ที่มา 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
ปิดการใช้งาน wifi และบลูทู ธ (โดยใช้rfkill block all
) และเริ่มการทำงานใหม่อย่างต่อเนื่อง ไม่มีการรับประกันว่าในการบูต WiFi ครั้งต่อไปจะถูกปิดการใช้งาน น่าแปลกใจที่
tlp
จัดการให้ปิดการใช้งานบลูทู ธ ในทุก ๆ การบู๊ต
กันไปสำหรับตัวเลือกที่ 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
และการตั้งค่าให้ปิดการใช้งานบลูทู ธ และ WiFi อาจใช้งานได้สำหรับคุณ (ใช้งานได้กับบุคคลนี้ )
คำถามนี้ที่นี่ใน askubuntu มันคล้ายกับคำตอบเก่าสำหรับคำถามนี้ แต่โปรดทราบว่าฉันไม่ได้ลองด้วยตัวเอง อาจหรือไม่ทำงาน
แหล่งข้อมูลอื่น ๆ : systemd-rfkill , tlp-configuration
GRUB_CMDLINE_LINUX
และGRUB_CMDLINE_LINUX_DEFAULT
รวมถึง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
ในขณะนี้จะนำมาลงเฟซก็จะไม่บันทึกเป็นพลังงานมากที่สุดเท่าที่ปิดการใช้งานวิทยุโดยใช้