Linux 14.983 Themen, 106.385 Beiträge

verständnisfrage...module

ghartl1 / 9 Antworten / Flachansicht Nickles

hallo,

habe ein paar verständnisfragen zu linux und modulen..

es gibt sogenannte laufzeitmodule..was heisst das?
werden die erst nach bedarf(programmaufruf..) geladen.
ist das auch der grund, warum es bei programmstarts ein bisschen länger dauert?
ist das dann ein monolithischer kernel? treiber fix eingebunden und mittels modulen ansprechbar?
braucht der dann die initrd beim start?

linux hat ja datenbanken mit den modulen im system...
wenn ich die immer aktuell halte (updatelsusb...ääähh, tut der übers internet updaten oder was??) hat er dann immer die neuesten treiber im system?

mit modprobe modulname knn ich so ein modul dann dauerhaft laden (sodass es auch bei neuem systemstart noch geladen ist)

nachher depmod......funktioniert meines wissens nur in verbindung mit modprobe..nicht mit insmod
brauch ich da eigentlich nix manuell in der modules.conf auskommentieren?

wie sucht ihr den passenden treiber? i machs a bissl russisch..zumindest hab is durch herumprobieren so hinbekommen...

lsusb
lspci
hwinfo
lshw
das sind meine suchwerkzeuge...die leite ich in eine textdatei um und such ma das gerät (respektive den treiber) raus....wenn nicht vorhanden..dann mit knoppix..hat bisher immer funktioniert.
dort raussuchen(wahrscheinlich hat der eine grössere datenbank) und einspielen mit modprobe....aber wie kann das funktionieren, wenn die normale datenbank das modul nicht aufweist..ich meine (vorausgesetzt, die selbe version vom kernel) genügts da einfach nur ein paar buchstaben in die modules.conf zu schreiben??
wenn ja, störts mich auch nicht..

puh genug einmal....aber ich komm der sache schon näher

gruss günter

bei Antwort benachrichtigen
KarstenW ghartl1 „verständnisfrage...module“
Optionen

Du meinst wahrscheinlich Kernelmodule.
Ein Kernelmodul ist eine Erweiterung des Linux Betriebsystemkernels. Man man Kernelmodule zur Laufzeit manuell nachladen. Dazu gibt man den Befehl "modprobe Modulname..." ein. modprobe prüft diverse Abhängigkeiten und lädt andere Kernelmodule bei Bedarf automatisch nach.
insmod kann auch Kernelmodule in den Speicher laden , prüft aber keine Abhängigkeiten.
Mit lsmod kann man sich alle geladenden Kernelmodule anzeigen lassen und mit rmmod wieder aus dem Speicher entfernnen.

Der Linuxkernel selbst ist in der Datei vmlinuz??? abgespeichert. Wenn man selbst einen Betriebsystemkern übersetzt, dann heißt diese Datei bzImage.

Im Prinzip sind diese Kernelmodule kompilierte Objectdateien die in den Speicher mit modprobe geladen werden und mit dem übrigen Linuxkernel verlinkt werden.

Ein monolitischer Betriebsystemkern ist nur diese Daten vmlinuz?? in der sich alle Treiber , Netzwerkprotokolle und andere Kerneloptionen befinden. Die alten Unixsysteme von AT&T und dieses BSD UNix hatten einen monolitischen Betriebsystemkern. Wohingegen der Linuxkernel modularisert ist. Dadurch wird der Betriebsystemkern flexibler. Man kann sich selbst einen Linuxkernel übersetzen und alle notwendigen Treiber und Netzwerkprotokolle monolitisch in den Kern kompilieren. Das wird hauptsächlich für Internetserver empfohlen , da monolitische Kernel nicht so leicht von rootkits angreifbar sind.

lspci listet nur die PCI Geräte auf und wandelt diese PCI Nummern in menschenlesbare Ausgaben um.
Wenn man dann eine Ausgabe sieht die den richtigen Chipsatz auflistet, kann man leichter den passenden Treiber heraussuchen und nachinstallieren.
lspci nutzt dafür irgendeine Datei.

Wenn man wissen möchte welche Treiber der jeweilige Linuxkernel mitbringt, dann ist es am einfachsten mal sich einen eigenen Linuxkernel zu konfigurieren.
Im Dokumentationsverzeichnis der Linuxsourcen gibt es auch noch sehr viele Informationen.

Das Problem ist die Vielzahl der Hardwarekomponenten bei PC Computer. Der Standardkernel der bei der Erstinstallation installiert wird, soll auf möglichst vielen Systeme laufen. Alle Treiber für die root Partition müssen monolitisch im Linuxkernel (Datei vmlinuz??) sein, da man ein Kernelmodul erst laden kann nachdem die root Partition gemouted wurde.
Man will den Linuxkernel aber nicht zu sehr mit Treibern überladen da es da auch Probleme geben kann, wenn zu viele Treiber im Linuxkernel sind ,für die im Rechner gar keine Hardware vorhanden ist. Mit Hilfe von den Kernelmodulen wird der Linuxkernel flexibler und es werden viele Treiber nur bei Bedarf geladen.
Dafür ist dann auch die Hardwareerkennung zuständig. Die Hardwareerkennung erkennt die eingebauten Chipsätze und lädt das passende Treibermodul automatisch zur Laufzeit nach. Ich kenne nur Debian . Bei Debian gibt es für die Hardwareerkennung verschiedene Systeme:
-KMOD im Linuxkernel (hat den kerneld ersetzt)
-udev für USB Sticks und -Festplatten und andere Geräte die zur Laufzeit an den Computer angeschlossen werden
-discover, erkennt veile Hardwarekomponennten schon beim Rechnerstart

Ich übersetze meist nach der Installation einen eigenen Betriebsystemkern um ihn besser an die eingebaute Hardwarekomponenten anzupassen und alle nicht benötigten Treiber zu entfernen.

PS: Wenn man selbst als Nichtprogrammierer einen Linuxtreiber installieren will, dann kann man diesen Treiber auch nur als Kernelmodul installieren, aber nicht monolitisch. Schon gar nicht kann man einen Linuxtreiber monolitisch installieren , wenn man nicht den Programmcode des Treibers bekommt.







Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen