Jawaban:
Setidaknya ada dua pekerjaan pemula yang mempengaruhi status nirkabel default:
/etc/init/rfkill-restore.conf
mengembalikan status blok lunak untuk semua radio ke kondisi semula, seperti yang dicatat di /var/lib/rfkill/saved-state
./etc/init/network-manager.conf
memulai Network Manager yang pada gilirannya mengembalikan idenya tentang keadaan nirkabel /var/lib/NetworkManager/NetworkManager.state
.Jika Anda melihat dua konfigurasi pekerjaan itu, Anda akan menemukan bahwa mereka tidak memiliki hubungan temporal , yang tampaknya seperti cacat desain bagi saya. Saya menduga kondisi lomba ini jarang menjadi masalah karena /etc/init/rfkill-restore.conf
jauh lebih sederhana dan memiliki kondisi awal yang lebih sedikit.
Semua solusi untuk menegakkan default nirkabel-off yang pernah saya coba coba gunakan /etc/rc.local
, termasuk solusi "modern" yang muncul dengan @Lekensteyn dan @ rubo77. Sayangnya, solusi itu tidak berfungsi untuk saya pada salah satu dari dua laptop yang saya coba. Ini tidak terlalu mengejutkan karena /etc/rc.local
juga tidak memiliki hubungan temporal yang dapat saya temukan untuk salah satu dari /etc/init/rfkill-restore.conf
dan /etc/init/network-manager.conf
. Melempar dalam tidur yang panjang /etc/rc.local
sebelum mengeluarkan suatu rfkill block wifi
solusi buruk untuk kekacauan kondisi balapan ini, tetapi bekerja jika penundaannya cukup lama.
Solusi yang lebih baik bagi kita untuk memaksakan keadaan yang kita inginkan di /var/lib/rfkill/saved-state
dan /var/lib/NetworkManager/NetworkManager.state
sebelum dua pekerjaan pemula itu bahkan diizinkan untuk dijalankan. Kita dapat mencapai ini dengan menciptakan pekerjaan pemula kami sendiri. Pada kenyataannya, kita akan membutuhkan dua file konfigurasi pekerjaan untuk mencapai waktu yang kita butuhkan.
Konfigurasi pekerjaan pertama kami melakukan modifikasi file aktual yang kami butuhkan. Ini akan berjalan sedini mungkin dan hanya akan berjalan sekali. Buat /etc/init/radio-silence.conf
dengan konten ini:
# 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
Karena saya lebih suka keheningan radio total ketika laptop saya mulai, saya soft block semua radio, tidak hanya nirkabel, tetapi Anda dapat memodifikasi yang pertama sed
di atas untuk membatasi dampak pekerjaan ini untuk perangkat nirkabel mana pun yang Anda ingin soft block.
Konfigurasi pekerjaan kedua kami bertanggung jawab untuk memastikan tidak satu pun dari rfkill-restore
dan network-manager
pekerjaan akan dimulai sebelum radio-silence
menyelesaikan modifikasi file. Buat /etc/init/radio-silence-wait.conf
sebagai berikut:
# 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
Dengan solusi ini saya tidak lagi melihat masalah kondisi ras, meskipun saya belum membahas ras teoritis antara rfkill-restore
dan network-manager
.
Untuk perincian lebih lanjut tentang bagaimana pekerjaan ini bekerja bersama untuk mencapai tujuan temporal kami, lihat pertanyaan dan jawaban saya, "Bagaimana cara saya membuat pekerjaan baru dengan eksekusi tunggal yang dijamin selesai sebelum dua pekerjaan lainnya dimulai?"
Solusi "Modern" menggunakan Network Manager: cukup hapus centang pada opsi Wireless Enabled di applet Network Manager (KDE: Network Management). Perintahnya nmcli nm wifi off
setara. Lanjutkan membaca jika Anda mengaktifkan Wi-Fi secara sporadis, tetapi ingin mengembalikannya ke dinonaktifkan saat reboot.
Status nirkabel diingat dalam file /var/lib/NetworkManager/NetworkManager.state
. Untuk menonaktifkan Wi-Fi saat boot, pastikan kunci WirelessEnabled
tetap menyala false
. Anda dapat melakukannya dengan mengedit skrip init Network Manager, atau dengan menggunakan /etc/rc.local
trik di bawah ini. Perintah yang Anda butuhkan adalah:
sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi
Letakkan ini sebelumnya exit 0
(seperti dijelaskan di bawah). The rfkill block wifi
perintah masih diperlukan karena ras dengan startup dari Network Manager (NM). Setelah NM dimulai, perubahan pada file status tidak berpengaruh.
(jawaban lama yang melibatkan pengeditan file /etc/rc.local
dengan penjelasan rfkill
perintah)
Agak macet, tetapi seharusnya bisa. Kartu nirkabel dapat dinonaktifkan menggunakan rfkill
perintah. Semua perangkat yang digunakan oleh rfkill dapat ditampilkan menggunakan rfkill list
. Output sampel:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Hard blocked
tergantung pada pengaturan perangkat keras, mis. sakelar nirkabel pada notebook. Soft blocked
dapat dikontrol oleh OS (Ubuntu).
Bagaimana cara kerjanya? Tidak memiliki halaman manual, menjalankan rfkill
menyediakan teks bantuan dalam hal ini:
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, sekarang kita sampai di suatu tempat. Anda harus menjalankan rfkill block wifi
sebagai root untuk menonaktifkan perangkat nirkabel. (wlan adalah alias dari wifi, lihat kode sumber dari rfkill ).
Sekarang, jika Anda ingin menonaktifkan fungsi nirkabel saat boottime, tambahkan perintah ke /etc/rc.local dengan menjalankan sudo nano /etc/rc.local
. Gunakan tombol panah / halaman atas / bawah untuk menavigasi ke baris sebelumnya exit 0
dan menambahkan rfkill block wifi
, sehingga file berakhir seperti ini:
# By default, this script does nothing
rfkill block wifi
exit 0
Setelah selesai, tekan Ctrl+ X, lalu tekan Yuntuk menyimpannya dan tekan Enteruntuk menerima nama file.
Jika Anda memutuskan untuk mengaktifkan perangkat kemudian, jalankan: sudo rfkill unblock wifi
. Jangan lupa untuk menghapus saluran dari /etc/rc.local jika Anda memutuskan untuk menggunakan kartu nirkabel.
/etc/rc.local
karena skrip dijalankan dengan izin root. Sangat tidak mungkin Anda dapat menonaktifkan wifi tanpa izin root. Jika saya mencoba rfkill block wifi
atau rfkill unblock wifi
, saya mendapatkan "Tidak dapat membuka perangkat kontrol RFKILL: Izin ditolak".
$ rfkill block wifi
menyebabkan applet NetworkManager menampilkan "Nirkabel dinonaktifkan" dan $ iwconfig
untuk ditampilkan Tx-Power=off
. $ rfkill unblock wifi
batalkan efek ini.
/etc/rc.local
. Gunakan ini sebagai gantinya:/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.state
file yang tetap ada pengaturannya, WirelessEnabled=false
adalah salah satunya. Saya akan memposting pertanyaan Anda ..
Cara termudah untuk menonaktifkan kartu nirkabel Anda adalah klik kanan pada indikator NetworkManager (ikon kecil di kanan atas pada panel), dan hapus centang Enable Wireless
. Ini menurunkan ( ifconfig wlan0 down
) antarmuka dan tidak melakukan pemindaian lagi.
tlp
, harap baca seluruh jawaban.Semua jawaban untuk pertanyaan ini sudah cukup tua sekarang dan tidak berfungsi pada rilis Ubuntu yang lebih baru yang menggunakan systemd. Jawaban froage bekerja untuk saya pada 14,04 tetapi tidak bekerja pada 16,04.
Systemd menggunakan systemd-rfkill.service
untuk menyimpan status sakelar rfkill selama shutdown dan mengembalikannya pada setiap boot.
Anda harus melewati parameter baris perintah kernel untuk mengembalikan status rfkill switch pada setiap boot.
/etc/default/grub
dengan editor teks pilihan Anda.systemd.restore_state=1
sebagai parameter ke GRUB_CMDLINE_LINUX
. Baris itu sekarang harus dibaca GRUB_CMDLINE_LINUX="systemd.restore_state=1"
. Anda dapat menambahkannya GRUB_CMDLINE_LINUX_DEFAULT
juga. Keduanya bekerja. Lihat pertanyaan ini untuk lebih jelasnya.Ini akan memastikan bahwa status rfkill akan dipulihkan pada setiap boot. Pastikan untuk mematikan bluetooth dan wifi sebelum memulai kembali.
tlp
:tlp 0.8-1
mana tersedia dalam repositori 16,04. Setelah memperbarui tlp 0.9-1
menggunakan linrunner ppa, SEMUA emisi diselesaikan.Jawaban asli:
tlp
mask / nonaktifkan systemd-rfkill.service
untuk "menghindari konflik dan memastikan operasi yang tepat dari opsi peralihan perangkat radio TLP" . ( Sumber-1 , Sumber-2 )
Ini berarti melewatkan parameter kernel tidak akan bekerja untuk Anda.
Berikut ini adalah potongan kecil (sekitar baris no. 195) dari file konfigurasi default 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"
Seperti yang Anda lihat opsi untuk RESTORE_DEVICE_STATE_ON_STARTUP
dinonaktifkan secara default. Tetapi mengaktifkan opsi itu tidak membantu.
Bahkan setelah Anda mengaktifkan opsi untuk RESTORE_DEVICE_STATE_ON_STARTUP
, menonaktifkan wifi dan bluetooth (menggunakan rfkill block all
) dan terus restart, entah bagaimana WiFi diaktifkan pada setiap boot ke-2 atau ke-3. Tidak ada jaminan bahwa pada boot berikutnya WiFi akan dinonaktifkan. Anehnya
tlp
mengelola untuk menonaktifkan Bluetooth pada setiap boot.
Hal yang sama berlaku untuk opsi ke-2 dalam cuplikan DEVICES_TO_DISABLE_ON_STARTUP
, yang juga dinonaktifkan secara default. Mengaktifkannya juga tidak berfungsi. Network Manger
menunjukkan bahwa WiFi dinonaktifkan tetapi rfkill list
tidak menunjukkan blok lunak pada WiFi.
Catatan: Saya sudah membaca baris
"Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below are ignored when this is enabled!"
.Saya menonaktifkan
RESTORE_DEVICE_STATE_ON_STARTUP
sebelum mengaktifkanDEVICES_TO_DISABLE_ON_STARTUP
untuk menghindari konflik.
tlp-rdw
tidak berfungsi seperti yang diharapkan.tlp
pengguna:tlp 0.9-1
menggunakan linrunner ppa.Jawaban asli:
Mengaktifkan DEVICES_TO_DISABLE_ON_STARTUP
dan mengaturnya untuk menonaktifkan Bluetooth dan WiFi dapat bekerja untuk Anda. ( Ini berlaku untuk orang ini )
Pertanyaan ini di sini di askubuntu. Ini mirip dengan jawaban yang lebih lama untuk pertanyaan ini. Tetapi harap dicatat bahwa saya belum mencobanya sendiri. Mungkin berhasil atau tidak.
Sumber lain: systemd-rfkill , tlp-configuration
GRUB_CMDLINE_LINUX
dan GRUB_CMDLINE_LINUX_DEFAULT
ditambah perintah (tidak disebutkan) sudo update-grub
dan saya tidak bisa membuatnya bekerja di Pop_OS! 19.10 (yang didasarkan pada Ubuntu 19.10). Menurutnya systemctl status systemd-rfkill
, layanan ini sudah dijalankan pada setiap boot dan, karena nilai defaultnya 1
, tidak perlu ada upaya ini. Berdasarkan info di man systemd-rfkill
, mengingat status radio "saat boot awal" harus menjadi perilaku default, yang membuat saya percaya bahwa komponen ini entah bagaimana rusak.
Anda bisa menambahkan
ifconfig wlan0 down
untuk /etc/rc.local
, tetapi pertama-tama,
pastikan bahwa, jika Anda menggunakan NetworkManager (saya memiliki versi 0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3), Anda masuk ke menu " Edit Koneksi " -> tab " Nirkabel ", klik pada koneksi, klik " Edit " , dan pastikan bahwa, di tab " Nirkabel ", kotak centang " Sambungkan Secara Otomatis " TIDAK dicentang.
rfkill
.