Yanıtlar:
Varsayılan kablosuz durumu etkileyen en az iki Upstart işi vardır:
/etc/init/rfkill-restore.confkaydedildiği gibi tüm telsizler için yumuşak blok durumunu son kapanışta olduklarına geri yükler /var/lib/rfkill/saved-state./etc/init/network-manager.confdaha sonra kablosuz durum fikrini geri yükleyen Network Manager'ı başlatır /var/lib/NetworkManager/NetworkManager.state.Bu iki iş konfigürasyonuna bakarsanız, benim için bir tasarım hatası gibi görünen geçici bir ilişkilerinin olmadığını göreceksiniz . Bu yarış koşulunun nadiren bir sorun olduğunu tahmin ediyorum çünkü /etc/init/rfkill-restore.confçok daha basit ve daha az başlangıç koşulu var.
@Lekensteyn ve @ rubo77'nin ortaya çıkardığı "modern" çözüm de /etc/rc.localdahil olmak üzere gördüğüm bir kablosuz bağlantı varsayılanını uygulamaya yönelik tüm çözümler . Ne yazık ki, bu çözüm denediğim iki dizüstü bilgisayarda da işe yaramıyor. Bunun nedeni özellikle şaşırtıcı değildir ayrıca sahip hiçbir zamansal ilişki Ben birine bulabilmesi ve . Bir yarış vermeden önce uzun bir uykuya atmak, bu yarış durumu karmaşası için çirkin bir çözümdür, ancak gecikme yeterince uzunsa işe yarar./etc/rc.local /etc/init/rfkill-restore.conf/etc/init/network-manager.conf/etc/rc.localrfkill block wifi
Bu iki Upstart işinin yürütülmesine izin verilmeden önce/var/lib/rfkill/saved-state ve daha /var/lib/NetworkManager/NetworkManager.state önce arzu ettiğimiz durumları dayatmamız daha iyi bir çözüm olacaktır . Bunu kendi Upstart işimizi oluşturarak başarabiliriz. Aslında, ihtiyacımız olan zamanlamayı elde etmek için iki iş yapılandırma dosyasına ihtiyacımız olacak.
İlk iş yapılandırmamız ihtiyacımız olan gerçek dosya değişikliklerini yapar. Mümkün olduğunca erken çalışır ve yalnızca bir kez çalışır. /etc/init/radio-silence.confBu içerikle oluştur :
# 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
Dizüstü bilgisayarım başlatıldığında toplam radyo sessizliğini tercih ettiğim için , yalnızca kablosuz değil, tüm radyoları yumuşak bir şekilde engelliyorum , ancak sedbu işin etkisini yumuşak engellemek istediğiniz kablosuz cihazlarla sınırlamak için yukarıdaki ilkini değiştirebilirsiniz .
İkinci iş yapılandırma hiçbiri sağlamaktan sorumludur rfkill-restoreve network-managerişler önce başlayacak radio-silencedosya değişiklikleri tamamladı. Aşağıdaki /etc/init/radio-silence-wait.confgibi oluşturun :
# 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
Bu çözümle, rfkill-restoreve arasındaki teorik ırkı ele almamamla birlikte, artık yarış durumu problemlerini görmüyorum network-manager.
Bu işlerin geçici amacımıza ulaşmak için birlikte nasıl çalıştığı hakkında daha fazla ayrıntı için, "Diğer iki iş başlamadan önce tamamlanması garantili tek bir yürütme Upstart işi nasıl oluşturabilirim?"
Ağ Yöneticisi'ni kullanarak "modern" çözüm: Ağ Yöneticisi uygulamasındaki Kablosuz Etkin seçeneğinin işaretini kaldırmanız yeterlidir (KDE: Ağ Yönetimi). Komut nmcli nm wifi offeşdeğerdir. Wi-Fi'yi ara sıra etkinleştirirseniz, ancak yeniden başlatma sırasında devre dışı bırakmak istiyorsanız okumaya devam edin.
Kablosuz durumu dosyada hatırlanır /var/lib/NetworkManager/NetworkManager.state. Açılışta Wi-Fi devre dışı bırakmak için, bu anahtar sağlamak WirelessEnabledkalır at false. Bunu, Ağ Yöneticisi'nin başlatma komut dosyasını düzenleyerek veya /etc/rc.localaşağıdaki hileyi kullanarak yapabilirsiniz . İhtiyacınız olan komut:
sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi
Bunu daha önce koyun exit 0(aşağıda açıklandığı gibi). rfkill block wifiKomut hala nedeniyle Ağ Yöneticisi (NM) oluşturması sırasında bir yarış için gereklidir. NM başladıktan sonra, durum dosyasındaki değişikliklerin bir etkisi yoktur.
( komutun /etc/rc.localaçıklamasıyla birlikte dosya düzenlemeyi içeren eski yanıt rfkill)
Biraz kibirli, ama işe yaramalı. Kablosuz kart, rfkillkomut kullanılarak devre dışı bırakılabilir . Rfkill tarafından kullanılan tüm cihazlar kullanılarak gösterilebilir rfkill list. Örnek çıktı:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Hard blockeddonanım ayarına bağlıdır, örneğin dizüstü bilgisayardaki kablosuz anahtar. Soft blockedOS (Ubuntu) tarafından kontrol edilebilir.
O nasıl çalışır? Bir el kitabı yok, çalışan rfkillbu durumda bir yardım metni sağlar:
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
Ah, şimdi bir yerlere gidiyoruz. rfkill block wifiKablosuz cihazı devre dışı bırakmak için root olarak çalıştırmanız gerekir . (WLAN WiFi bir takma, bkz kaynak kodu arasında rfkill ).
Şimdi, önyükleme sırasında kablosuz işlevleri devre dışı bırakmak istiyorsanız, komutu çalıştırarak /etc/rc.local dosyasına ekleyin sudo nano /etc/rc.local. Önceki satıra gitmek exit 0ve eklemek için ok tuşlarını / sayfa yukarı / aşağı tuşlarını kullanın rfkill block wifi, böylece dosya şöyle biter:
# By default, this script does nothing
rfkill block wifi
exit 0
İşiniz bittiğinde Ctrl+ Xtuşuna basın Y, kaydetmek için tuşuna basın Enterve dosya adını kabul etmek için tuşuna basın .
Daha sonra cihazı aktif hale getirmek için karar verirseniz, çalıştırın: sudo rfkill unblock wifi. Kablosuz kartı kullanmaya karar verirseniz hattı /etc/rc.local dizininden kaldırmayı unutmayın.
/etc/rc.localKomut dosyası kök izinleriyle çalıştırıldığı için sudo in'e ihtiyacınız yoktur . Kök izinleri olmadan wifi'yi devre dışı bırakmanız pek olası değildir. Ben denerseniz rfkill block wifiveya rfkill unblock wifi": İzin reddedildi açılamıyor rfkill kontrol cihazı Can", ben olsun.
$ rfkill block wifiNetworkManager uygulamasının "Kablosuz devre dışı" $ iwconfiggörüntülenmesine ve görüntülenmesine neden oluyor Tx-Power=off. $ rfkill unblock wifibu efekti geri alır.
/etc/rc.local. Bunun yerine şunu kullanın:/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.stateayarlara devam eden bir dosya var WirelessEnabled=false, bunlardan biri. Sorunuza mesaj
Kablosuz kartınızı devre dışı bırakmanın en kolay yolu NetworkManager göstergesine (panelin sağ üst köşesindeki küçük simge) sağ tıklamak ve işaretini kaldırmaktır Enable Wireless. Bu ifconfig wlan0 downarabirimi indirir ( ) ve artık tarama yapmaz.
tlp, lütfen tüm cevabı okuyun.Bu sorunun tüm cevapları şu anda oldukça eski ve systemd kullanan yeni Ubuntu sürümlerinde çalışmıyor. froage'nin yanıtı benim için 14.04'te çalıştı, ancak 16.04'te işe yaramadı.
Systemd, systemd-rfkill.servicekapatma sırasında rfkill anahtar durumunu kaydetmek ve her önyüklemede geri yüklemek için kullanır .
Her önyüklemede rfkill anahtar durumunu geri yüklemek için bir çekirdek komut satırı parametresi geçirmeniz gerekir.
/etc/default/grubtercih metin editörü ile.systemd.restore_state=1parametre olarak ekle GRUB_CMDLINE_LINUX. Şimdi bu satır okunmalı GRUB_CMDLINE_LINUX="systemd.restore_state=1". Siz de ekleyebilirsiniz GRUB_CMDLINE_LINUX_DEFAULT. İkisi de işe yarıyor. Daha fazla ayrıntı için bu soruya bakın.Bu, rfkill durumunun her önyüklemede geri yüklenmesini sağlayacaktır. Yeniden başlatmadan önce bluetooth ve wifi'yi kapattığınızdan emin olun.
tlp:tlp 0.8-116.04 depolarda mevcuttu. tlp 0.9-1Linrunner ppa kullanarak güncelleme yapıldıktan sonra , TÜM sorunlar çözüldü.Orijinal cevap:
tlpmaskeler / devre dışı bıraktığı systemd-rfkill.serviceiçin "önlemek çatışma ve TLP radyo cihazı anahtarlama seçeneklerinin düzgün çalışmasını sağlamak" . ( Kaynak-1 , Kaynak-2 )
Bu, çekirdek parametresini geçmenin sizin için işe yaramayacağı anlamına gelir.
Burada, tlp'nin varsayılan yapılandırma dosyasından ( /etc/default/tlp) küçük bir snippet (satır no. 195) yer almaktadır .
# 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"
Gördüğünüz gibi RESTORE_DEVICE_STATE_ON_STARTUPvarsayılan seçenek devre dışıdır. Ancak bu seçeneği etkinleştirmek yardımcı olmaz.
RESTORE_DEVICE_STATE_ON_STARTUP
Wifi ve bluetooth'u (kullanarak rfkill block all) devre dışı bırakıp yeniden başlatmaya devam etmenizi sağladıktan sonra bile , her iki veya 3. önyüklemede bir şekilde WiFi etkinleştirilir. Bir sonraki önyüklemede WiFi'nin devre dışı bırakılacağının garantisi yoktur. tlpHer önyüklemede bluetooth'u devre dışı bırakmayı şaşırtıcı bir şekilde
yönetir.
Snippet'teki 2. seçenek için de aynı şey geçerlidir DEVICES_TO_DISABLE_ON_STARTUP, bu da varsayılan olarak devre dışıdır. Etkinleştirmek de işe yaramıyor. Network MangerWiFi'nin devre dışı olduğunu ancak rfkill listWiFi'de herhangi bir yazılım bloğu göstermediğini gösterir.
Not: Satırı okudum
"Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below are ignored when this is enabled!".Çatışmalardan kaçınmadan
RESTORE_DEVICE_STATE_ON_STARTUPönce devre dışı bıraktımDEVICES_TO_DISABLE_ON_STARTUP.
tlp-rdwbeklendiği gibi çalışmaz.tlpKullanıcılar için çözüm :tlp 0.9-1Linrunner ppa kullanarak güncelleme .Orijinal Yanıt:
DEVICES_TO_DISABLE_ON_STARTUPBluetooth ve WiFi'yi etkinleştirmek ve etkinleştirmek sizin için işe yarayabilir. ( Bu kişi için çalıştı )
Bu soru burada askubuntu hakkında. Bu sorunun daha eski bir cevabına benzer. Ama lütfen kendim denemediğimi unutmayın. Çalışabilir veya çalışmayabilir.
Diğer kaynaklar: systemd-rfkill , tlp-configuration
GRUB_CMDLINE_LINUXve Pop_OS'ta çalışamadım! 19.10 (Ubuntu 19.10'a dayanmaktadır). Buna göre , bu hizmet zaten her önyüklemede çalıştırılıyor ve varsayılan değer olduğu için bu çabaya gerek yok. Adresindeki bilgilere dayanarak, "erken önyüklemede" radyo durumunu hatırlamak varsayılan davranış olmalıdır, bu da bu bileşenin bir şekilde bozuk olduğuna inanmamı sağlıyor. GRUB_CMDLINE_LINUX_DEFAULTsudo update-grubsystemctl status systemd-rfkill1man systemd-rfkill
Ekleyebilirsin
ifconfig wlan0 down
için /etc/rc.local, ama önce,
NetworkManager kullanıyorsanız (0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3 sürümüne sahipseniz) " Bağlantıları Düzenle " -> " Kablosuz " sekmesine gidin, " Düzenle " yi tıklayın ve " Kablosuz " sekmesinde " Otomatik Olarak Bağlan " onay kutusunun işaretli olmadığından emin olun.
rfkill.