.titleBar { margin-bottom: 5px!important; }

Hilfe / Tipps zur Entwicklungsumgebung?

Dieses Thema im Forum "Freetz" wurde erstellt von cando, 9 Jan. 2009.

  1. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. Silent-Tears

    Silent-Tears IPPF-Promi

    Registriert seit:
    3 Aug. 2007
    Beiträge:
    7,456
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BI
    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)
     
  3. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #3 RalfFriedl, 9 Jan. 2009
    Zuletzt bearbeitet: 9 Jan. 2009
    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.
     
  4. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    super, danke!
    werde ich gleich testen.
     
  5. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Ein "make kernel-menuconfig" reicht normalerweise aus, dass nach einem "make kernel-precompiled" die Änderungen neu gebaut werden.

    MfG Oliver
     
  6. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #6 cando, 9 Jan. 2009
    Zuletzt bearbeitet: 9 Jan. 2009
    @ 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.
     
  7. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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
     
  8. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Da fehlen ein paar Zeilen zwischendrin.

    MfG Oliver
     
  9. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sorry, danke!

    Ich muss mich erst an den compiler gewöhnen, so weit oben hab ich nicht gesucht ...
     
  10. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das bedeutet aber trotzdem zwei Aufrufe und dazwischen das Verlassen der Konfiguration, während es sonst nur ein Aufruf von make ist.

    Ich habe nicht darauf geachtet, welche Box Du hast. Meine verwendet den älteren Kernel.

    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.

    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.

    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?