• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ext.Modul für anderen als den laufenden Kernel compilieren

resolver

Newbie
Hallo,
habe hier ein Problem, was ich mittels des T.Hertwecks HowTos nicht lösen konnte:

Erstmal meine Konfig.: Pentium3-1100, 1GB RAM
- SuSE 9.0 2.4.21-99-default (Ur-Distri von 5 CDs)
- Promise RAID (per SW-Treiber) FastTrak 100 TX4 (20270), Treiber ist nur für 2.4.21-99 gültig.
- Alle 4 Festplatten auf RAID0, gebootet wird mit Ramdisk und Grub vom RAID, also ohne den Promise-Treiber in der initial Ramdisk kein Festplattenzugriff.


Ich möchte den Kernel updaten (build), dazu habe ich die zwei rpm's vom SuSE-FTP-Server geholt:
...-2.4.21-243-default und die passenden kernel-sources dazu.

Die Kernel-sources parallel zu meinen alten -99-sources installiert (eher upgedatet mit rpm -Uhv ..., da bei Install/--test ein Konflikt mit den alten Sourcen ausgegeben wurde).
SymLink /usr/src/linux zeigt auch auf die neuen Kernel-Sourcen, nicht auf die alten. ok.

Nun wollte ich die Promise-FastTrak-Treiber-Sourcen (in /usr/local/scr) gegen die neuen -243-Kernel-Sourcen compilieren, umso ein Promise-Modul für -243 zu erhalten (FastTrak.o).
-> Es läuft immer noch der alte Kernel (build-99).

Also:
make cloneconfig in /usr/src/linux (-> 2.4.21-243)
-> ich wurde 3 neuere Fragen gefragt, ok.

make dep
-> rasselte durch gegen die -243-Sourcen, wohl alles ok.

Dann in das Source-Verzeichnis der Promise-Treiber gewechselt.
/usr/local/src/promise
Dort das makefile auf SUSE angepasst, wird so im README verlangt, ok.
Dann dort "make all" eingegeben, läuft auch durch, NUR bekomme ich ein Modul passend zu dem laufenden alten -99-kernel erstellt!
(Kernel-panic beim Booten mit lfd. 243-Kernel, plus
entsprechende eindeutige Fehlermeldung zu dem Versionsproblem)

Frage:
Was mache ich noch falsch? Wie kann ich dem Promise-Makefile/Make-Befehl klarmachen, das ich ein passendes Modul zu den neuen -243-Sourcen haben möchte und nicht zu dem laufenden -99-Kernel?

(Natürlich wäre es wohl easy, wenn ich unter dem neuen 243-kernel schon arbeiten würde, nur ohne passenden FastTrak-Treiber keine Festplatten.)

In dem Makefile steht so ein Parameter im String: -D__KERNEL__
hat das damit zu tun?


Das muss doch irgendwie gehen, das man ein Modul VOR dem Einsatz des neuen Kernels compiliert, oder?

Gruß
 
OP
R

resolver

Newbie
Hallo,
nun ist hier die Lösung zu dem
Problem:
Der Promise-RAID-Treiber von der Promise-Website läuft nur auf SuSE 9.0 mit Kernel 2.4.21-99-default. (FastTrak100 TX2/TX4, nicht SATA).

Setzt man einen anderen Kernel ein, auch nur ein höheres build durch YOU-Update, also z.B. 2.4.21-243, dann läuft der Treiber nicht, kein Zugriff auf das RAID-Array!

Für Linux-Erst-Installation:
Um also einen Fasttrak-RAID-Controller unter SuSE 9.0 betreiben zu können, muss man die alte Version von den 5 Installations-CDs (oder DVDs) installieren, das ergibt kernel 2.4.21-99-default. Die Boot-Iso vom SuSE-FTP-Server hat eine höhere build-version -144, damit läuft es auf Anhieb nicht!
Vorgehen: Promise-Treiber-Diskette, F3 beim Setup, die erforderlichen Parameter siehe readme eingeben: ide0=0x1f0,0x ... usw. bis ide9=0
Und immer über die initial ramdisk booten, das wird ja so autom. eingerichtet.

Und los....
Um statt -99 einen höheren Kernel (insbesondere nur ein Kernel-Update!) einsetzen zu können, muss man das Fasttrak-Treiber-Modul selbst neu erstellen gegen die neuen Kernel-Sourcen:

