Wie funktioniert die Hardwareerkennung unter Linux?

Wie funktioniert die Hardwareerkennung unter Linux?

Immer wenn ich Probleme wie „WLAN funktioniert nicht“, „Video funktioniert nicht“ usw. unter Linux beheben muss, weiß ich nicht wirklich, wie ich das richtig mache. Mein Ansatz ist chaotisch: Probieren Sie es lspciaus, schauen Sie sich an dmesg, schauen Sie sich einige Protokolle an, googeln Sie und hoffentlich finden Sie die Lösung. Was ich wirklich möchte, ist zu verstehen, was vor sich geht, und den gesamten Pfad verfolgen zu können und herauszufinden, wann genau etwas schief läuft.

Nehmen wir an, das WLAN ist kaputt.

Ich versuche lspciherauszufinden, welche Art von Netzwerkkarte in meinem Computer steckt. Normalerweise kann ich in lspcider Ausgabe von etwas sehen, das mit WLAN zu tun hat. Dieses „Etwas“ umfasst den Namen und das Modell meiner Karte. Aber wie funktioniert das? Listet dieser Befehl nur die Geräte auf, die zuvor erfolgreich von etwas anderem erkannt wurden (vielleicht udev?)? Woher nimmt er den Namen/die Beschreibung des Geräts? Ist es irgendwo in der Hardware gespeichert? Ist es möglich, dass lspcimein Hardwareteil nicht gemeldet wird, wenn bei den vorherigen Schritten etwas schiefgelaufen ist?

Jetzt muss ich herausfinden, ob das passende Kernelmodul für meine Hardware vorhanden ist. Dazu gehe ich in die Kernelquellen, führe sie aus make menuconfigund suche nach dem Namen meiner Hardware. Bedeutet das, dass der Kernel alle Netzwerkkartenmodelle der Welt kennen muss? Das erscheint seltsam, denn es gibt viel zu viele solcher Modelle. Ich vermute, alle Netzwerkkarten sollten ähnliche Schnittstellen haben. Was ist denn so unterschiedlich zwischen ihnen, dass es notwendig ist, für verschiedene Kartentypen unterschiedliche Module zu haben?

Gibt es eine bessere Möglichkeit, das passende Kernelmodell für meine Karte zu finden? Was soll ich tun, wenn die Karte auch nach der Kompilierung und Installation des gefundenen Moduls immer noch nicht funktioniert? Wie kann ich sicherstellen, dass das Modul korrekt ist (das würde bedeuten, dass das Problem in einigen späteren Phasen auftritt)?

Jetzt führe ich ifconfigoder aus iwconfig. Diese Befehle zeigenNetzwerk Schnittstellen. Wenn ich im Ergebnis die WLAN-Schnittstelle sehe, bedeutet das, dass der Kernel die Hardware erfolgreich erkannt und dieSchnittstelledamit andere Programme es jetzt verwenden können? Bedeutet das, dass das Problem jetzt auf höherer Ebene liegt (z. B. falsches Passwort oder so etwas)?

Kann /dev/mir der Verzeichnisinhalt irgendwie helfen zu verstehen, was schief läuft (oder sicherzustellen, dass definitiv etwas richtig läuft)?

Entschuldigen Sie, wenn diese Frage chaotisch aussieht, sie spiegelt das Chaos in meinem Kopf wider. Bitte helfen Sie mir, dieses Chaos loszuwerden.

verwandte Informationen