Das ist ein wichtiges Thema.
X
X

Anleitung: Wie baue ich mir meinen (Wunsch)-Kernel

Einklappen
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • capt_bluebaer
    Special VIP
    • 10.01.2008
    • 1866

    Anleitung: Wie baue ich mir meinen (Wunsch)-Kernel

    Hier 'mal eine kleine Anleitung für alle diejenigen, die nicht nur vom GIT-Kernel abhängig sein wollen und beabsichtigen, selber einen Kernel zu bauen z.B. mit neuen Features oder zusätzlichen Treibern.
    Vorraussetzung ist ersteinmal ein funktionierendes Linux-System mit mit einer GIT-Umgebung. Ein erstes GIT-Image muß gebaut sein. Anhand eines Beispieles erkläre ich die einzelnen Schritte:
    Box Kathrein UFS 910
    GIT-Image Standard (nicht debug)
    Neuer Treiber: cdc-acm (handelt sich um ein USB-Modem Treiber, durch Patchen der VIDS/PIDS lässt sich das Zeugs von Duolabs ansprechen, z.B. Twinbase)
    Anmeldung am System als Benutzer, es wird dringend davon abgeraten, den Root-Account für die folgenden Schritte zu benutzen.

    1. Ins Arbeitsverzeichnis wechseln:
    Code:
    bluebaer@r2d2 {chroot32} / $ cd /home/bluebaer/ufs910/tdt/tdt/cvs/cdk
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    2. Die bisher benutze Kernel-Config ins Verzeichnis der Kernel-Source kopieren. Der Name der .config setzt sich aus "linux-", der Kernelversion und dem Boxtyp zusammen, sie enden mit .config und debug-configs erhalten eben zusätzlich den Zusatz debug.
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ cp Patches/linux-2.6.17.14-0041_ufs910.config linux/.config
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    Mutige oder diejenigen, die wirklich wissen, was sie tun können sich die nächsten Schritte auch sparen und die .config im Patches-Verzeichnis mit einem Texteditor direkt editieren und dann ab Schritt 5 weitermachen. Ich bevorzuge aber die folgende Methode, weil damit auch eventuelle Abhängigkeiten korrekt aufgelöst werden.
    3. Konfiguration im Menu bearbeiten:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ make linux-kernel.menuconfig
    Der Befehl startet eine ncurses-basierte menusteuerung, oder:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ make linux-kernel.xconfig
    Hiermit startet man eine X-Server basierte Menuführung (KDE, Gnome, Fvwm usw) für diejenigen die gerne mit der Maus klicken.
    Die Kernel-Konfiguration ist in mehrer Hauptgruppen unterteilt, den zusätzlichen Treiber finden wir unter "Device Drivers - USB Support - USB Modem (CDC ACM) support". Wenn die Zeile highlighted ist kann man unter "Help" noch zusätzliche Informationen sehen z.B. eben die Abängigkeiten die zusätzlich gewählt werden. Da ich den Treiber nicht in den Kernel integrieren möchte, sondern als seperates Modul nachladen will wähle ich "M".
    Nach Rückkehr zum Hauptmenu und ein finales "Exit" wird die Frage ob die neue Konfiguration gesichert werden soll natürlich bejaht.
    4. Neue Konfiguration zurück ins Patches-Verzeichnis:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ cp linux/.config Patches/linux-2.6.17.14-0041_ufs910.config
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    5. Kernel kompilieren:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ rm .deps/linux-kernel.do_compile
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ make linux-kernel.do_compile
    rm .deps/linux-kernel*.do_compile
    rm: Entfernen von „.deps/linux-kernel*.do_compile“ nicht möglich: Datei oder Verzeichnis nicht gefunden
    make: [.deps/linux-kernel.do_compile] Fehler 1 (ignoriert)
    cd linux-2.6.17.14_stm22_0041 && \
    .
    . bla bla bla
    .
      CC      fs/autofs/autofs.mod.o
      LD [M]  fs/autofs/autofs.ko
    make[1]: Leaving directory `home/bluebaer/ufs910/tdt/tdt/cvs/cdk/linux-2.6.17.14_stm22_0041'
    touch .deps/linux-kernel.do_compile
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    Das Ganze kann einige Minuten in Anspruch nehmen je nach Systemleistung, nach Abschluß muß es so oder so ähnlich aussehen, wenn der Vorgang erfolgreich war. Der erste rm-Befehl ist übrigens nötig, um den System mitzuteilen, daß der Kernel erneut kompiliert werden soll.
    5. Der frischgebackene Kernel befindet sich nun in folgendem Verzeichnis:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ ls -al linux/arch/sh/boot
    insgesamt 5748
    drwxr-xr-x  3 bluebaer users    4096 30. Mär 23:47 .
    drwxr-xr-x 13 bluebaer users    4096 30. Mär 21:54 ..
    drwxr-xr-x  2 bluebaer users    4096 30. Mär 21:54 compressed
    -rw-r--r--  1 bluebaer users    1237 30. Dez 15:12 Makefile
    -rw-r--r--  1 bluebaer users 1569334 30. Mär 23:47 uImage
    -rw-r--r--  1 bluebaer users     268 30. Mär 23:47 .uImage.cmd
    -rwxr-xr-x  1 bluebaer users 2701494 30. Mär 23:47 vmlinux.bin
    -rw-r--r--  1 bluebaer users     139 30. Mär 23:47 .vmlinux.bin.cmd
    -rw-r--r--  1 bluebaer users 1569270 30. Mär 23:47 vmlinux.bin.gz
    -rw-r--r--  1 bluebaer users     103 30. Mär 23:47 .vmlinux.bin.gz.cmd
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    und heißt "uImage".
    6. Ensprechend hier nun das neue Modul:
    Code:
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ ls -al linux/drivers/usb/class
    insgesamt 168
    drwxr-xr-x  2 bluebaer users  4096 30. Mär 23:47 .
    drwxr-xr-x 14 bluebaer users  4096 30. Mär 23:47 ..
    -rw-r--r--  1 bluebaer users     8 30. Mär 23:47 built-in.o
    -rw-r--r--  1 bluebaer users   119 30. Mär 23:47 .built-in.o.cmd
    -rw-r--r--  1 bluebaer users 31211 18. Jun 2006  cdc-acm.c
    -rw-r--r--  1 bluebaer users  3266 18. Jun 2006  cdc-acm.h
    -rw-r--r--  1 bluebaer users 13156 30. Mär 23:47 cdc-acm.ko
    -rw-r--r--  1 bluebaer users   149 30. Mär 23:47 .cdc-acm.ko.cmd
    -rw-r--r--  1 bluebaer users   849 30. Mär 23:47 cdc-acm.mod.c
    -rw-r--r--  1 bluebaer users  2028 30. Mär 23:47 cdc-acm.mod.o
    -rw-r--r--  1 bluebaer users 12647 30. Mär 23:47 .cdc-acm.mod.o.cmd
    -rw-r--r--  1 bluebaer users 11868 30. Mär 23:47 cdc-acm.o
    -rw-r--r--  1 bluebaer users 14596 30. Mär 23:47 .cdc-acm.o.cmd
    -rw-r--r--  1 bluebaer users   856 18. Jun 2006  Kconfig
    -rw-r--r--  1 bluebaer users   150 18. Jun 2006  Makefile
    -rw-r--r--  1 bluebaer users 34495 18. Jun 2006  usblp.c
    bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
    Das Modul heißt "cdc-acm.ko".

    Das war's eigentlich. In einem USB-Image können der Kernel nach /boot und das Modul nach /lib/modules auf die Box kopiert werden und sind einsatzbereit.

    Ich denke, das ist jetzt für jedermann verständlich, der sich mit der Materie ein wenig auskennt und hoffe, daß jetzt viele von Euch noch viele Ideen mit 'reinbringen.

    Frohes (Kernel)-Backen!
    Captain Bluebaer

    sigpic
  • joergurmel
    Urmeleierbrüter
    • 20.07.2008
    • 9899

    #2
    .. das wird doch sicher was für die Howto Abteilung ?
    MFG Jörg

    Woher soll ich wissen was ich denke, bevor ich hörte, was ich sagte !

    Kommentar

    • Sofatester
      Developer
      • 29.12.2007
      • 13898

      #3
      habs mal oben festgetackert, da es sicher einige interessiert

      Kommentar

      • SoLaLa
        Super-Moderator
        • 11.02.2008
        • 8128

        #4
        wieso heißt der kernel bzImage?

        Kommentar

        • capt_bluebaer
          Special VIP
          • 10.01.2008
          • 1866

          #5
          Sorry, hab' irgendwie einen anderen Gedanken gehabt.
          Da liste ich das Verzeichnis schon und ... wer lesen kann ist klar im Vorteil.
          Hab's oben korrigiert.
          Captain Bluebaer

          sigpic

          Kommentar

          • SoLaLa
            Super-Moderator
            • 11.02.2008
            • 8128

            #6
            fein

            Kommentar

            Nicht konfiguriertes PHP-Modul

            Einklappen

            Anleitung: Wie baue ich mir meinen (Wunsch)-Kernel

            Einklappen
            Lädt...
            X