Como encontrar e recarregar um driver específico do kernel?

5

Estou usando o Crunchbang 64 bit O.S. com um adaptador sem fio ASUS N150. Toda vez que eu fecho meu laptop e entra no modo de suspensão, quando "acordo", não consigo me conectar usando o adaptador sem fio; Eu tenho que reiniciar.

Minhas perguntas são:

  1. Existe uma maneira de encontrar o nome do driver específico? Eu sei que é um adaptador ASUS N150 com um chipset Realtek.

  2. Como posso recarregar o driver do adaptador sem reiniciar o sistema?

  3. Como posso encontrar minha versão atual do kernel via terminal (sidenote)?

por Joseph 06.02.2014 / 12:51

2 respostas

6

maneira de encontrar o nome do driver específico

  • lspci | grep -i network

Não tenho certeza se esse dispositivo está no barramento PCI ou USB, mas você pode tentar o seguinte.

  1. Use lsusb ou lspci para encontrar informações sobre o dispositivo
  2. Pesquisar esse dispositivo para o módulo correspondente ("driver")
  3. Verifique se o módulo está carregado e disponível com lsmod e modprobe

Outra ideia seria usar lsmod e diff para descobrir quais módulos estão faltando quando o laptop usa o modo de suspensão. Pode ser mais do que um módulo com um problema.

  1. reiniciar a máquina
  2. verifique se o adaptador wi-fi está funcionando
  3. use lsmod para obter todos os módulos carregados

    lsmod > loaded-modules-before-sleep.txt
    
  4. coloque o computador no modo de suspensão

  5. acorde a máquina
  6. certifique-se de que o adaptador wifi NÃO esteja funcionando
  7. use lsmod para obter todos os módulos carregados

    lsmod > loaded-modules-after-sleep.txt
    
  8. use o diff para ver o que mudou!

    diff loaded-modules-before-sleep.txt loaded-modules-after-sleep.txt
    

recarregar o driver sem reinicializar o sistema

Uma vez que você saiba que o módulo carrega, basta usar modprobe como root

  • modprobe wifi_module_name

encontra a versão atual do kernel via terminal

uname para o resgate! uname deve dizer o que você quer saber.

  • uname -a
por 06.02.2014 / 13:20
2

Adicionando uma resposta mais curta e mais específica para minha própria conveniência:)

Para descobrir o módulo do kernel, emita o lspci -vvnn | grep -A 9 Network (de ubuntu WifiDocs ):

~$ lspci -vvnn | grep -A 9 Network 
03:00.0 Network controller [0280]: Broadcom Corporation BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
    Subsystem: Apple Inc. AirPort Extreme [106b:010f]
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 256 bytes
    Interrupt: pin A routed to IRQ 17
    Region 0: Memory at a0500000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: wl
    Kernel modules: bcma, wl

Com isso você pode ver que wl está em uso.

Para recarregar sob demanda, faça

sudo rmmod wl && sudo modprobe wl

Para recarregar no modo de suspensão / hibernação, instale o pm-utils e adicione um arquivo com qualquer nome em /etc/pm/config.d/ , por exemplo /etc/pm/config.d/suspend com o seguinte conteúdo:

SUSPEND_MODULES="wl"

Isso é explicado em wiki do pm-utils do Arch e pm-action man page

    
por 25.08.2016 / 16:20