Hilfe / Tipps zur Entwicklungsumgebung?

cando

Aktives Mitglied
Mitglied seit
28 Nov 2008
Beiträge
1,080
Punkte für Reaktionen
0
Punkte
0
Hallo olistudent, cuma und all die anderen, die hier super entwicklungsarbeit leisten.

ich möchte gern selbst an meiner box hand anlegen und an einem avm kernel modul ein paar zeilen ändern.

(genauer gesagt an der avm_debug.c)

wie mache ich das am geschicktesten mit der entwicklungsumgebung?

ich habe die source entpackt auf meinem rechner. wenn ich direkt die datei editiere und make laufen lasse, wird sie nicht neu übersetzt.

mache ich ein make kernel-dirclean , wird sie gelöscht und beim make neu aus den originalsourcen geholt.

ich möchte natürlich gern meine version übersetzen / testen.

muss ich über das patchsystem gehen und wenn ja, womit erstellt man so einen patch?

das make rennt ja vollautomatisch durch.

ich weiss, es ist alles etwas offtopic, aber vielleicht habt ihr mal einen tipp wo ich nachlesen kann.

danke
 
Guck doch mal, wo die anderen Patches liegen, die dort reingepatched werden. make/paket/patches/*

Beimn make werden die darin enthaltenen Patches allesamt angewand. Wir man so ein Patchfile erstellt, da guckst du am besten bei google oder hier. Stichworte zum Suchen: diff und patch. (manpages dazu tuns auch)
 
Ein Patch wird erstellt mit
Code:
diff -u OriginalDatei NeueDatei
diff -u linux-2.6.13.1/drivers/char/avm_new/avm_debug.c.orig linux-2.6.13.1/drivers/char/avm_new/avm_debug.c
Der Patch wird auf die Standard-Ausgabe ausgegeben, also sollte man diese in eine Datei umleiten.

Damit der Patch auch richtig angewendet werden kann, muß er auch die passenden Pfade enthalten, dazu am Besten eine der vorhandenen Patch-Dateien anschauen.
Die zweite Zeile geht davon aus, daß die Original-Datei nach avm_debug.c.orig kopiert wurde. Das aktuelle Verzeichnis beim Aufruf von diff muß so sein, daß die oben genannten Pfade passen, also "source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel" oder so ähnlich.

Allerdings ist es recht zeitaufwendig, für jede Änderung nach kernel-dirclean den ganzen Kernel neu zu erstellen.

Für solche Zwecke habe ich einmal "make kernel-force" eingebaut. Damit wird das Kernel-Make aufgerufen, auch wenn es ansonsten nicht für nötig gehalten würde. So kann man Änderungen machen und direkt testen. Man sollte aber nicht vergessen, die geänderte Datei zu sichern bzw. einen Patch zu estellen, denn wenn man "make kernel-dirclean" aufruft, dann sind die Änderungen weg. Außerdem gibt es auch Konstellationen, wo die Kernel-Quellen gelöscht und neu erstellt werden, ohne daß man explizit "make kernel-dirclean" aufruft, also sollte man vorsichtig sein.

PS:
Für den Kernel muß der Patch in make/linux/patches oder einem passenden Unterverzeichnis davon abgelegt werden.
 
Zuletzt bearbeitet:
super, danke!
werde ich gleich testen.
 
Ein "make kernel-menuconfig" reicht normalerweise aus, dass nach einem "make kernel-precompiled" die Änderungen neu gebaut werden.

MfG Oliver
 
@ RalfFriedel

du meinst doch sicher:

linux-2.6.19.2/drivers/char/avm_new/avm_debug.c

aber wie komme ich an diese symbolischen namen?

der eigendliche Pfad ist ja

./kernel/modules-8mb_26-7270_04.67/lib/modules/2.6.19.2/source/drivers/char/avm_new/avm_debug.c

muss ich da ein symlink setzen oder so? und wo finde ich die originale source

./kernel/modules-8mb_26-7270_04.67/lib/modules/2.6.19.2/source/drivers/char/avm_new/avm_debug.c.orig

oder bin ich nur einfach im falschen verzeichnis?

ich hab den vorspann erstmal per hand im patch ersetzt, damit der pfad so wie bei den anderen patches im kernel verzeichnis ist.

make kernel-force bricht bei mir mit fehlern ab, mit make kernel-dirclean + make funktioniert es aber.

@silent-tears
danke, der tipp mit dem verzeichnis ist super
ich habe mein patch in
make/linux/patches/2.6.19.2/7270_04.67/
plaziert, wo er auch gezogen wird (ich hoffe das ist die richtige stelle)

@olistudent: danke für den tipp mit make kernel-menuconfig, werds gleich testen.
 
Zuletzt bearbeitet:
@olistudent

ich habe noch ein paar schwierigkeiten mit deinem vorschlag:

Code:
make kernel-menuconfig

make: *** [source/ref-8mb_26-7270_04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.19.2/vmlinux.eva_pad] Fehler 2

Ich verändere nichts am menu und speicere das gleich wieder.

Muss ich da was einstellen (hardwareparameter der box etc...?

viele grüße

cando
 
Da fehlen ein paar Zeilen zwischendrin.

MfG Oliver
 
Sorry, danke!

Ich muss mich erst an den compiler gewöhnen, so weit oben hab ich nicht gesucht ...
 
Ein "make kernel-menuconfig" reicht normalerweise aus, dass nach einem "make kernel-precompiled" die Änderungen neu gebaut werden.

Das bedeutet aber trotzdem zwei Aufrufe und dazwischen das Verlassen der Konfiguration, während es sonst nur ein Aufruf von make ist.

du meinst doch sicher:
linux-2.6.19.2/drivers/char/avm_new/avm_debug.c
Ich habe nicht darauf geachtet, welche Box Du hast. Meine verwendet den älteren Kernel.

der eigendliche Pfad ist ja
./kernel/modules-8mb_26-7270_04.67/lib/modules/2.6.19.2/source/drivers/char/avm_new/avm_debug.c

Bei meinem Kernel ist der Pfad
source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.13.1/drivers/char/avm_new/avm_debug.c
Da wechselt man ins Verzeichnis source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel und kann dann direkt das diff aufrufen.

Du bist an der falschen Stelle, kernel/modules-8mb_26-04.67/lib/modules/2.6.13.1-ohio/source ist selbst nur ein Link auf source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.13.1 oder entsprechend bei der 7270.

und wo finde ich die originale source
./kernel/modules-8mb_26-7270_04.67/lib/modules/2.6.19.2/source/drivers/char/avm_new/avm_debug.c.orig
Die Datei .orig findest Du nicht irgendwo, die mußt Du selbst erstellen.
Code:
cp -p \
source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.19.2/drivers/char/avm_new/avm_debug.c \
source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.19.2/drivers/char/avm_new/avm_debug.c.orig
oder einfacher:
(cd source/ref-8mb_26-04.67/kernel/kernel_8mb_26_build/kernel/linux-2.6.19.2/drivers/char/avm_new && cp -p avm_debug.c avm_debug.c.orig )
Oder wie auch immer das genaue Verzeichnis bei der 7270 heißt.

make kernel-force bricht bei mir mit fehlern ab, mit make kernel-dirclean + make funktioniert es aber.
Kann es sein, daß nur der Patch nicht richtig angewendet wurde und ansonsten der gleiche Fehler auftritt, den Du einige Beiträge später erwähnt hast?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.