IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Linux - Allgemeines - linux kernelmodule



linux kernelmodule

Der Umgang mit linux kernelmodulen wird erklärt.


Autor: Franz Schaefer (mond)
Datum: 23-01-2002, 19:39:30
Referenzen: man modprobe
man depmod
man modules
man modules.conf
man insmod
man modinfo
/usr/src/linux/Documentation/modules.txt
Schwierigkeit: Fortgeschrittene
Ansichten: 4193x
Rating: 4.5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



| special deluxe |

Übersicht

die kernel die mit einer modernen linux distribution mitgeliefert werden
beinhalten die meisten sachen die man so braucht schon als modul. meist
will man aber einen kernel der speziell fuer den eigenen rechner optimiert
ist oder man muss den kernel upgraden weil es mit aelteren
sicherheitsprobleme gibt etc..

was genau ist der kernel?

der kenerl ist das herz jedes betriebsystems. es kuemmert sich um die
vergabe aller resourcen (rechenzeit, speicher, netzwerkkarten, .. ) und
stellt den user-space programmen eine abstrakte schnittstelle zur hardware
zur verfuegung... (z.b. dass man seine daten in files speichern kann und
nicht "haendisch" auf sektoren auf der harddisk zugreifen muss.. dass man
daten einfach so nach /dev/audio schreiben kann und sie werden abgespielt
was auch immer fuer eine tatsaechliche soundkarte dahinter steckt, etc..)

viele funktionen die der kernel bieten kann koennen als "modul" uebersetzt
werden. d.h. sie kennen bei bedarf geladen werden. die module werden
uebliecherweise unter /lib/modules/2.x.x/ abgelegt (wobei 2.x.x ) durch
die versionsnummer des aktuellen kernels zu ersetzten ist.

d.h. wenn man irgend ein stueck exotischer hardware zum laufen bringen
will muss man eventuell einen neuen kernel compilieren..

uname -a

zeigt die aktuelle version des kernels der gerade laeuft. (funktioniert
auch auf anderen unixen und ist so praktisch wenn man herausfinden will
auf welchem system man gerade arbeitet..)

mit dem befehl:

insmod /lib/modules/2.x.x/bla/irgendeinmodul.o

kann man dem kernel sagen dass es ein kernelmodul hinzufuegen soll (das
muss natuerlich schon vorhanden sein..)

praktischer als insmod ist jedoch "modprobe". modeprobe hat eine kleine
datenbank die sagt wo welches modul liegt und welches modul welches andere
voraussetzt und laed gleich alle module wenn man nur den namen angibt:

modprobe irgendeinmodul

manche module akzeptieren auch parameter. z.b. interrupt oder
portaddressen bei aelteren ISA karten oder aehnliches. (ob und welche
parameter ein modul akzeptiert kann man mit "modinfo -p" herausfinden.
achtung: modinfo braucht wie insmod den genauen pfad auf das modul)

(die datenbank wird mit dem befehl

depmod -a

aktualisiert)

mit hilfe von

lsmod

kann man sich anzeigen lassen welche kernel module gerade im moment
geladen sind.

die ausgabe von lsmod koennte z.b. so aussehen:

Module Size Used by
via82cxxx_audio 16816 0
ac97_codec 9488 0 [via82cxxx_audio]
3c59x 24736 1
8139too 13216 1

das heisst wir haben eine via82cxxx_audio sound karte die zusaetzlich noch
das modul ac97_codec benoetigt. weiters die module 3c59x und 8139too (zwei
netzwerkarten)

rmmod irgendeinmodul

wuerde das modul wieder entfernen (falls es nicht noch von andeeren gerade
geladenen modulen gebraucht wird)

jede distribution hat auch ein file wo man konfigurieren kann welche
module beim starten geladen werden sollen. zum teil koenenn module auch
automatisch bei bedarf (d.h. bei zugirff auf ein geraet) geladen werden.
(im debian z.b. /etc/modules )


falls die gewuenschte funktion nicht als kernel modul zur verfuegung steht
muss man einen kernel selbst compilieren. wie man das macht lernen wir
demnaechst.

jetzt noch ein beispielt:

angenommen wir bauen eine neztwerkkarte mit einem RTL8139 chip ein (sind
meist die biligsten karten). damit wir die verwenden koennen schauen wir
uns unterhalb von /lib/modules/2.x.x/ um ob wir ein modul mit passenden
namen finden. falls wir z.b. "8139too" finden dann koennte das passen. wir
versuchen das modul zu laden:

modprobe 8139too

falls das modprob ohne fehlermeldung ausgefuehrt wird war es erfolgereich.
hatten wir bis jetzt eine neztwerkarte die eth0 geheissen hat dann gibt es
mit dem insmod jetzt hoffentlich eine zweite namens eth1 und wir koennen
diese mit ifconfig configurieren.

dmesg

wuerde uns zuaetzlich noch die lezten kernel meldungen zeigen.


EXERCISES:

* schau dir an welche module gerade auf deinem system geladen sind.

* schau dir an welche module bei dir im /lib/modules/... vorhanden sind.

* versuche ein modul mit insmod zu laden. schau dir mit modinfo an ob das
modul parameter akzeptieren wuerde.

* entferne das modul wieder.



_______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0