Kernel Entwickling/SVN

Aus NAS Wiki

Wechseln zu:Navigation, Suche

Kernelentwicklung für die Gemini-Plattform

ICYBOX 4220B, Taurus GigaLan, MRT 35HD-DUAL-NAS-E soweit bekannt

Die Projekt Seite ist auf Sourceforge.net unter

http://sourceforge.net/projects/gemini-board/

sowie der direkte Einstiegt unter

http://sourceforge.net/svn/?group_id=241746

zu finden
Ein SVN (Subversion) ist auch eingerichtet. Adresse vom SVN
https://gemini-board.svn.sourceforge.net/svnroot/gemini-board

Eine kurze Anleitung fur User die sich ihren Kernel selber bauen wollen. Für Entwickler gibt es eine "erweiterte" Anleitung.

Ein Checkout des aktuellen Codes ist mit SVN für jeden (anonymous) möglich
svn co https://gemini-board.svn.sourceforge.net/svnroot/gemini-board/trunk/kernel kernel

Folgende Beschreibung bezieht sich auf ein Linux-System, auf eine Compiler-Umgebung unter Windows wird hier nicht eingegangen. Cross-Comiling . Nativ auf der Box aber auch möglich.

Um die "zentralen" Makefiles vom Kernel sauber zu halten, was inbesondere den Namen vom Compiler betrifft, sollten bei den Entwicklern/Usern Wrapper-Scripte benutzt werden.

Als praktisch hat sich erwiesen, diese z.B. im "~/Scripts" Verzeichnis zu erstellen, um dort die Wrapper abzulegen, diese Verzeichnis wird dann im Suchpfad mit angegeben.

In der ~/.bashrc vom User muß dann nur noch ein
export PATH="~/Scripts:${PATH}" angegeben werden dann sind diese mit im Suchpfad drin.

Und nun die Scripte
menuconfig:

#!/bin/bash
make ARCH="arm" menuconfig

make3 (GCC Version 3.4.6):

#!/bin/bash
make ARCH="arm" CROSS_COMPILE="arm-softfloat-linux-uclibc-" zImage && \
cp arch/arm/boot/zImage /var/tftp
ls /var/tftp -l
echo -n -e "\a"

make4 (GCC Version 4.1.6):

#!/bin/bash
make ARCH="arm" CROSS_COMPILE="arm-linux-gnu-" zImage && \
cp arch/arm/boot/zImage /var/tftp
ls /var/tftp -l
echo -n -e "\a"

Wie man sehen kann wird nach erfolgter Compilierung der Kernel ist das Verzeichnis vom TFTP-Server kopiert, damit er dann getestet werden kann. Danach folgt noch ein kleine akkustische Meldung, damit eine eventuelle Kaffepause unterbrochen werden kann, falls dies alles auf der ARM-Plattform passiert.

Die Unterstützung für >2TB Laufwerke unter BlockDevices bitte nicht aktivieren !! Erklärung siehe ggf. Entwickler Info.

Ab hier Entwickler INFOs

Wie gesagt befindet sich das SVN-Repository unter
https://gemini-board.svn.sourceforge.net/svnroot/gemini-board

Für einen Commit (Schreibzugriff) ist zwingend eine Anmeldung als User bei Sourceforge erforderlich.
Bitte danach mit (ElektrmoAn) eine PM im Board zukommenlassen, mit den Usernamen, damit ich die Rechte freischalten kann.
Es sind auch noch einige Mailinglisten aktiviert, z.B. kann beim svn-commit automatisch eine Meldung an alle Entwickler verschickt werden.

Alle Pfadangaben sind jetzt relativ zu diesem

Im Verzeichnis

/experimental

sind noch experimentelle Zweige von Kerneln zu finden.
eingepflegt sind zur Zeit die Sourcen von

/experimental/unionfs
/experimental/squashfs

Diese Sourcen sind noch nicht komplett fehlerfrei. Beim Testen wurde herausgefunden, daß die USB-Unterstützung fehlerhaft ist. Es kann nur die erste USB-Schnittstelle mit den Patches benutzt werden. Der Compiler läuft einwandfrei durch, der Fehler erfolgt erst beim Booten.

Folgende Aufgaben sind noch zu erledigen. Code mergen von

/experimental/unionfs
/experimental/squashfs

nach

/experimental/union-sqaushfs

Weitere Arbeiten

/experimental/usb-rewrite

komplettes aufräumen des USB-Codes geplant, damit einige Code-Teile nicht doppelt im Kernel auftauchen. Es ist auch dann einfacher diesen zu warten. Der aktuelle Code ist soweit es aussieht schon fehlerfrei. Beim kopieren der Sourcen und nachträglichen änderen sind wohl ein paar Bezeichner vergessen worden. Kannt aber icht garantiert werden.

/experimental/mtd-rewrite

Aufräumen des MTD-Treibers, die Partiontabelle soll nicht Hard-Coded im Kernel sein. Der Kernel kann einen Redboot-Partitionstable auswerten. Die einzige Partitionstabelle soll im Flash liegen.


Der fehlenden (hoffentlich vorhandene) Hardware Zufallzahlengenerator soll unterstützt werden. Header Datei (5 Zeilen) ist vorhanden. aber nicht auf Gemini angepaßt, diese sind noch von der Centroid Plattform.

Denächst kommt noch der Bootloader ins SVN, Pfadangabe

/experimental/bootloader

--ElektromAn 23:15, 12. Nov. 2008 (CET)