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:
bluebaer@r2d2 {chroot32} / $ cd /home/bluebaer/ufs910/tdt/tdt/cvs/cdk bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $
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 $
3. Konfiguration im Menu bearbeiten:
bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ make linux-kernel.menuconfig
bluebaer@r2d2 {chroot32} ~/ufs910/tdt/tdt/cvs/cdk $ make linux-kernel.xconfig
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:
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 $
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 $
5. Der frischgebackene Kernel befindet sich nun in folgendem Verzeichnis:
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 $
6. Ensprechend hier nun das neue Modul:
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 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!
Kommentar