Como funciona a detecção de hardware no Linux?

Como funciona a detecção de hardware no Linux?

Sempre que tenho que solucionar problemas de "wifi não está funcionando", "vídeo não está funcionando" etc. problemas no Linux eu realmente não entendo como fazer isso corretamente. Minha abordagem é confusa: tente lspci, analise dmesg, analise alguns registros, pesquise no Google e espero que você encontre a solução. O que eu realmente quero é entender o que está acontecendo e poder traçar todo o caminho e descobrir quando exatamente algo está errado.

Digamos que o wifi esteja quebrado.

Corro lspcipara descobrir que tipo de placa de rede está no meu computador. Normalmente consigo ver algo relacionado a wifi na lspcisaída de. Esse “algo” inclui o nome e o modelo do meu cartão. Mas como isso funciona? Este comando lista apenas os dispositivos descobertos anteriormente com sucesso por outra coisa (pode ser o udev?) Onde leva o nome/descrição do dispositivo? Ele está armazenado em algum lugar dentro do hardware? É possível que lspcieu não relate meu hardware se algo der errado nas etapas anteriores?

Agora preciso entender se o módulo do kernel apropriado está presente para o meu hardware. O que eu faço é entrar nas fontes do kernel, executar make menuconfige procurar o nome do meu hardware. Isso significa que o kernel deve conhecer todos os modelos de placas de rede da Terra? Isso parece estranho porque existem muitos desses modelos. Acho que todas as placas de rede deveriam ter interfaces semelhantes, o que há de tão diferente entre elas que torna necessário ter módulos diferentes para diferentes tipos de placas?

Existe uma maneira melhor de descobrir o modelo de kernel adequado para minha placa? O que devo fazer se mesmo depois de compilado e instalado o módulo que encontrei a placa ainda não funcionar? Como posso ter certeza de que o módulo está correto (isso significaria que o problema ocorre em alguns estágios posteriores)?

Agora eu corro ifconfigou iwconfig. Esses comandos exibeminterfaces de rede. Se eu vir a interface wifi no resultado, isso significa que o kernel detectou o hardware com sucesso e criou ointerfacepara que outros programas possam usá-lo agora? Isso significa que o problema agora é de mais alto nível (como senha errada ou algo assim)?

O conteúdo do /dev/diretório pode me ajudar de alguma forma a entender o que está errado (ou ter certeza de que algo está definitivamente dando certo)?

Desculpe se esta pergunta parece confusa, ela reflete a bagunça na minha cabeça. Por favor, ajude-me a me livrar dessa bagunça.

informação relacionada