[HOWTO] Installieren eines zusätzlichen Kernelmodules

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Gesperrt
Benutzeravatar
Martin Breidenbach
Ultimate Guru
Ultimate Guru
Beiträge: 5632
Registriert: 26. Mai 2004, 21:33
Wohnort: N 50.17599° E 8.73367°

[HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von Martin Breidenbach » 23. Sep 2005, 17:27

Installieren eines zusätzlichen Kernelmodules unter SuSE Linux mit Kernel 2.6.x

Zusätzliche Kernelmodule sind z.B. zusätzliche Netzwerkkartentreiber, Grafiktreiber von nvidia und ATI oder die VMware Kernelmodule die nicht Bestandteil des Standardkernels sind. Ab SuSE 10.1 zählen da auch die Treiber für AVM Karten dazu. Kernelmodule müssen immer zum laufenden Kernel kompiliert werden. Und bevor man diese kompilieren kann müssen einige Vorbereitungen getroffen werden.

Kernelquellen und Entwicklertools installieren
Kernelquellen installieren (Paket kernel-source).
- Am einfachsten yast2 starten,
- Software - Software installieren oder löschen,
- im Feld 'Suche' kernel eingeben und dann auch 'Suche' klicken.
- Im rechten Fenster einen Haken vor 'kernel-source' machen.

gcc, make und sonstige Entwicklertools installieren.
- Am einfachsten yast2 starten,
- Software - Software installieren oder löschen,
- unter Filter 'Selektionen' auswählen,
- Haken vor 'C/C++ Compiler und Werkzeuge' machen,
- Übernehmen

Sicherstellen daß Kernelversionen zueinander passen
Die Version der Kernelquellen und des laufenden Kernels muß übereinstimmen.

Überprüfen kann man die Übereinstimmung der laufenden und installierten Kernelversionen mit:
(in einem Konsolenfenster eingeben)

Code: Alles auswählen

uname -r
ergibt z.B: 2.6.8-24.18-default

Code: Alles auswählen

rpm -q kernel-source
ergibt z.B: kernel-source-2.6.8-24.18

Code: Alles auswählen

rpm -q kernel-default
ergibt z.B: kernel-default-2.6.8-24.18

Auf Systemen mit Multiprozessor oder Hyperthreading ist statt kernel-default üblicherweise kernel-smp installiert.

Alternativ kann man auch

Code: Alles auswählen

rpm -qa | grep kernel
eingeben. Das listet alle installierten RPMs auf und zeigt davon die an bei denen im Namen 'kernel' vorkommt.

ergibt z.B:
kernel-xen-nongpl-2.6.11.4-21.9
kernel-smp-nongpl-2.6.11.4-21.9
kernel-source-2.6.11.4-21.9
kernel-xen-2.6.11.4-21.9
kernel-smp-2.6.11.4-21.9

Falls man nur mit SuSE Kerneln arbeitet kann man YOU (Yast Online Update) laufen lassen damit die Kernelquellen zum laufenden Kernel passen (der ja vermutlich schon einmal von YOU aktualisiert wurde).

Vorbereitende Arbeiten für die Modulkompilierung
/usr/src/linux ist ein Link auf das Verzeichnis der Kernelquellen.
(in einem Konsolenfenster eingeben)

Code: Alles auswählen

cd /usr/src/linux
make mrproper
make cloneconfig
make prepare-all 
Die letzten drei Schritte erzeugen eine Datei mit der Kernelkonfiguration und erstellen dann noch ein paar Dateien die möglicherweise bei der Kompilierung des zusätzlichen Kernelmodules benötigt werden.

'make mrproper' löscht alle ggf von einer früheren Kernelbausitzung erstellten temporären Dateien (auch die von der Kernelkonfiguration)
'make cloneconfig' übernimmt die Kernelkonfiguration aus /proc/config.gz nach /usr/src/linux. Entspricht 'zcat /proc/config.gz > .config'
'make prepare-all' äh nunja bereitet alles vor :D

Zusätzliches Kernelmodul entsprechend der dem Modul beiliegenden Anleitung installieren

Hinweis: Wenn man nach der Installation eines zusätzlichen Kernelmodules durch manuelles Selbstkompilieren einen Kernelupdate z.B. durch YOU durchführt dann wird das selbstkompilierte Modul i.A. NICHT aktualisiert. Beim nächsten Reboot (den man nach Kernelupdate durchführen sollte) wird es dann nicht geladen. Das bedeutet daß man es dann nochmal installieren darf.
Zuletzt geändert von Martin Breidenbach am 12. Aug 2006, 10:31, insgesamt 1-mal geändert.
Nicht Böse sein ! Der Onkel macht doch nur Spaß !

Werbung:
Benutzeravatar
mikrosaft
Member
Member
Beiträge: 62
Registriert: 6. Jun 2004, 17:35

Beitrag von mikrosaft » 29. Jul 2006, 17:46

Wenn man ein Modul kompilieren will, dass nicht in einem Extrapaket vorliegt, sonder dem Kernel selbst beiliegt, gibt es leider keine Installationanleitung.
Ein solcher Fall wäre z.B. das "Tunen" des Speedstep-Moduls für die mobilen Intel-CPUs.

In einem solchen Fall geht man dann wie folgt vor:

Code: Alles auswählen

#! /bin/sh

# Nachträgliches kompilieren eines gepatchten Centrino-Moduls:
KERNEL=`uname -r | sed s/-default//`
VERSION=`uname -r`
KDIR="/usr/src/linux-${KERNEL}"
cd $KDIR
mkdir ./.tmp_versions
make arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko
mv /lib/modules/${VERSION}/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko \ /lib/modules/${VERSION}/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko.org
cp arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko /lib/modules/${VERSION}/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko
depmod
Gruss
ms

Tueftel
Newbie
Newbie
Beiträge: 18
Registriert: 4. Feb 2007, 14:48
Wohnort: Rhein-Neckar-Dreieck

Yast2

Beitrag von Tueftel » 18. Mär 2007, 13:45

Hallo Martin,

was meinst Du mit Yast2 ? Hat ein System mehrere Yaste, die verschieden funktionieren ?

Gruß Tueftel

Grothesk
Ultimate Guru
Ultimate Guru
Beiträge: 14662
Registriert: 26. Okt 2003, 11:52
Wohnort: Köln

Beitrag von Grothesk » 18. Mär 2007, 13:49

Nein, das Programm heißt halt so.
yast war der Vorgänger. Es gibt aber noch eine Umleitung auf yast2, wenn du in der Konsole yast eingibst. Aber im System ist nur yast2 vorhanden.
"Die Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen. Allerdings ist sie nicht OpenSource, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."

Benutzeravatar
ayCaramba
Newbie
Newbie
Beiträge: 30
Registriert: 26. Apr 2007, 09:15
Wohnort: Hannover
Kontaktdaten:

Beitrag von ayCaramba » 18. Mai 2007, 11:11

In der Konsole/Bash gibst du yast für die textbasierte Version von YaST ein. Wenn du dich in einer grafischen Oberfläche befindest, kannst du auch die GTK/QT - Applikation von SuSE mit yast2 starten. Sieht schöner aus, kann allerdings genauso wie viel wie 'yast'...
-= linux is user-friendly, but not idiot-compatible =-

jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Re: [HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von jengelh » 2. Okt 2007, 18:48

Martin Breidenbach hat geschrieben:Und bevor man diese kompilieren kann müssen einige Vorbereitungen getroffen werden.

Falls man nur mit SuSE Kerneln arbeitet kann man YOU (Yast Online Update) laufen lassen damit die Kernelquellen zum laufenden Kernel passen (der ja vermutlich schon einmal von YOU aktualisiert wurde).

Vorbereitende Arbeiten für die Modulkompilierung
/usr/src/linux ist ein Link auf das Verzeichnis der Kernelquellen.
(in einem Konsolenfenster eingeben)

Code: Alles auswählen

cd /usr/src/linux
make mrproper
make cloneconfig
make prepare-all 
cloneconfig usw. trifft nicht für Kernel-RPMs zu, da die schon vorkonfiguriert sind.

Fisnix
Newbie
Newbie
Beiträge: 8
Registriert: 14. Aug 2005, 12:52

Beitrag von Fisnix » 22. Nov 2007, 10:24

Hallo,

ich wollte das Modul forcedeth.ko neu komplilieren, weil dieser Netzwerkartentreiber die MAC Adresse meiner nvidia onboard-nic immer verkehrt herum ermittelt. Das sollte zwar in der forcedeth Version 0.60 behoben sein, aber offenbar sind die Hersteller wieder dazu übergegangen, die MAC-Adresse jetzt wieder in der richtigen Reihenfolge in der Karte abzulegen, so dass forcedeth, eine eine falsche Reihenfolge erwartend, die (richtige) MAC-Adresse umdreht und damit wieder eine ungültige MAC-Adresse vorfindet. Der Treiber erkennt, dass nunmehr eine ungültige MAC vorliegt und erzeugt daraufhin eine zufällige, aber gültige MAC. Das führt dazu, dass bei jedem Booten udev ein neues Gerät erkennt und neue Schnittstellen anlegt werden (eth0, eth1, eth2...)

Dort im Quellcode, wo die zufällige MAC erzeugt wird, habe ich jetzt einfach die richtige MAC meiner Netzwerkkarte hart codiert. Nicht elegant, aber da ich so gut wie keine Ahnung von C habe, eine passable Lösung für mich. Dann habe ich nach der Anleitung von mikrosaft den Treiber neu kompiliert. Hat auch alles wunschgemäß funktioniert und der Treiber tut jetzt was er soll.

Aber: der Treiber ist jetzt ungefähr 7 mal so groß geworden, wie das Originalmodul (488000 statt 72000). Meine Vermutung: nach dem Aufruf von make erhielt ich zunächst eine Fehlermeldung, dass kein Target verfügbar sei und ich solle doch mit make oldconfig oder ähnlichen Kommandos ein solches erzeugen. Das habe ich einfach einmal gemacht und es wurde die Datei .config erzeugt und danach konnte das Modul forcedeth.ko auch klaglos kompiliert werden. Kann es sein, dass dadurch jetzt irgendwelche anderen Kernelteile mit einkompiliert wurden, was dann die Größe des Moduls so aufgebläht hat?
An Erfahrungsberichten aus der Zusammenarbeit mit Hans-Georg Niederhausen und der FIS Fulda Immobilienservice GmbH interessiert? Einfach E-Mail senden oder zu http://www.derdichter.de gehen

michalla
Newbie
Newbie
Beiträge: 3
Registriert: 3. Nov 2008, 18:42

Re: [HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von michalla » 3. Nov 2008, 19:22

Hallo,

ich bin durch Zufall auf diesen Thread gestoßen...
... und trauriger Besitzer eines Aldi-USB-Empfängers MD95700. Mein Rechner läuft unter OpenSuSE11.0 (Kernel 2.6.25.18-0.2-pae) und KDE 3.5.10 Rel. 27.4.

Der DVB-Empfänger lief auf meinem alten SuSE10.2 einwandfrei, nur hier bei OpenSuSE11.0 tut er's nicht, weil das Modul dvb-usb-cxusb fehlt. Der Versuch, dieses Modul nach obiger Anleitung nachzukompilieren scheiterte, weil unter menu-config in Drivers/... nichts angeboten wird, was ich für dieses Modul auswählen könnte. So, und nu sitz ich da...

Unter Knoppix von der DVD läuft der Receiver einwandfrei, schade, daß bei OpenSuSE nicht auch die Treiber für die in unserem Land doch recht weit verbreitete Box (Aldi hat davon mehr als 60.000 Stück verkauft) enthalten sind.

Kann mir jemand weiterhelfen? Es ist echt lästig, für eine TV-Sendung jedesmal OpenSuSe runter- und dann Knoppix hochfahren zu müssen.

Tschüß
der Michael

michalla
Newbie
Newbie
Beiträge: 3
Registriert: 3. Nov 2008, 18:42

Re: [HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von michalla » 4. Nov 2008, 19:03

Hallo alle z'samm,

hier bin ich nochmal mit meinem Problem mit der MD95700. Nach vielem Lesen und Suchen bin ich letztendlich eigentlich kein bißchen schlauer.

Nur eines ist mir aufgefallen:

Um dieses Modul nachzukompilieren, müssen ja auch die Sourcen dafür vorhanden sein. Da ich sie unter menuconfig nirgends gefunden habe, habe ich in den Sourcen direkt gesucht. Wenn ich nicht total daneben liege, müßte die entsprechende Datei ja irgendwie

dvb_usb_cxusb.h

oder auch

dvb_usb_cxusb.c

heißen. Ist diese Annahme richtig? Eine derartige Datei ist aber bei den Sourcen nicht enthalten. Bedeutet dies, daß dann die Box nichtmehr unterstützt wird? Wo kann ich nachlesen, ob der Treiber noch enthalten ist oder wo der Treiber aufzutreiben ist?

Ich bitte um Hilfe!

Danke
Tschüß
der Michael

michalla
Newbie
Newbie
Beiträge: 3
Registriert: 3. Nov 2008, 18:42

Re: [HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von michalla » 4. Nov 2008, 22:21

Hallo,

mein Problem hat sich erledigt, in einem anderen Forum war man fixer oder hilfsbereiter oder was auch immer...!

Danke
Tschüß
der Michael

Benutzeravatar
Gimpel
Guru
Guru
Beiträge: 1983
Registriert: 11. Feb 2004, 13:58
Wohnort: Mjunik .... "no a hoibe, resi!"
Kontaktdaten:

Re: [HOWTO] Installieren eines zusätzlichen Kernelmodules

Beitrag von Gimpel » 11. Jan 2009, 02:30

[Howto] threads sind nicht dazu gedacht um Fragen zu stellen, mach dazu ein extra topic auf bitte.

Ich mach das mal dicht. Das gehört eh in das Wiki.
Bild on AMD Athlon64 X2 5600+|64bit|6GB DDR2 800MHz|nVidia GF 8500GT|2.6.29-rc1-moo1|BTRFS|KDE-4.2 SVN trunk + Compiz++|M-Audio Audiophile 2496
----
Bild

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste