¿Cómo funciona la detección de hardware en Linux?

¿Cómo funciona la detección de hardware en Linux?

Cada vez que tengo que solucionar problemas de "wifi no funciona", "el video no funciona", etc. en Linux, realmente no entiendo cómo hacerlo correctamente. Mi enfoque es complicado: prueba lspci, investiga dmesg, examina algunos registros, busca en Google y, con suerte, encontrarás la solución. Lo que realmente quiero es entender qué está pasando y poder rastrear todo el camino y descubrir exactamente cuándo algo va mal.

Digamos que el wifi no funciona.

Corro lspcipara averiguar qué tipo de tarjeta de red hay en mi computadora. Normalmente puedo ver algo relacionado con wifi en lspcila salida. Este "algo" incluye el nombre y modelo de mi tarjeta. pero como funciona? ¿Este comando enumera solo los dispositivos descubiertos previamente con éxito por otra cosa (¿udev puede ser?) ¿De dónde toma el nombre/descripción del dispositivo? ¿Está almacenado en algún lugar dentro del hardware? ¿Es posible que lspcino informen sobre mi hardware si algo salió mal en los pasos anteriores?

Ahora necesito saber si hay un módulo de kernel apropiado para mi hardware. Lo que hago es ir a las fuentes del kernel, ejecutarlo make menuconfigy buscar el nombre de mi hardware. ¿Significa esto que el núcleo debe conocer todos los modelos de tarjetas de red existentes en la Tierra? Esto parece extraño porque hay demasiados modelos de este tipo. Supongo que todas las tarjetas de red deberían tener interfaces similares, ¿qué hay de diferente entre ellas que hace necesario tener diferentes módulos para diferentes tipos de tarjetas?

¿Existe una mejor manera de encontrar el modelo de kernel adecuado para mi tarjeta? ¿Qué debo hacer si incluso después de compilar e instalar el módulo que encontré, la tarjeta aún no funciona? ¿Cómo puedo asegurarme de que el módulo sea correcto (eso significaría que el problema ocurre en algunas etapas posteriores)?

Ahora corro ifconfigo iwconfig. Estos comandos muestraninterfaces de red. Si veo la interfaz wifi en el resultado, ¿significa que el kernel detectó exitosamente el hardware y creó elinterfaz¿Para que otros programas puedan usarlo ahora? ¿Significa que el problema ahora es de más alto nivel (como una contraseña incorrecta o algo así)?

¿Puede el contenido del /dev/directorio ayudarme de alguna manera a comprender qué va mal (o asegurarme de que algo definitivamente va bien)?

Lo siento si esta pregunta parece confusa, refleja el desorden en mi cabeza. Por favor ayúdame a deshacerme de este desastre.

información relacionada