Product SiteDocumentation Site

8.10.5. Externe Module kompilieren

Einige Module werden außerhalb des offiziellen Linux-Kernels gehalten. Um sie verwenden zu können, müssen sie neben dem passenden Kernel kompiliert werden. Eine Anzahl gebräuchlicher Fremdmodule wird von Debian in speziellen Paketen bereitgestellt: lustre-source für das Lustre-Dateisystem, qc-usb-source für die Treiber einiger USB-Webcams (Logitech QuickCam Express) usw.
Diese externen Pakete sind zahlreich und vielfältig, und wir werden sie hier nicht alle aufführen; der Befehl apt-cache search source$ kann den Suchbereich eingrenzen. Jedoch ist eine vollständige Liste nicht sehr nützlich, da es keinen besonderen Grund gibt, externe Module zu kompilieren, außer wenn Sie wissen, dass Sie sie benötigen. In diesen Fällen führt die Dokumentation des Geräts normalerweise die einzelnen Module auf, die es benötigt, um unter Linux zu funktionieren.
Lassen Sie uns zum Beispiel einen Blick auf das Paket qc-usb-source werfen: nach der Installierung ist ein .tar.gz mit den Quellen des Moduls im Verzeichnis /usr/src/ gespeichert. Diese Quellen müssen dann in das Arbeitsverzeichnis entpackt werden.
$ cd ~/kernel/
$ tar xjf /usr/src/qc-usb.tar.bz2
$ ls modules/
qc-usb
Die Modulquellen befinden sich nun im Verzeichnis ~/kernel/modules/qc-usb/. Um diese Module zu kompilieren und ein Debian-Paket zu erstellen, rufen wir den Befehl make-kpkg mit dem Ziel modules-image auf und geben den Ort der Module mittels der Umgebungsvariablen MODULE_LOC an (ohne diese Variable verwendet der Befehl /usr/src/modules/, was in unserem Fall nicht funktionieren würde). Standardmäßig versucht er, die Pakete für alle externen Module zu erstellen, die an dieser Stelle in entpackter Form zu finden sind. Mit der Option --added-modules ist es möglich, die externen Module, die kompiliert werden sollen, explizit auszuwählen. Um mehr als eines auszuwählen, werden sie mit einem Komma getrennt.
$ export MODULE_LOC=~/kernel/modules
$ cd ~/kernel/linux-source-2.6.32
$ fakeroot make-kpkg --append-to-version -falcot modules-image
[...]
Module /home/roland/kernel/modules/qc-usb processed fine
$ ls ../*.deb
../linux-image-2.6.32-falcot_1_i386.deb
../qc-usb-modules-2.6.32-falcot_0.6.6-7+1_i386.deb