|
|
| Zeile 1: |
Zeile 1: |
| − | Grundsätzlich besitzt der Linux-Kernel einen monolithischen Aufbau; allerdings bietet er auch die Möglichkeit, Module
| + | == Kernelmodule == |
| − | zur Laufzeit zu laden und entladen. Unter einem Kernelmodul versteht man im Allgemeinen einen Teil bzw. eine Erweiterung | + | Der Linux-Kernel besitzt grundsätzlich einen monolithischen Aufbau, bietet jedoch auch die Möglichkeit, Module zur Laufzeit zu laden und zu entladen. Ein Kernelmodul ist im Allgemeinen ein Teil oder eine Erweiterung des Kernels. Beispielsweise sind alle Hardwaretreiber (wie WLAN-Karte, Soundkarte usw.) als Modul angelegt. Die meisten Linux-Distributionen, einschließlich Ubuntu, machen starken Gebrauch von Kernelmodulen, um die bestmögliche Hardwarekompatibilität mit nur einem "allgemeinen" Kernel zu erreichen. In der Regel werden alle notwendigen Module beim Systemstart und falls nötig zur Laufzeit geladen, sodass der Nutzer sich nicht weiter darum kümmern muss. |
| − | des Kernels. So sind z.B. alle Hardwaretreiber (z.B. WLAN-Karte, Soundkarte...) als Modul angelegt. | |
| − | | |
| − | Die meisten Linux-Distributionen inklusive Ubuntu machen starken Gebrauch von Kernelmodulen, da so die bestmögliche | |
| − | Hardwarekompatibilität mit nur einem "allgemeinen" Kernel erreicht werden kann. | |
| − | | |
| − | In der Regel werden alle notwendigen Module beim Systemstart und falls nötig zur Laufzeit geladen, so dass der Nutzer sich | |
| − | nicht weiter darum kümmern muss (bzw. es oft noch nicht einmal mitbekommt). | |
| | | | |
| | + | == Inhaltsverzeichnis == |
| | + | * Installation |
| | + | * Tools |
| | + | * Ort, wo die Module des laufenden Kernels liegen |
| | + | * Geladene Module anzeigen |
| | + | * Information anzeigen |
| | + | * Übersicht über alle Module |
| | + | * Module laden/entladen |
| | + | ** modprobe |
| | + | ** Optionen |
| | + | ** Dateien |
| | + | * Abhängigkeiten von Modulen |
| | + | * Module automatisch laden |
| | + | * Automatisches Laden verhindern - Blacklisting |
| | + | * Aliases |
| | + | * Option |
| | + | * Skripte |
| | | | |
| | == Installation == | | == Installation == |
| − | Die Programme zum Umgang mit den Modulen sollten in der Standardinstallation enthalten sein, können aber ansonsten über | + | Die Programme zum Umgang mit den Modulen sollten in der Standardinstallation enthalten sein, können aber ansonsten über das Paket module-init-tools installiert werden. |
| − | das Paket | |
| − | * module-init-tools
| |
| − | installiert werden. | |
| − | ==Tools==
| |
| | | | |
| − | {| border=1 cellpadding=2
| + | == Tools == |
| − | !Kommando
| + | Verschiedene Kommandos bieten unterschiedliche Funktionalitäten: |
| − | !Bedeutung
| + | * '''lsmod''': Zeigt geladene Module an |
| − | |-
| + | * '''modprobe''': Universelles und mächtiges Werkzeug zum Entladen und Laden von Modulen |
| − | |lsmod
| + | * '''rmmod''': Einfaches Tool zum Entfernen von Modulen |
| − | |Zeigt geladene Module an
| + | * '''insmod''': Einfaches Tool zum Installieren von Modulen |
| − | |-
| + | * '''depmod''': Erstellt Dateien zur Auflösung von Modulabhängigkeiten |
| − | |modprobe
| + | * '''modinfo''': Informationen über Module |
| − | |universales und mächtiges Werkzeug zum Entladen und Laden von Modulen
| |
| − | |-
| |
| − | |rmmod
| |
| − | |Einfaches Tool zum entfernen von Module
| |
| − | |-
| |
| − | |insmod
| |
| − | |Einfaches Tool zum installieren von Module
| |
| − | |-
| |
| − | |depmod
| |
| − | |Erstellt Dateien zur Auflösung von Modulabhängigkeit
| |
| − | |-
| |
| − | |modinfo
| |
| − | |Informationen über Modules
| |
| − | |}
| |
| | | | |
| − | == Ort wo die Module des laufenden Kernels liegen == | + | == Ort, wo die Module des laufenden Kernels liegen == |
| − | root@zero:~# cd /lib/modules/$(uname -r)
| + | Die Module des aktuellen Kernels befinden sich im Verzeichnis /lib/modules/$(uname -r). |
| | | | |
| | == Geladene Module anzeigen == | | == Geladene Module anzeigen == |
| − | root@zero:~# lsmod
| + | Mit dem Befehl '''lsmod''' kann man die aktuell geladenen Module anzeigen lassen. |
| − | Module Size Used by
| |
| − | binfmt_misc 16776 1
| |
| − | bridge 56340 0
| |
| − | stp 10500 1 bridge
| |
| − | bnep 20224 2
| |
| − | nfs 266344 1
| |
| − | lockd 74156 1 nfs
| |
| − | nfs_acl 11136 1 nfs
| |
| − | input_polldev 11912 0
| |
| − | video 25360 0
| |
| − | output 11008 1 video
| |
| − | sunrpc 195424 10 nfs,lockd,nfs_acl
| |
| − | lp 17156 0
| |
| − | psmouse 61972 0
| |
| − | ppdev 15620 0
| |
| − | intel_agp 34108 1
| |
| − | pcspkr 10496 0
| |
| − | i2c_piix4 18448 0
| |
| − | serio_raw 13316 0
| |
| − | parport_pc 40100 1
| |
| − | agpgart 42696 1 intel_agp
| |
| − | parport 42220 3 lp,ppdev,parport_pc
| |
| − | shpchp 40212 0
| |
| − | pcnet32 41092 0
| |
| − | mii 13312 1 pcnet32
| |
| − | mptspi 25864 2
| |
| − | mptscsih 43520 1 mptspi
| |
| − | mptbase 88420 2 mptspi,mptscsih
| |
| − | scsi_transport_spi 30080 1 mptspi
| |
| − | floppy 64324 0
| |
| − | fbcon 46112 0
| |
| − | tileblit 10752 1 fbcon
| |
| − | font 16384 1 fbcon
| |
| − | bitblit 13824 1 fbcon
| |
| − | softcursor 9984 1 bitblit
| |
| | | | |
| | == Information anzeigen == | | == Information anzeigen == |
| − | root@zero:~# modinfo nfs
| + | Mit dem Befehl '''modinfo''' kann man Informationen zu einem bestimmten Modul anzeigen lassen. |
| − | filename: /lib/modules/2.6.28-13-generic/kernel/fs/nfs/nfs.ko
| |
| − | license: GPL
| |
| − | author: Olaf Kirch <okir@monad.swb.de>
| |
| − | srcversion: CB761B4E8A05FF8B3FD74F8
| |
| − | depends: sunrpc,lockd,nfs_acl
| |
| − | vermagic: 2.6.28-13-generic SMP mod_unload modversions 586
| |
| − | parm: enable_ino64:bool
| |
| − | | |
| − | oder
| |
| − | | |
| − | root@zero:~# modinfo -F filename nfs
| |
| − | /lib/modules/2.6.28-13-generic/kernel/fs/nfs/nfs.ko
| |
| − | | |
| − | um Werte aus einzelnen Kategorien anzuzeigen.
| |
| − | | |
| − | | |
| − | ==Übersicht über alle Module==
| |
| − | root@zero:~# find /lib/modules/$(uname -r) -name *.ko
| |
| − | | |
| − | ==Module laden/entladen==
| |
| − | ===modprobe===
| |
| − | Mit modprobe können Module zur Laufzeit des Systems ge- und entladen werden. modprobe löst dabei automatisch Abhängigkeiten | |
| − | auf, d.h. wenn das zu ladende Modul andere Module voraussetzt, werden diese automatisch in der richtigen Reihenfolge
| |
| − | mitgeladen bzw. werden Module automatisch mit entfernt, welche nur aus Abhänigkeitsgründen geladen wurden.
| |
| − | | |
| − | modprobe [Optionen] Modulname(n)
| |
| − | | |
| − | ===Optionen===
| |
| − | * -v : ausführliche Ausgabe
| |
| − | root@zero:~# modprobe -v vfat
| |
| − | insmod /lib/modules/2.6.27-7-generic/kernel/fs/fat/fat.ko
| |
| − | insmod /lib/modules/2.6.27-7-generic/kernel/fs/vfat/vfat.ko
| |
| − | | |
| − | * -n : simuliert das Laden des Moduls, lädt es aber nicht
| |
| − | root@zero:~# modprobe -v -n wlan
| |
| − | insmod /lib/modules/2.6.28-13-generic/volatile/wlan.ko
| |
| − | | |
| − | * -a : Es werden alle in der Kommandozeile angegebenen Module geladen. Diese Option muss immer dann verwendet werden, wenn mehrere Module auf einmal geladen werden sollen.
| |
| − | * --show-depends : zeigt Abhängigkeiten an
| |
| − | root@zero:~# modprobe --show-depends lp
| |
| − | insmod /lib/modules/2.6.28-13-generic/kernel/drivers/parport/parport.ko
| |
| − | insmod /lib/modules/2.6.28-13-generic/kernel/drivers/char/lp.ko
| |
| − | | |
| − | * -r : entlädt Module
| |
| − | root@zero:~# modprobe -r lp
| |
| − | | |
| − | ===Dateien===
| |
| − | modprobe durchsucht '''/lib/modules/$(uname -r)''' nach den Modulen. uname -r gibt die Versionsnummer des installierten Kernel
| |
| − | aus.
| |
| − | | |
| − | root@zero:~# modprobe -v btusb
| |
| − | insmod /lib/modules/2.6.28-13-generic/kernel/drivers/bluetooth/btusb.ko
| |
| − | | |
| − | ==Abhängigkeiten von Modulen==
| |
| − | Manche Module können erst genutzt bzw. geladen werden, wenn andere Module geladen sind, da sie von diesen abhängen. Diese
| |
| − | Abhängigkeiten sind in der Datei '''/lib/module/<Kernelversion>/modules.dep''' hinterlegt. Diese Datei mit korrekt angelegten
| |
| − | Abhängigkeiten wird bei der Installation von Ubuntu hinterlegt, so dass keine Änderungen vorgenommen werden müssen.
| |
| − | Installiert man zusätzliche eigene Module, so sollte die Datei modules.dep neu erstellt werden. Dies geschieht über den
| |
| − | Befehl depmod. | |
| − | | |
| − | depmod [Optionen]
| |
| − | | |
| − | ===Optionen===
| |
| − | * -A : Es wird zuerst geprüft, ob neue Module hinzugekommen sind. Wenn nicht wird keine neue modules.dep erstellt.
| |
| − | * -n : Das Erstellen der neuen modules.dep wird simuliert, ohne die Aktionen wirklich durchzuführen.
| |
| − | | |
| − | ==Module automatisch laden==
| |
| − | Möchte man ein Modul, welches der Kernel nicht automatisch mit lädt, beim Systemstart automatisch laden, so trägt man
| |
| − | den Modulnamen einfach in die Datei /etc/modules ein. Ab dem nächsten Systemstart werden alle Module (zusätzlich)
| |
| − | geladen, die dort eingetragen sind.
| |
| − | | |
| − | root@zero:~# cat /etc/modules
| |
| − | # /etc/modules: kernel modules to load at boot time.
| |
| − | #
| |
| − | # This file contains the names of kernel modules that should be loaded
| |
| − | # at boot time, one per line. Lines beginning with "#" are ignored.
| |
| − |
| |
| − | lp
| |
| − | wlan
| |
| − | | |
| − | ==Automatisches Laden verhindern - Blacklisting==
| |
| − | Unter bestimmten Umständen kann es sinnvoll sein, das Laden von bestimmten Modulen explizit zu verbieten. Dies geschieht
| |
| − | durch den Eintrag des entsprechenden Moduls in eine so genannte Blacklist-Datei. Diese Dateien befinden sich im Verzeichnis
| |
| − | /etc/modprobe.d. In der Regel sind hier schon einige Einträge zu finden. Die Datei legt man mit einem Editor mit Root-Rechten
| |
| − | an bzw. öffnet eine vorhandene Datei) und fügt einen Dateieintrag nach folgendem Schema hinzu, je ein Eintrag pro Zeile:
| |
| − |
| |
| − | root@zero:/etc/modprobe.d# cat blacklist.conf
| |
| − | # This file lists those modules which we don't want to be loaded by
| |
| − | # alias expansion, usually so some other driver will be loaded for the
| |
| − | # device instead.
| |
| − |
| |
| − | # evbug is a debug tool that should be loaded explicitly
| |
| − | blacklist evbug
| |
| − |
| |
| − | # these drivers are very simple, the HID drivers are usually preferred
| |
| − | blacklist usbmouse
| |
| − | blacklist usbkbd
| |
| − | ...
| |
| − | | |
| − | Man kann auch neue Dateien anlegen. Diese müssen lediglich mit '''blacklist-''' beginnen.
| |
| − | root@zero:/etc/modprobe.d# cat > '''blacklist-'''wlan.conf
| |
| − | blacklist wlan
| |
| − | (Strg+C)
| |
| − | | |
| − | ==Aliases==
| |
| − | Mit der Direktive alias kann man Module einem Gerät zuordnen
| |
| − | root@zero:~$ cat /etc/modprobe.d/aliases
| |
| − | ...
| |
| − | # character devices ##########################################################
| |
| − | alias char-major-9-* st
| |
| − | alias char-major-10-1 psmouse
| |
| − | ....
| |
| − | # block devices ##############################################################
| |
| − | alias block-major-3-* ide_generic
| |
| − | alias block-major-8-* sd_mod
| |
| − | ....
| |
| | | | |
| − | =Option= | + | == Übersicht über alle Module == |
| − | Mit der Direktive options kann man Module mit gewissen Optionen laden | + | Mit dem Befehl '''find /lib/modules/$(uname -r) -name *.ko''' erhält man eine Übersicht über alle verfügbaren Module. |
| − | root@zero:~$ cat /etc/modprobe.d/options
| |
| − | # Enable double-buffering so gstreamer et. al. work
| |
| − | options quickcam compatible=2
| |
| | | | |
| − | # Default hostap to managed mode
| + | == Module laden/entladen == |
| − | options hostap_pci iw_mode=2
| + | Mit dem Befehl '''modprobe''' können Module zur Laufzeit geladen oder entladen werden. Modprobe löst dabei automatisch Abhängigkeiten auf. |
| − | options hostap_cs iw_mode=2
| |
| − | ...
| |
| − | =Skripte= | |
| − | Des weiteren ist es möglich, Anweisungen anzugeben, die statt dem normalen Laden eines Moduls ausgeführt werden.
| |
| − |
| |
| − | *install modul befehl
| |
| − | *remove modul befehl
| |
| | | | |
| − | Auf diese Weise ist es zum Beispiel möglich, Anweisungen vor und / oder nach dem Laden / Entladen eines Modules auszuführen.
| + | == Abhängigkeiten von Modulen == |
| | + | Manche Module können erst genutzt bzw. geladen werden, wenn andere Module geladen sind, da sie von diesen abhängen. Diese Abhängigkeiten sind in der Datei /lib/module/<Kernelversion>/modules.dep hinterlegt. |
| | | | |
| − | In diesem Fall muss die Anweisung zum Laden bzw. Entladen des Moduls mit der Option --ignore-install bzw. --ignore-remove mit angegeben werden.
| + | == Module automatisch laden == |
| | + | Möchte man ein Modul, welches der Kernel nicht automatisch mit lädt, beim Systemstart automatisch laden, so trägt man den Modulnamen einfach in die Datei /etc/modules ein. |
| | | | |
| − | install modul /sbin/modprobe --ignore-install modul && befehl
| + | == Automatisches Laden verhindern - Blacklisting |
| − | remove modul /sbin/modprobe -r --ignore-remove modul && befehl
| |
Kernelmodule
Der Linux-Kernel besitzt grundsätzlich einen monolithischen Aufbau, bietet jedoch auch die Möglichkeit, Module zur Laufzeit zu laden und zu entladen. Ein Kernelmodul ist im Allgemeinen ein Teil oder eine Erweiterung des Kernels. Beispielsweise sind alle Hardwaretreiber (wie WLAN-Karte, Soundkarte usw.) als Modul angelegt. Die meisten Linux-Distributionen, einschließlich Ubuntu, machen starken Gebrauch von Kernelmodulen, um die bestmögliche Hardwarekompatibilität mit nur einem "allgemeinen" Kernel zu erreichen. In der Regel werden alle notwendigen Module beim Systemstart und falls nötig zur Laufzeit geladen, sodass der Nutzer sich nicht weiter darum kümmern muss.
Inhaltsverzeichnis
- Installation
- Tools
- Ort, wo die Module des laufenden Kernels liegen
- Geladene Module anzeigen
- Information anzeigen
- Übersicht über alle Module
- Module laden/entladen
- modprobe
- Optionen
- Dateien
- Abhängigkeiten von Modulen
- Module automatisch laden
- Automatisches Laden verhindern - Blacklisting
- Aliases
- Option
- Skripte
Installation
Die Programme zum Umgang mit den Modulen sollten in der Standardinstallation enthalten sein, können aber ansonsten über das Paket module-init-tools installiert werden.
Tools
Verschiedene Kommandos bieten unterschiedliche Funktionalitäten:
- lsmod: Zeigt geladene Module an
- modprobe: Universelles und mächtiges Werkzeug zum Entladen und Laden von Modulen
- rmmod: Einfaches Tool zum Entfernen von Modulen
- insmod: Einfaches Tool zum Installieren von Modulen
- depmod: Erstellt Dateien zur Auflösung von Modulabhängigkeiten
- modinfo: Informationen über Module
Ort, wo die Module des laufenden Kernels liegen
Die Module des aktuellen Kernels befinden sich im Verzeichnis /lib/modules/$(uname -r).
Geladene Module anzeigen
Mit dem Befehl lsmod kann man die aktuell geladenen Module anzeigen lassen.
Information anzeigen
Mit dem Befehl modinfo kann man Informationen zu einem bestimmten Modul anzeigen lassen.
Übersicht über alle Module
Mit dem Befehl find /lib/modules/$(uname -r) -name *.ko erhält man eine Übersicht über alle verfügbaren Module.
Module laden/entladen
Mit dem Befehl modprobe können Module zur Laufzeit geladen oder entladen werden. Modprobe löst dabei automatisch Abhängigkeiten auf.
Abhängigkeiten von Modulen
Manche Module können erst genutzt bzw. geladen werden, wenn andere Module geladen sind, da sie von diesen abhängen. Diese Abhängigkeiten sind in der Datei /lib/module/<Kernelversion>/modules.dep hinterlegt.
Module automatisch laden
Möchte man ein Modul, welches der Kernel nicht automatisch mit lädt, beim Systemstart automatisch laden, so trägt man den Modulnamen einfach in die Datei /etc/modules ein.
== Automatisches Laden verhindern - Blacklisting