Acabo de reinstalar Debian en mi computadora portátil Sony VAIO, y todas mis dmesg
consolas virtuales reciben correo no deseado con los mismos mensajes una y otra vez.
[ 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
Creo que estos mensajes provienen de un dispositivo USB conectado internamente, probablemente la cámara web (ya que eso es lo único que no funciona). Parece que la única forma en que puedo cerrarlo (sin matar mis puertos USB realmente útiles) es deshabilitar uno de los controladores de host USB:
# echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
Esto también elimina mi interfaz Bluetooth, pero estoy de acuerdo con eso.
Me gustaría que esta configuración persista, de modo que pueda volver a usar mi consola virtual sin problemas en caso de que la necesite. Quiero que mi sistema operativo (Debian amd64) nunca lo active, pero no sé cómo hacerlo. Intenté poner en la lista negra el alias del módulo para el dispositivo PCI, pero parece ignorarse:
$ cat /sys/bus/pci/devices/0000\:00\:1a.0/modalias
pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
$ cat /etc/modprobe.d/blacklist
blacklist pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
¿Cómo me aseguro de que este dispositivo PCI específico nunca se active automáticamente, sin desactivar por completo su controlador?
-editar- El nombre del módulo fue renombrado recientemente, ahora los siguientes trabajos de userland:
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind
Aún así, estoy buscando una manera de evitar que el núcleo se vincule con ese dispositivo en primer lugar.
update-initramfs -u -k all
?ehci_hcd
), ya que eso deshabilitaría todos los hosts USB en mi sistema Solo quiero deshabilitar este dispositivo específico, en función de su proveedor, desarrollador, subvendor y subdev.Respuestas:
Recientemente me encontré con este problema al configurar mi caja xen con múltiples dispositivos usb. Quería que Dom-0 usara uno y el otro una máquina virtual, así que necesitaba que el dispositivo estuviera disponible para xen-pciback. Sin embargo, el controlador USB se incorporó a mi kernel, por lo que no pude simplemente ponerlo en la lista negra. Mi solución fue crear un script initramfs personalizado que desenlaza el puerto pci específico muy temprano en el proceso de arranque.
Esto es Ubuntu 2016.04, pero debería funcionar en versiones anteriores.
Hay tres archivos involucrados. Los nombré para mi caso de uso específico, pero ymmv:
El primer archivo, llamado
/etc/unbindpci
archivo, que es un simple csv del número de dispositivo pci y el controlador (configure según sea necesario aquí):Segundo archivo
/etc/initramfs-tools/hooks/xenfiles
, que copia la configuración anterior en initramfs.El tercer archivo es lo que funciona en el momento del arranque, lo coloqué en
/etc/initramfs-tools/scripts/init-top/unbind-early-pci
:Finalmente, ejecuta
update-initramfs -k all -u
y reinicia.Podría incluir soporte para comentarios en el archivo de configuración, y hay mucha limpieza que hacer aquí, pero funciona para mí.
fuente
/etc/init.d
! No estoy usando la máquina en este momento, y es posible que nunca vuelva a arrancarla con Debian, por lo que no puedo probarla. Sin embargo, debido a que probablemente hubiera funcionado en mi caso, lo aceptaré como respuesta.udev
que todo el autobús caminaba y cargaba durante el arranque del kernel y todo lo que hizo Grubinitramfs
fue de solo lectura y se perdió. cuando se carga el kernel. Había tratado de configuraciónsetpci
eninitramfs-tools
pero renunció y estoy tratando unaudev
regla ahora.Ninguna de las respuestas resolvió mi problema similar, ¡pero me pusieron en el camino para resolverlo!
Mi error de syslog:
Este es un puerto hub USB interno para una opción de bluetooth que no tengo.
desvincularse del dispositivo pci solo resultó en que el concentrador volviera a aparecer como otro concentrador (5 en mi caso) e inundó aún más el syslog.
Por casualidad, noté una estructura de desatar debajo
/sys/bus/usb/drivers/hub
. Usando los ejemplos anteriores, acabo de agregar lo siguiente en rc.local:El resultado es el silencio syslog! Ahora para agregar el ejemplo de script de kshurig para la administración de energía y debería ser dorado.
fuente
Puede eliminar un dispositivo PCI agregando una regla udev en /etc/udev/rules.d:
Reemplace
0000:00:03.0
con la dirección del dispositivo pci que desea eliminarfuente
Encontré este hilo en askubuntu:
Utilizando
lspci -vv
para identificar la ranura PCI de un dispositivo que desea deshabilitar, sonó como si pudiera usar este comando para apagar el dispositivo de esa ranura:fuente
/sys/bus/pci/slots/1
) es la ranura ExpressCard en el exterior, que puedo desocupar manualmente.Cuando ya se tiene
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
en/etc/rc.local
para el inicio de lo que sólo hay que ponerla en una secuencia de comandos para la administración de energía demonio también.Va así: Cree un archivo ejecutable de script bash llamado
0_disable_webcam
en el directorio/etc/pm/sleep.d/
:Debería funcionar al instante. Lo probé con una memoria USB y funcionó (lo que significa que permaneció deshabilitado) siempre que la unidad estuviera conectada. Reenchufar necesitaría reglas de udev, pero como su cámara web no se desconectará, debería funcionar. Si eso no funciona, tengo otra sugerencia.
fuente
tree /sys/bus/pci/devices/0000\:00\:1a.0/
"usbX", lo que significa que el puerto es un número similar). Si es "1-1.2" en lugar de su,echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
el script debería tenerecho "auto" > /sys/bus/usb/devices/1-1.2/power/control; echo -n "1-1.2" > /sys/bus/usb/drivers/usb/unbind
.no es una respuesta a su pregunta tanto como una solución
¿Por qué no simplemente suprimir el registro de los mensajes en la consola modificando syslog / (no sé si usa syslog o rsyslog u otra cosa, por lo que realmente no puedo señalarlo más específicamente en el directorio correcto, pero si usted busque en sus archivos de configuración de syslog "consola" y "tty", eso le daría un buen punto de partida; de hecho, es probable que pueda cambiar la consola a / dev / tty1 [por ejemplo] y que los mensajes solo se registren en tty1 en lugar de todos consolas
La otra solución (para responder a su pregunta, pero no me gusta), podría incluir en la lista negra el módulo ehci_hcd (si está cargado), o recompilar su kernel para usarlo solo como módulo. Eche un vistazo a h ttp: //www.cyberciti.biz/faq/rhel-redhat-centos-kernel-usb-reset-high-speed-ehci_hcd/ que resuelve exactamente la pregunta que está haciendo
fuente