Acabei de reinstalar o Debian no meu laptop Sony VAIO, e meu dmesg
e consoles virtuais todos recebem spam com as mesmas mensagens repetidas vezes.
[ 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
Eu acredito que essas mensagens são provenientes de um dispositivo USB conectado internamente, provavelmente a webcam (já que é a única coisa que não funciona). A única maneira que eu posso parecer para calar a boca (sem matar minhas portas USB realmente úteis) é desabilitar um dos controladores de host USB:
# echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
Isso também diminui minha interface Bluetooth, mas estou bem com isso.
Eu gostaria que essa configuração persistisse, para que eu pudesse usar meu console virtual novamente, caso eu precise. Eu quero que o meu sistema operacional (Debian amd64) nunca acorde, mas eu não sei como fazer isso. Eu tentei colocar na lista negra o alias do módulo para o dispositivo PCI, mas parece ser ignorado:
$ cat /sys/bus/pci/devices/0000\:00\:1a.0/modalias
pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
$ cat /etc/modprobe.d/blacklist
blacklist pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
Como posso garantir que este dispositivo PCI específico nunca seja ativado automaticamente, sem desativar completamente o driver?
-editar- O módulo foi renomeado recentemente, agora os seguintes trabalhos da userland:
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind
Ainda assim, estou procurando uma maneira de impedir que o kernel vincule esse dispositivo em primeiro lugar.
update-initramfs -u -k all
?ehci_hcd
), uma vez que isso desativaria todos Hosts USB no meu sistema. Eu só quero desativar este dispositivo específico, com base em seu fornecedor, dev, subvendor e subdev.Respostas:
Recentemente, me deparei com esse problema ao configurar minha caixa de xen com vários dispositivos usb. Eu queria que um fosse usado pelo Dom-0, e o outro a ser usado por uma VM, então eu precisava que o dispositivo estivesse disponível para o xen-pciback. No entanto, o driver usb foi cumprido no meu kernel, então eu não poderia simplesmente colocar o driver na lista negra. Minha solução foi criar um script initramfs personalizado que desassocie a porta pci específica no início do processo de inicialização.
Este é o Ubuntu 2016.04, mas deve funcionar em versões anteriores.
Existem três arquivos envolvidos. Eu os nomeei para o meu caso de uso específico, mas ymmv:
O primeiro arquivo, chamado
/etc/unbindpci
arquivo que é um simples csv do número do dispositivo pci e o driver (configure conforme necessário aqui):Segundo arquivo
/etc/initramfs-tools/hooks/xenfiles
, que copia a configuração acima no initramfs.Terceiro arquivo é o que faz o trabalho no momento da inicialização, eu coloquei em
/etc/initramfs-tools/scripts/init-top/unbind-early-pci
:Finalmente, corra
update-initramfs -k all -u
e reinicie.Eu poderia incluir suporte para comentários no arquivo de configuração, e há muita limpeza para fazer aqui, mas funciona para mim.
fonte
/etc/init.d
! Eu não estou usando a máquina agora, e talvez eu nunca a inicialize novamente com o Debian, então não posso testá-la. No entanto, como provavelmente teria funcionado no meu caso, aceito isso como uma resposta.udev
fez todo o ônibus percorrer e carregando durante a inicialização do kernel e qualquer coisa grub fez eminitramfs
foi lido apenas e perdido. quando o kernel é carregado. Eu tentei configurarsetpci
eminitramfs-tools
mas desisti e estou tentando umudev
governar agora.Nenhuma das respostas resolveu o meu problema semelhante, mas eles me colocaram no caminho para resolvê-lo!
Meu erro de syslog:
Esta é uma porta hub USB interna para uma opção bluetooth que eu não tenho.
desvincular-se para o dispositivo pci apenas resultou no hub popping de volta para cima como outro hub (5 no meu caso) e inundação syslog ainda mais.
Por acaso notei uma estrutura de desconexão sob
/sys/bus/usb/drivers/hub
. Usando exemplos acima, adicionei o seguinte em rc.local:O resultado é o silêncio do syslog! Agora para adicionar o exemplo de script do kshurig para gerenciamento de energia e eu deveria ser de ouro.
fonte
Você pode remover um dispositivo PCI adicionando uma regra do udev em /etc/udev/rules.d:
Substituir
0000:00:03.0
com o endereço do dispositivo pci que você deseja removerfonte
Encontrei este tópico no askubuntu:
Usando
lspci -vv
Para identificar o slot PCI de um dispositivo que você deseja desativar, parecia que você poderia usar este comando para desativar o dispositivo desse slot:fonte
/sys/bus/pci/slots/1
) é o slot ExpressCard no lado externo, que eu posso desocupar manualmente.Quando você já tem
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
em/etc/rc.local
para boot, você só precisa colocá-lo em um script para o deamon de gerenciamento de energia também.Vai assim: Crie um arquivo de script bash executável chamado
0_disable_webcam
no diretório/etc/pm/sleep.d/
:Deve funcionar instantaneamente. Eu tentei com um pen drive usb e funcionou (ou seja, permaneceu desativado), enquanto a unidade estava conectada. A replicação precisaria das regras do udev, mas como sua webcam não será desconectada, ela deve funcionar. Se isso não funcionar, tenho outra sugestão.
fonte
tree /sys/bus/pci/devices/0000\:00\:1a.0/
em "usbX", o que significa que a porta é um número semelhante. Se é "1-1.2" em vez de seuecho "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
o script deve terecho "auto" > /sys/bus/usb/devices/1-1.2/power/control; echo -n "1-1.2" > /sys/bus/usb/drivers/usb/unbind
.não é uma resposta à sua pergunta tanto quanto uma solução.
Por que não simplesmente suprimir o log das mensagens para o console, modificando syslog / (não sei se você usa syslog ou rsyslog ou qualquer outra coisa, então eu não posso realmente apontá-lo mais especificamente no diretório correto, mas se você pesquise seus arquivos de configuração do syslog por "console" e "tty", que lhe dariam um bom ponto de partida - na verdade, você provavelmente pode alterar o console para / dev / tty1 [por exemplo] e ter apenas log de mensagens para tty1 consoles.
A outra solução (para responder a sua pergunta, mas eu não gosto), você poderia colocar o módulo ehci_hcd na lista negra (se estiver carregado), ou recompilar seu kernel para usá-lo apenas como um módulo. Dê uma olhada em h ttp: //www.cyberciti.biz/faq/rhel-redhat-centos-kernel-usb-reset-high-speed-ehci_hcd/ que resolve exatamente a pergunta que você está fazendo
fonte