Moin.
Also erstmal zur vorgeschichte:
Ich habe bereits in einem anderen Thread Probleme mit meinem Huawei E220 Modem beschrieben. Neuerliche hinweise haben mich dazu geführt, dass diese Probleme wohl mit meinem Mainboard zusammenhängen. Daraufhin habe ich mich(was ich schon länger vorhatte) nach einem UMTS-Router umgeschaut. Dabei war einer meiner wichtigsten interessen dass es ein linux-basiertes gerät sein sollte.
Ich bin nun bei der SurfStation von O2 gelandet, die einen router mit USB Host schnittstelle darstellt. Aufgrund dieser Tatsache ging ich davon aus, dass es sich wohl um ein linux basiertes gerät handeln müsse, einfach weil das die billigste und einfachste variante ist, die ich mir so vorstellen kann.
Meine annahme war richtig. ich kann mich per Telnet an der box anmelden, und habe dann ein linux image, das mir vollen root-zugriff gewährt.
Ich hatte eigentlich auf ein ARM9 basiertes gerät gehofft, aber dem war leider nicht so.
laut /proc/cpuinfo handelt es sich um eine Broadcom CPU:
# cat /proc/cpuinfo
system type : Broadcom BCM5354 chip rev 3
processor : 0
cpu model : BCM3302 V2.9
BogoMIPS : 237.56
wait instruction : no
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : no
hardware watchpoint : no
VCED exceptions : not available
VCEI exceptions : not available
unaligned_instructions : 2
dcache hits : 0
dcache misses : 0
icache hits : 0
icache misses : 0
instructions : 0
ein /proc/version ergibt mir folgendes:
# cat /proc/version
Linux version 2.4.20 (x127667@old_server.com) (gcc version 3.2.3 with Broadcom m
odifications) #2 Â■ 7È┬ 8 17:03:53 CST 2008
So... nun fängt es mit den Problemen an: Der hersteller des gerätes ist nirgendwo angegeben. Weder am Gerät selbst, noch im Handbuch oder auf der Verpackung. Will heissen, dass sich da mal wieder jemand um die GPL geschickt gedrückt hat.
Ich bräuchte nun ein kernel modul für den vfat treiber, welches ich selbst kompilieren müsste.(und noch ein paar andere module)
dazu fehlt mir jedoch der nötige Compiler. Kann mir da jemand weiterhelfen?
Weiss unter umständen jemand welcher hersteller sich hinter der "Surf Station" von O2 verbirgt?
Ich meine ich bin mir atm nicht mal sicher dass man das gerät in D verwenden darf, da es keinerlei kennzeichnungen hat, nicht mal das CE logo oder ein FCC logo.
Muss ein hersteller sein Produkt nicht als solches kenntlich machen?
was meint ihr dazu?
Linux 15.069 Themen, 107.534 Beiträge
Das Problem wird sein das dies ein spezielle gcc Version ist , welche Binärcode für diese spezielle CPU übersetzt. Wenn du in deinem Rechner einen AMD oder Intel Prozessor (oder Sparc , Power PC...) hast, dann kannst du den erzeugten Binärcode nicht einfach auf den Router kopieren , weil das eine andere Prozessoarchitektur ist.
Du müßtest deshalb crosscompilieren, also auf deinem PC Binärcode für eine andere CPU (Prozessorarchitektur) erzeugen. Da bin ich aber total überfragt wie man das auf einem PC macht.
Und ich schätze mal das auf diesem Router nicht genug Speicher zur Verfügung steht , dieses Kernelmodul zu übersetzen.
Wieso willst du den vfat Treiber selbst übersetzen ?
Die Kernelconfiguration steht in der Regel in der Datei /proc/config.gz.
Du könnst ja mal reinschauen und selbst nachsehen ob der Treiber im Linuxkernel schon aktiviert ist. Die Treiber können auch monolitisch in der Datei /boot/vmlinuz?? sein und müssen nicht unbedingt als Modul übersetzt werden.
Beispiel von einem 2.6.26er Linuxkernel (AMD64 Architektur):
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y <-----VFAT Treiber ist aktiviert und als monolitischer Treiber in der Kerneldatei /boot/vmlinuz???
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
moin. Ich weiss dass ich das entsprechende modul(und einige andere kleine progrämmchen) für diesen Prozzi kompilieren muss. Genau daher dieser Post. Da der kernel laut seinem Proc interface mit einem gcc compiler kompiliert wurde, müsste dieser auch open source sein, da der gcc unter der gpl steht, und derivate von gpl-software ebenso opensource sein müssen. Das problem ist, dass sich der hersteller nicht ermitteln lässt. und O2 verkauft in der regel fremdprodukte.
Übrigens: es handelt sich wie oben beschrieben um einen 2.4er kernel, der den config eintrag im proc system nicht unterstützt.
und laut meminfo sind noch knapp 20 MB ram frei. das sollte für ein kernelmodul wie vfat locker reichen.
20 MB RAM sind noch frei ?
Und wo willst du den Sourcecode des Linuxkernels abspeichern ?
Ich habe mal hier ein Beispiel für die Fritzbox von AVM:
http://www.wehavemorefun.de/fritzbox/index.php/Firmware_Modifikationen_/_Recompiling
Du müßtest also erstmal einen Cross Compiler für diesen Router besorgen.
soweit ich weiss lädt der kernel des routers beim start das root-dateisystem von einem eeprom in eine ramdisk. will heissen, dass man das modul nach jedem reboot neu auf die box packen müsste, was aber nicht weiter ein problem darstellt. Den source des kernels brauche ich auf dem router übrigens gar nciht, geplant ist es, das teil auf meinem desktop zu kompilieren, das modul dann auf den router zu laden und von dort aus in den kernel einzusetzen.
was ich brauche ist also nur eine gcc version, die auf einem x86er läuft, und BCM5354-code ausspuckt.
das nennt sich dann cross-compiler
"das nennt sich dann cross-compiler"
Das meine ich ja, aber ich schätze da wirst du keinen Support vom Hersteller bekommen.
Diese CPU wird auch viel zu langsam sein den Programmcode zu übersetzen.
Der Programmcode meines 2.6.26er Linuxkernels ist mehr als 50 MByte groß.
Die idee ist gar nicht die kernelsourcen auf dem router zu kompilieren, sondern den kernel auf meinem Desktop zu bauen und dann das modul auf den router zu kopieren. anders wärs ja blödsinnig, abgesehen davon dass der router erstmal ne toolchain zum backen bräuchte.
Und der hersteller, den ich ja nicht weiss, der muss mir seinen compiler oder zumindest die sourcen überlassen, da er OpenSource software verwendet hat, deren lizenz derivate des Original einschliesst.
Das stimmt. Das steht auch alles so in der GPL .
Die FSF hat auch immer wieder Ärger mit Firmen die sich nicht an die Lizenzbestimmungen der GPL halten. Wenn du vom Hersteller oder vom Provider den Sourcecode nicht bekommst und auch kein Cross Compiler kostenlos verfügbar ist, dann mußt du einen anderen Router verwenden.
Meiner Erfahrung nach läuft auf den meisten Routern Linux. Vielleicht läuft auf manchen Routern das Unixderivat Net BSD. NetBSD ist auch Open Source.
Ich habe mal gegoogelt und zum Thema Crosscompilieren das hier gefunden:
http://tobias.schroepf.de/doku/doku.php?id=gentoo:crosscompile-toolchain_einrichten
Das wird so ähnlich bei vielen Distributionen sein.
http://linux.baltic.net/technikabende/emblinux.pdf
Ich habe da auch keine Erfahrung.
Das Prinzip der Freie Software kann nur funktionieren wenn auch die Hardware-Hersteller mitmachen.
Wenn der Umsatz zurückgeht, weil die Anwender den Sourcecode haben wollen aber nicht bekommen, dann müssen die Hersteller handeln (oder gehen bankrott).
Anders funktioniert das eben nicht.
Ich weiß aber auch nicht welchen Router du nutzen kannst, wenn du deine Firmware selbst kompilieren willst.
PS: Ich verstehe immer noch nicht warum du dieses Modul vfat selbst kompilieren willst. Linuxtreiber können entweder als Modul oder monolitisch übersetzt werden. Ich nehme mal an das der vfat Treiber monolitisch übersetzt worden ist und sich schon im Linuxkernel auf diesem Router befindet.
Auf diesem Router ist wahrscheinlich nicht mal ein dynamischer Linker ld installiert, welcher die Kernelmodule in den RAM Speicher lädt und mit dem Linuxkernel verlinkt.
Versuch doch einfach mal einen USB Stick anzuschließen und teste ob sich Daten auf diesem Stick speichern lassen.
Schau dir mal die Development Kits für die diversen alternativen WLAN-Router-Firmwares an. Diese Geräte sind auch alle Broadcom-basierend. Womöglich findest du so die passenden Werkzeuge.
Wenn du das Gerät auseinander baust, findest du vielleicht auch Rückschlüsse auf den Hersteller und kannst eventuell mit einer Firmware flashen, die das vfat-Modul schon drin hat.
mein erster anlauf diesbezüglich waren natürlich die seiten von OpenWRT und DD-WRT, da die Linksys Router, für die diese Alternativen Firmwares ursprünglich gedacht waren, ebenfalls auf BCM CPUs basieren. Bin dummerweise bisher noch nicht auf den passenden compiler für meinen chip gestossen
Die besten Seiten die ich gefunden habe sind diese hier:
http://www.uclibc.org/
http://wiki.openembedded.net/index.php/Main_Page
