kernel modul im laufenden betrieb compilieren und austausche

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
flat-jack
Posts: 36
Joined: 2002-10-22 23:18
 

kernel modul im laufenden betrieb compilieren und austausche

Post by flat-jack »

Hallo Zusammen,

nach einem Firmware-Update läuft unser neuer LSI SAS MegaRAID Controller nicht mehr richtig. Ich stehe also nun vor der schweren Aufgabe das Kernel-Modul neu zu compilieren. (laut Hersteller die einzige Lösung, da das Modul im Kernel zu alt sei!) Mit Linux arbeite ich seit längerem, Kernel habe ich schon mal kompiliert, aber noch nie ein einzelnes Modul im laufenden Betrieb!

Wie gehe ich da am besten vor?
Vom Hersteller habe ich nur "Makefile", "megaraid_sas.c" und "megaraid_sas.h" sowie ein paar ".patch" files für redhat und SLES. Wir nutzen auf dem System aber Suse 10.2 64 Bit, so das ich vermutlich mit diesen nichts anfangen kann....

Das System ist zur Zeit kaum lauffähig (2GB Fehlermeldungen pro stunde in /var/log/warn)! Trotzdem würde ich es mir ungern komplett zerschiessen. Daher google ich seid stunden nach einer guten Anleitung...
Hat jemand einen Link für mich, oder ein paar hilfreiche Tips?
Brauche ich so ein .patch file? oder kann ich es selbst erstellen? Das how-To vom Hersteller (LSI) fordert explizit das richtige .patch-file zu nutzen. - An die compile optionen müsste man doch auch so kommen, oder?

Kernel-Sourcen liegen schon bereit - wir nutzen Version 2.6.18.8-0.9-default compiliert mit gcc vers. 4.1.2

Bin für jede Hilfe bzw. Tip dankbar! :-)
Gruß
der Flat-Jack
User avatar
Joe User
Project Manager
Project Manager
Posts: 11190
Joined: 2003-02-27 01:00
Location: Hamburg
 

Re: kernel modul im laufenden betrieb compilieren und austausche

Post by Joe User »

SLES-Patch anwenden und den Anweisungen des Herstellers folgen.
Das alte Modul kannst Du dann mittels rmmod entfernen und das neue Modul mit insmod laden.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
flat-jack
Posts: 36
Joined: 2002-10-22 23:18
 

Re: kernel modul im laufenden betrieb compilieren und austausche

Post by flat-jack »

wow - Danke für die schnelle Antwort. Nach einigem hin und her (es fehlten noch ein paar .config files) komme ich jetzt aber nicht mehr weiter:

wie vom Hersteller gefordert versuche ich (nach anwenden des SLES10-Patches, der keine Fehlermeldung brachte!):
$> make -C /usr/src/linux SUBDIRS=$PWD modules
die ausgabe ist aber:

Code: Select all

85:/usr/src/linux/drivers/scsi/megaraid # make -C /usr/src/linux SUBDIRS=$PWD modules
make: Entering directory `/usr/src/linux-2.6.18.8-0.9'
  CC [M]  /usr/src/linux/drivers/scsi/megaraid/megaraid_sas.o
  Building modules, stage 2.
  MODPOST
/bin/sh: scripts/mod/modpost: No such file or directory
make[1]: *** [__modpost] Error 127
make: *** [modules] Error 2
make: Leaving directory `/usr/src/linux-2.6.18.8-0.9'
daher versuchte ich:

Code: Select all

85:/usr/src/linux # make scripts/mod/modpost
gcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration -fno-strict-aliasing -fno-common -Os  -mtune=generic -m64 -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -Wno-sign-compare -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fomit-frame-pointer -fasynchronous-unwind-tables  -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -D__KERNEL__ -Iinclude  -include include/linux/autoconf.h  -m elf_x86_64  scripts/mod/modpost.c   -o scripts/mod/modpost
cc1: error: unrecognized command line option "-m"
make: *** [scripts/mod/modpost] Error 1
Warum gefällt ihm hier die -m option nicht?

Nun weiss ich nicht mehr weiter... ;-)

Hast Du vielleicht nochmal einen Tip?
Danke schon mal vorab
der Flat-Jack
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: kernel modul im laufenden betrieb compilieren und austausche

Post by oxygen »

Versuch mal vorher in /usr/src/linux:
make prepare
bzw.
make bzlilo

im übrigen kannst du das module nicht unloaden, solange es in Benutzung ist. Also auch nicht das neue laden. Es bleibt also nur:
Neues Modul bauen
neue initrd bauen
hoffen
rebooten
flat-jack
Posts: 36
Joined: 2002-10-22 23:18
 

Re: kernel modul im laufenden betrieb compilieren und austausche

Post by flat-jack »

"make scripts" in /usr/src/linux hatte gefehlt - danach liefs fehlerfrei durch!

Nach kopieren des moduls und neuem initrd sowie reboot schnurrt unser server wieder wie ein kätzchen... 300MB/sec beim plattenzugriff reicht... ;-)
Auch wenn mir der bootvorgang so lang vor kam, wie noch nie! :wink:

Vielen Dank für die tolle Hilfe!
Gruß
Flat-Jack