जवाबों:
डिफ़ॉल्ट वायरलेस स्थिति को प्रभावित करने वाले कम से कम दो अपस्टार्ट कार्य हैं:
/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
इससे पहले कि दो उपस्टार्ट नौकरियों को चलाने की अनुमति दी जाए। हम अपना खुद का 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-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
।
हमारे अस्थायी लक्ष्य को प्राप्त करने के लिए ये नौकरियां एक साथ कैसे काम करती हैं, इस बारे में अधिक जानकारी के लिए, मेरे प्रश्न और उत्तर को देखें, "मैं दो अन्य नौकरियों के शुरू होने से पहले एक एकल-निष्पादन अपस्टार्ट नौकरी को कैसे पूरा करने की गारंटी देता हूं?"
नेटवर्क प्रबंधक का उपयोग करके "आधुनिक" समाधान: बस नेटवर्क प्रबंधक एप्लेट (KDE: नेटवर्क प्रबंधन) पर वायरलेस सक्षम विकल्प को अनचेक करें । आज्ञा nmcli nm wifi off
बराबर है। यदि आप छिटपुट रूप से वाई-फाई सक्षम करते हैं, तो पढ़ना जारी रखें, लेकिन रिबूट पर अक्षम करने के लिए इसे वापस करना चाहेंगे।
फ़ाइल में वायरलेस स्थिति को याद किया जाता है /var/lib/NetworkManager/NetworkManager.state
। बूट पर वाई-फाई को अक्षम करने के लिए, सुनिश्चित करें कि कुंजी पर WirelessEnabled
रहता है false
। आप ऐसा कर सकते हैं कि नेटवर्क मैनेजर की 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 शुरू हो जाने के बाद, राज्य फ़ाइल में परिवर्तन का कोई प्रभाव नहीं पड़ता है।
(पुराना उत्तर जिसमें कमांड /etc/rc.local
की व्याख्या के साथ संपादन फ़ाइल शामिल है rfkill
)
थोड़ा हैकी, लेकिन यह काम करना चाहिए। एक वायरलेस कार्ड को rfkill
कमांड का उपयोग करके अक्षम किया जा सकता है । Rfkill द्वारा उपयोग किए जाने वाले सभी उपकरणों का उपयोग करके दिखाया जा सकता है rfkill list
। नमूना उत्पादन:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Hard blocked
एक हार्डवेयर सेटिंग पर निर्भर है, उदाहरण के लिए एक नोटबुक पर एक वायरलेस स्विच। Soft blocked
ओएस (उबंटू) द्वारा नियंत्रित किया जा सकता है।
यह कैसे काम करता है? इसके पास एक मैनपेज नहीं है, 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 से लाइन हटाना न भूलें।
/etc/rc.local
क्योंकि स्क्रिप्ट रूट अनुमतियों के साथ चलाई जाती है। यह बहुत संभावना नहीं है कि आप रूट अनुमतियों के बिना वाईफाई को अक्षम कर सकते हैं। अगर मैं कोशिश करता हूं 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
उनमें से एक है। मैं आपके प्रश्न पर पोस्ट करूंगा ..
अपने वायरलेस कार्ड को अक्षम करने का सबसे आसान तरीका नेटवर्क मैनजर इंडिकेटर पर राइट-क्लिक करना है (पैनल पर टॉप-राइट पर छोटा आइकन), और इसे अनटिक करें Enable Wireless
। यह ifconfig wlan0 down
इंटरफ़ेस को नीचे लाता है ( यह अब स्कैनिंग नहीं करता है।
tlp
, तो कृपया पूरा उत्तर पढ़ें।इस प्रश्न के सभी उत्तर अभी बहुत पुराने हैं और नए उबंटू रिलीज पर काम नहीं करते हैं जो सिस्टमड का उपयोग करते हैं। फ्रॉज का जवाब मेरे लिए 14.04 पर काम किया, लेकिन 16.04 पर काम नहीं करता है।
सिस्टमड 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 राज्य प्रत्येक बूट पर बहाल हो जाए। पुनः आरंभ करने से पहले ब्लूटूथ और वाईफाई बंद करना सुनिश्चित करें।
tlp
:tlp 0.8-1
जिसमें 16.04 रिपॉजिटरी में उपलब्ध है। tlp 0.9-1
लाइनरनर ppa का उपयोग करने के लिए अद्यतन करने के बाद , सभी आइसूज़ हल किए गए थे।मूल उत्तर:
tlp
मास्क / अक्षमता "संघर्ष से बचने और TLP के रेडियो उपकरण स्विचिंग विकल्पों के उचित संचालन का आश्वासन देता systemd-rfkill.service
है " । ( स्रोत -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
, वाईफाई और ब्लूटूथ को अक्षम करें (उपयोग करके rfkill block all
) और रीस्टार्ट करते रहें, किसी भी तरह वाईफाई हर 2 या 3 जी बूट पर सक्षम हो जाए। इसमें कोई गारंटी नहीं है कि अगले बूट पर वाईफाई अक्षम हो जाएगा। आश्चर्यजनक रूप
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
लाइनरनर ppa का उपयोग करने के लिए अद्यतन ।मूल उत्तर:
DEVICES_TO_DISABLE_ON_STARTUP
ब्लूटूथ और वाईफाई को निष्क्रिय करने के लिए इसे सक्षम और सेट करना आपके लिए काम कर सकता है। ( इस व्यक्ति के लिए यह काम किया है )
यह सवाल पूछने के लिए यहाँ है। यह इस प्रश्न के पुराने उत्तर के समान है। लेकिन कृपया ध्यान दें कि मैंने खुद इसकी कोशिश नहीं की है। यह काम कर भी सकता है और नहीं भी।
अन्य स्रोत: systemd-rfkill , tlp- कॉन्फ़िगरेशन
GRUB_CMDLINE_LINUX
और GRUB_CMDLINE_LINUX_DEFAULT
(एक साथ) sudo update-grub
कमांड के संशोधनों को शामिल किया गया और मैं इसे Pop_OS में काम करने के लिए नहीं मिला! 19.10 (जो उबंटू 19.10 पर आधारित है)। इसके अनुसार systemctl status systemd-rfkill
, यह सेवा पहले से ही प्रत्येक बूट पर चलाई जा रही है और, चूंकि डिफ़ॉल्ट मान है 1
, इसलिए इस प्रयास की कोई आवश्यकता नहीं होनी चाहिए। सूचना के आधार पर man systemd-rfkill
, रेडियो स्टेट को "शुरुआती बूट में" याद रखना डिफ़ॉल्ट व्यवहार होना चाहिए, जो मुझे विश्वास दिलाता है कि यह घटक किसी तरह टूट गया है।
व्यक्तिगत तौर पर मैं का उपयोग बृहस्पति ऊर्जा प्रबंधन एप्लेट अपने लैपटॉप पर वायरलेस निष्क्रिय करने के लिए के रूप में यह एक विशेष बटन द्वारा नियंत्रित है। मुझे नहीं लगता कि मुझे इसे प्राप्त करने के लिए Webupd8 में एंड्रयू से एक ppa जोड़ना था मुख्य रेपो में है।
उम्मीद है की यह मदद करेगा।
आप जोड़ सकते हैं
ifconfig wlan0 down
से /etc/rc.local
, लेकिन पहले,
सुनिश्चित करें कि, यदि आप NetworkManager का उपयोग कर रहे हैं (मेरे पास संस्करण 0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3 है), तो आप " कनेक्शन संपादित करें " मेनू पर जाएँ -> " वायरलेस " टैब, कनेक्शन पर क्लिक करें, " संपादित करें " पर क्लिक करें , और सुनिश्चित करें कि, " वायरलेस " टैब में, " स्वचालित रूप से कनेक्ट करें " चेकबॉक्स की जाँच नहीं की जाती है।
rfkill
।