Saya baru saja menginstal ulang Debian di laptop Sony VAIO saya, dmesg
dan konsol virtual saya dan semua mendapatkan spam dengan pesan yang sama berulang-ulang.
[ 59.662381] hub 1-1:1.0: unable to enumerate USB device on port 2
[ 59.901732] usb 1-1.2: new high-speed USB device number 91 using ehci_hcd
[ 59.917940] hub 1-1:1.0: unable to enumerate USB device on port 2
[ 60.157256] usb 1-1.2: new high-speed USB device number 92 using ehci_hcd
Saya percaya pesan-pesan ini datang dari perangkat USB yang terhubung secara internal, kemungkinan besar webcam (karena hanya itu yang tidak berfungsi). Satu-satunya cara saya bisa mematikannya (tanpa membunuh port USB saya yang sebenarnya berguna) adalah dengan menonaktifkan salah satu pengontrol host USB:
# echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
Ini juga menurunkan antarmuka Bluetooth saya, tapi saya baik-baik saja dengan itu.
Saya ingin pengaturan ini bertahan, sehingga saya dapat menggunakan konsol virtual saya tanpa rasa sakit lagi jika saya membutuhkannya. Saya ingin sistem operasi saya (Debian amd64) tidak pernah membangunkannya, tetapi saya tidak tahu bagaimana melakukan ini. Saya sudah mencoba membuat daftar hitam alias modul untuk perangkat PCI, tetapi tampaknya diabaikan:
$ cat /sys/bus/pci/devices/0000\:00\:1a.0/modalias
pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
$ cat /etc/modprobe.d/blacklist
blacklist pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
Bagaimana cara memastikan bahwa perangkat PCI spesifik ini tidak pernah diaktifkan secara otomatis, tanpa menonaktifkan drivernya sama sekali?
-edit- Modul ini berganti nama baru-baru ini, sekarang karya berikut dari userland:
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind
Tetap saja, saya mencari cara untuk menghentikan kernel dari mengikat perangkat itu di tempat pertama.
update-initramfs -u -k all
?ehci_hcd
), karena itu akan menonaktifkan semua host USB pada sistem saya. Saya hanya ingin menonaktifkan perangkat khusus ini, berdasarkan vendor, dev, subvendor, dan subdev.Jawaban:
Saya baru-baru ini mengalami masalah ini saat mengkonfigurasi kotak xen saya dengan beberapa perangkat usb. Saya ingin satu digunakan oleh Dom-0, dan yang lainnya digunakan oleh VM, jadi saya membutuhkan perangkat yang tersedia untuk xen-pciback. Namun, driver usb tersebut telah memenuhi kernel saya, jadi saya tidak bisa hanya memasukkan driver tersebut ke daftar hitam. Solusi saya adalah membuat skrip initramfs khusus yang tidak mengikat port pci tertentu di awal proses boot.
Ini adalah Ubuntu 2016.04, tetapi seharusnya berfungsi di versi sebelumnya.
Ada tiga file yang terlibat. Saya menamai mereka untuk use case khusus saya, tetapi ymmv:
File pertama, dinamai
/etc/unbindpci
file yang merupakan csv sederhana dari nomor perangkat pci dan driver (konfigurasikan seperlunya di sini):File kedua
/etc/initramfs-tools/hooks/xenfiles
, yang menyalin konfigurasi di atas ke dalam initramfs.File ketiga adalah apa yang berfungsi saat boot, saya menempatkannya
/etc/initramfs-tools/scripts/init-top/unbind-early-pci
:Akhirnya, jalankan
update-initramfs -k all -u
dan reboot.Saya dapat memasukkan dukungan untuk komentar dalam file konfigurasi, dan ada banyak pembersihan yang harus dilakukan di sini, tetapi itu berfungsi untuk saya.
sumber
/etc/init.d
! Saya tidak menggunakan mesin sekarang, dan saya mungkin tidak akan pernah boot lagi dengan Debian, jadi saya tidak bisa mengujinya. Namun, karena mungkin akan berhasil dalam kasus saya, saya akan menerimanya sebagai jawaban.udev
semua bus berjalan dan memuat selama boot kernel dan apa pun yang dilakukan grubinitramfs
hanya dapat dibaca dan hilang. ketika kernel dimuat. Saya telah mencoba untuk setupsetpci
diinitramfs-tools
tetapi menyerah dan mencoba sebuahudev
aturan sekarang.Tidak ada jawaban yang memecahkan masalah saya yang serupa, tetapi mereka memang menempatkan saya pada jalan untuk menyelesaikannya!
Kesalahan syslog saya:
Ini adalah hub-port usb internal untuk opsi bluetooth yang tidak saya miliki.
melepaskan ikatan ke perangkat pci hanya mengakibatkan hub muncul kembali sebagai hub lain (5 dalam kasus saya) dan membanjiri syslog lebih lanjut.
Secara kebetulan saya melihat struktur yang tidak mengikat di bawah
/sys/bus/usb/drivers/hub
. Menggunakan contoh di atas saya baru saja menambahkan yang berikut ini di rc.local:Hasilnya adalah syslog diam! Sekarang untuk menambahkan contoh skrip kshurig untuk manajemen daya dan saya harus menjadi emas.
sumber
Anda dapat menghapus perangkat PCI dengan menambahkan aturan udev di bawah /etc/udev/rules.d:
Ganti
0000:00:03.0
dengan alamat perangkat pci yang ingin Anda hapussumber
Menemukan utas ini di askubuntu:
Menggunakan
lspci -vv
untuk mengidentifikasi slot PCI perangkat yang ingin Anda nonaktifkan, sepertinya Anda bisa menggunakan perintah ini untuk mematikan perangkat slot itu:sumber
/sys/bus/pci/slots/1
) adalah slot ExpressCard di luar, yang dapat saya tinggalkan secara manual.Ketika Anda sudah
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
masuk/etc/rc.local
untuk booting dari Anda hanya perlu memasukkannya ke dalam naskah untuk manajemen daya deamon juga.Seperti ini: Membuat file skrip bash yang dapat dieksekusi yang bernama
0_disable_webcam
dalam direktori/etc/pm/sleep.d/
:Itu harus bekerja secara instan. Saya mencobanya dengan USB thumb drive dan berfungsi (artinya tetap dinonaktifkan) selama drive dicolokkan. Memasang kembali akan membutuhkan aturan udev tetapi karena webcam Anda tidak akan dicabut, itu akan berfungsi. Jika itu tidak berhasil, saya punya saran lain.
sumber
tree /sys/bus/pci/devices/0000\:00\:1a.0/
bawah "usbX" yang berarti port adalah nomor yang sama). Jika "1-1.2", bukanecho "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
skrip Anda yang seharusnyaecho "auto" > /sys/bus/usb/devices/1-1.2/power/control; echo -n "1-1.2" > /sys/bus/usb/drivers/usb/unbind
.bukan jawaban untuk pertanyaan Anda sebanyak pekerjaan di sekitar.
Mengapa tidak hanya menekan logging pesan ke konsol dengan memodifikasi syslog / (Saya tidak tahu apakah Anda menggunakan syslog atau rsyslog atau sesuatu yang lain, jadi saya tidak bisa benar-benar mengarahkan Anda lebih spesifik di direktori yang benar, tetapi jika Anda cari file konfigurasi syslog Anda untuk "konsol" dan "tty", yang akan memberi Anda tempat awal yang baik - pada kenyataannya, Anda mungkin dapat mengubah konsol ke / dev / tty1 [misalnya] dan memiliki pesan yang hanya masuk ke tty1 daripada semua konsol.
Solusi lain (untuk menjawab pertanyaan Anda, tetapi saya tidak suka), Anda dapat memasukkan blacklist modul ehci_hcd (jika sudah dimuat), atau mengkompilasi ulang kernel Anda untuk menggunakannya hanya sebagai modul. Lihatlah h ttp: //www.cyberciti.biz/faq/rhel-redhat-centos-kernel-usb-reset-high-speed-ehci_hcd/ yang menyelesaikan persis pertanyaan yang Anda tanyakan
sumber