0. Man besorgt sich die Promise-Sourcen und entpackt sie in ein separates Verzeichnis. Das enthaltene makefile anpassen (# vor SuSE wegnehmen etc., siehe readme).

1. Sichern der laufenden Installation:
Ordner: /boot (!) und /usr/src/linux/... (nur vorsichtshalber)

2. Die Sourcen zu dem neuen gewünschten Kernel installieren, also rpm vom FTP-Server downloaden und mit rpm -Uhv ... einspielen (=update!).
(man kann auch genau so gleich den neuen kernel per rpm ... einspielen, darf dann aber nicht booten, sonst geht nix mehr!)

3. In /usr/src/linux die beiden Symlinks kontrollieren:
/usr/src/linux und /usr/src/linux-include sollten beide auf die entsprechenden Ordner der neuen Sourcen zeigen.

4. Den .config -File, der zu den neuen Sourcen gehört in das /usr/src/linux Verzeichnis kopieren bzw. so benennen, Kontrolle durch Ansehen des Files, am Ende steht die genaue build-version. (hier -243)

5. in /usr/src/linux jetzt eingeben:
6. make distclean
7. make oldconfig (nicht make cloneconfig, da anderer lfd. kernel)
und: make dep clean
8. in das Verzeichnis mit den ausgepackten Promise-Sourcen wechseln, dort eingeben:
9. make clean all
Dann bekommt man das Modul FastTrak.o , dieses kann man nun mit dem Midnight Commander, F3-View ansehen, auf RAW (F8 ) umschalten und bei ca. 56% sieht man in Klarschrift die build-Version, zu der das geschaffene Modul passt. Sollte also zu den neuen Sourcen gehören, steht da die alte build-Version (2.4.21-99) läuft das Modul nicht mit den neuen Sourcen, Abbruch im Boot-Vorgang, Kernel-panic.

10. Das Modul FastTrak.o nun nach /lib/modules/2.4.21-243/kernel/drivers/scsi kopieren.
Wenn es das Verzeichnis nicht gibt (schon den neuen Kernel installiert? s.o.) , dann erstellen.

11. Jetzt im Ordner /boot einige Arbeiten verrichten:
- man will ja beide Kernel parallel installiert haben, dafür sollten die neuen und die alten Dateien (aus der Sicherung!) vorhanden sein, die Symlinks verweisen dann auf den neuen Kernel.
Bei GRUB in menu.lst macht man zwei Einträge, einer zeigt auf die Symlinks, der andere auf die alten -99-Files. Die Parameter ide0=0x1f0,0x...... bis ide9=0 bei beiden nicht vergessen.

12. Jetzt muss nur noch eine initial ramdisk erzeugt werden, die das neue FastTrak.o - Modul enthält:
Dafür habe ich getrickst:
In /lib/modules/2.4.21-99/kernel/drivers/scsi die alte FastTrak.o umbenannt in FastTrak99.o und die neue FastTrak.o, die wir vorhin geschaffen haben, hier herein kopiert. Ist nur temporär!
Dann in /usr/src/linux : mkinitrd eingeben und man bekommt ein neues Ramdisk-Image für den neuen Kernel im /boot - Ordner, das den FastTrak.o-Treiber sich aus /lib/modules/2.4.21-99/kernel/drivers/scsi geholt hat. Ausgetrickst!
13. Jetzt gleich in /lib/modules/2.4.21-99/kernel/drivers/scsi die Umbenennung rückgängig machen, sonst läuft es mit dem -99-Kernel irgendwann nicht mehr.

14. fertig, ein Booten des neuen Kernels (-243) sollte jetzt klappen.
Der alte Kernel bringt beim Booten ein paar Fehlermeldungen durch das Update, aber er läuft zumindest rudimentär zum Reparieren.


Tipps für später:
15. Für Kernel 2.6 läuft der Promise-Treiber gar nicht, Versuch "zwecklos", der Treiber muss erst noch portiert werden, vielleicht schaffen die Promise-Leute das ja mal (2005?)

16. Beim eigenen Kernel erstellen soll man nicht das Fasttrak-Modul in den Kernel eincompilieren, da man dann nicht die Boot-Parameter mehr an den Treiber reichen kann. Ohne diese Parameter wird der RAID-Controller als Fasttrak Ultra-IDE-Controller mit 2 bis 4 Festplatten erkannt, was bei Schreibzugriffen die RAID-Arrays zerstört! Das Problem hat ja auch SuSE mit den 9.0 Live-EVAL-CDs spät erkannt, siehe dort.


Anregungen, Tipps? Gerne!
Viel Glück!
 

Wastl

Member
wenn du diesen Treiber zum booten brauchst dann wirst du nicht umhinkommen ihn für dne neuen Kernel in die initrd aufzunehmen.
Könnte mir vorstellen dass er dort nicht drin ist...

lg
Wastl
 
Oben