Moin und Fr.We !
Ich habe mir spasseshalber mal einen 3.10..... Kernel im Source geholt und diesen ohne weitere Sachkenntnis kompiliert. Dauert ca 5h wie ich merkte auf dem Pi. Auch mal in die Sourcen reingeschaut und gestaunt was manche so draufhaben an Programmierung. Der Pi Kernel scheint mir ein Sammelsurium diverser Firmen zu sein, u,a, finden sich dort Sourcen bekannter Firmen wie der Chipschmiede Broadcom, Sound Blaster, Nvidia usw. Ist schon Wahnsinn!
Nun weiter mit der Logik eines Ingenieurs, der neu bei Linux ist aber schon den 8051 1987 programmierte:
1. Ich habe eine Hardware, den Pi: CPU, GBU, IO's. Wie jeder Rechner hat auch dieser eine Memmap, d.h. die Hardware wird an bestimmte Adressen über den Bus gemapped, wurde zumindest vor 10 Jahren noch so gemacht. Es gibt RAM, einen SD Slot usw. Der ARM hat den AMBA Bus (sowas wie die North/South) Bridge bei Intel, er hat einen Thumb Befehlssatz.
Ich zumindest muss einem Linker alle diese Infos mitteilen, wo liegt das RAM, wo die IO Hardware usw. Woher soll der das auch wissen?
Hier mal ein Schema eines embedded systems:
http://www.cnx-software.com/wp-content/upl…y-Map-Large.png
Kurz: Der GCC Compiler / Linker MUSS die komplette Architektur des Systems kennen, nicht nur die Mnemonics des Maschinen codes. GCC kann für dverse CPUs Code erzeugen.
Nun meine Fragen:
1. Ist der Kernel des RPI speziell für diesen erstellt worden, d.h findet sich darin anderer Sourcecode als in der der offiziellen Linuxversion, die maschinenunabhängig ist? Wenn ja ,muss sich ja jemand der Origkernel genommen haben, der absolut Ahnug hat und diesen auf den RPI angepasst haben. Hätte der RPI 2 Gigs RAM müsste das ja irgendwo stehen, es sei denn Linux findet sowas selbst heraus. Treiber sind einfacher, es gibt nur Block und Zeichentreiber mit genormter Schnittstelle, alles dahinter muss nicht bekannt sein, eine Harddisk wird wie eine SD karte angesprochen aus Sicht des PI, ein UMTS Stick oder ein klappriges Analogmodem..... kein Unterschied. AT Befehle haben sie alle. Das erledigt der spezielle Treiber.
2. Wenn das RPI Projekt eingestellt wird, weil es morgen etwas schnelleres, besseres usw gibt, ist dann logischerweise auch der Support durch apt-get update und upgrade am Ende?
3. Wo steht es beschrieben, was die tausend Fragen bedeuten, die während der Kernelkonfiguration gestellt werden? Es funktioniert nicht die alte config.gz einfach in .config auszupacken und umzubenennen, es werden bei make und auch make oldconfig trotzdem alle Fragen nochmal gestellt, die ich einfach mit Return bestätigt habe, keine Ahnung was dann passiert. Er kompiliert durch und eine vmlinuz entsteht nach 5h.
4. Was passiert bei make oldconfig? Ich möchte eigentlich die aktuelle Konfigration verwenden, weil diese ja passt? Wieso dann wieder die tausend Fragen?
Vielleicht ha ja mal jemand Zeit etwas darüber zu schreiben, so dass die Basics verständlicher werden und ich vielleicht irgendwann in der Lage bin einen ganz eigenen Kernel zu bauen.
PS: Übrigens habe ich es geschafft einen Huwai UMTS Stick am PI zum Laufen zu kriegen, mobiles Surfen mit Browser ist möglich.
Gruss,
Christian