fli4l auf einer "Wireless Router Application Platform" von PC Engines

von Torsten Georg

Inhalt

Wichtiger Hinweis

Dieses HowTo beschreibt die grundsätzliche Vorgehensweise, wenn man fli4l auf einer WRAP installieren möchte. Mit der stabilen fli4l Version 3.0.0 entfallen viele hier beschriebene Dinge. Das HowTo soll aber weiterhin die eigentliche Vorgehensweise beschreiben.
Bei der Version 3.0.0 entfällt: Weitere Informationen und Bilder sind zu finden unter:

Vorwort

Natürlich kann man sich seinen Router auch fertig kaufen. Aber wer dieser Meinung ist, wird schon gar nicht bis hierhin vorgedrungen sein. Dieses HowTo beschreibt die Einrichtung eines fli4l-Routers auf einer Wireless Router Application Platform (=WRAP) von PC Engines [1]. Auf dieses Board bin ich über die fli4l Newsgroup [8] gestoßen und habe es dann bei Tronico.net [2] bestellt.
Das Board mit einer CF-Card  Fertiges Gehäuse etwa 16 mal 16 cm
Technische Daten:
Zusätzlich benötigen wir:

Die Herausforderung

Was ist eigentlich so besonders daran, fli4l auf einem WRAP zu installieren? Da das WRAP nett aussieht, eine geringe Leistungsaufnahme hat und auch schön leise ist, habe ich mich diesen Herausforderungen gestellt. Meine Vorgehensweise will ich in diesem HowTo beschreiben.

Einrichten der CompactFlash™

Das Wichtigste vorab
Will man die installierte CompactFlash™ im PC (auch im virtuellen PC) testen, so ist der Festplattenmodus entscheidend. Zeigt das BIOS an, daß kein Betriebssystem auf der Platte vorhanden ist, dann ist sehr wahrscheinlich der falsche Modus eingestellt. Prinzipiell gilt: Bei meinen Tests bootete eine alte 8MB CompactFlash™ im CHS-Modus wärend eine neue 128MB CF nur im LBA-Modus bootete.

1. Möglichkeit
Zuallerest einmal erstellt man eine fli4l-Diskette für eine HD-Installation auf einem Betriebssystem seiner Wahl. Mit dieser Diskette startet man dann einen PC in dem man vorher einen CompactFlash™ nach IDE-Adapter mit der WRAP-HD eingebaut hat. Glücklich ist hierbei, wer 2 PCs hat - es geht aber auch mit einem. Wie eine HD-Installation nach Typ A funktioniert steht ausführlich in der Dokumentation. Wenn man das ganze mit seinem Hauptrechner macht, dann sollte man sicherheitshalber alle anderen IDE-Teilnehmer abklemmen. Dann kann man die auch nicht zerschießen. Am Ende der HD-Installation erscheint die folgende Meldung:


fli4l - Installation auf Festplatte / Compact-Flash Wie geht es weiter? Die Festplatte wurde partitioniert, formatiert und ist jetzt unter /boot erreichbar. Sie können jetzt alle gewünschten Opt-Pakete aktivieren und per Imonc oder scp auf den Router nach /boot übertragen. Der Router benötigt folgende Dateien um von der Festplatte zu starten: syslinux.cfg, kernel, rootfs.tgz, rc.cfg und opt_tar.bz2

Diese Dateien kann man jetzt per Remote-Update übertragen. Hat man die HD-Installation auf seinem Hauptrechner gemacht, dann geht dies natürlich nicht. Stattdessen fährt man den PC erstmal über das Menü herunter. Die 5 Dateien kann man vom original Betriebssystem des Hauptrechners ja auch auf die IDE-Festplatte übertragen. Ich habe diese Variante noch nicht ausprobiert. Sie sollte aber funktionieren.

2. Möglichkeit
Ohne hoch und runterfahren, aber auch mit nur einem PC funktioniert die folgende Variante:
In VMWare richtet man die CompactFlash™ via PCMCIA Adapter oder IDE Adapter als physikalische Festplatte ein. Hierbei sollte man allerdings sehr gut aufpassen. Sonst zerschießt man sich sein Betriebssystem. Der Vorteil bei der PCMCIA Variante ist der, daß man den PC nicht aufschrauben braucht. VMWare kann man kostenlos 30 Tage lang testen - es entstehen also bis auf den Adapter keine Kosten. Ansonsten geht man wie oben vor.

3. Möglichkeit
Man spielt ein fertiges Image auf die CompactFlash™. Das ist zwar langweilig, aber wer sich dafür nicht zu schade ist, findet auf meiner Homepage [5] ein Image. Dort befindet sich auch eine Beschreibung der verwendeten Konfiguration. Das Einspielen des Images auf die WRAP-CF funktioniert folgendermaßen (Danke an [6]):


Linux: - gunzip -c fli4l-218.gz | dd of=/dev/hdX bs=16k oder - cat fli4l-218.gz | gzip -d | dd of=/dev/hdX bs=16k wobei X = der IDE Name der CompactFlash™ (manche Adapter, besonders per USB kann man als SCSI device unter /dev/sdX ansprechen) Windows: - physdiskwrite fli4l-218.gz (physdiskwrite ist zu finden unter [7]. Getestet habe ich diese Variante mit Version 0.5)

Das WRAP in Betrieb nehmen

Zuerst verbindet man den seriellen Port des WRAP über ein Nullmodemkabel mit einem PC. Unter Windows verwendet man z.B. HyperTerminal um die Konsolenausgaben anzuzeigen.

Per Default steht die serielle Schnittstelle in der WRAP auf 38400 Bit/s (8N1). Falls aber trotzdem wirre Zeichen in auf dem Terminal erscheinen, probiert man einfach mal die anderen Geschwindigkeiten aus.

Um ins BIOS der WRAP zu gelangen, drückt man während des RAM-Tests die Taste "s".


PC Engines WRAP.1C v1.03 640 KB Base Memory 64512 KB Extended Memory 01F0 Master 848A CF-ATA Phys C/H/S 978/8/32 Log C/H/S 978/8/32 WRAP setup (9) 9600 baud *3* 38400 baud (5) 57600 baud *C* CHS mode (L) LBA mode (X) Xmodem upload (Q) Quit

Das Image auf meiner Homepage ist bereits so eingestellt, daß die Ein- und Ausgabe über die serielle Konsole funktioniert. Bei einer eigenen Konfiguration muß man das entsprechend einstellen.

Die eigene Konfiguration

Mit der vorgefertigten Konfiguration im bereitgestellten Image kommt man nicht besonders weit. Schon gar nicht ins Internet. Es handelt sich weitgehend um eine fli4l Standardkonfiguration mit zusätzlich aktivierten IMOND, DSL (wg. IMOND), SSH, SCP und DHCP.

Wie man die notwendigen Dateien für eine CF-Installation erstellt, steht in der Dokumentation. Darauf möchte ich hier nicht weiter eingehen. Ich möchte nur auf die Konsoleneinstellung eingehen. Denn ohne diese hat man ohne Netzwerk keinen Zugriff auf den Router.

Die Datei "config/base.txt" ist wie folgt anzupassen:


#------------------------------------------------------------------------------ # console settings (serial console, blank time): #------------------------------------------------------------------------------ CONSOLE_BLANK_TIME='' # time in minutes (1-60) to blank # console; 0 = never, default if empty SER_CONSOLE='yes' # use serial interface instead of or # as additional output device and main # input device SER_CONSOLE_IF='0' # serial interface to use, 0 for ttyS0 (COM1) SER_CONSOLE_RATE='38400' # Baudrate for serial console

Da man den Router ja auch rebooten möchte, muß man noch eine Änderung in der Datei "img/syslinux.tmpl" vornehmen. Denn ohne den Eintrag "reboot=bios" funktioniert der Reboot nicht:


## this file is to be manipulated by mkfli4l ## don't change unless you know exactly what you do TIMEOUT 0 DEFAULT kernel APPEND load_ramdisk=1 initrd=rootfs.tgz root=/dev/tmpfs reboot=bios TAG

Die eigene Konfiguration lädt man am einfachsten via imonc auf den Router. Dabei sollte man beachten, daß man bei der eigenen Erstkonfiguration alle 5 Dateien (syslinux.cfg, kernel, rootfs.tgz, rc.cfg und opt_tar.bz2) überträgt.

Der eigene Kernel

Jetzt läuft die WRAP doch. Wozu brauche ich da noch einen eigenen Kernel?

Schließt man beim booten das Terminal an, dann wird man überschwemmt von folgender Meldung:


keyboard: Timeout - AT keyboard not present? keyboard: Timeout - AT keyboard not present? pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). ...

Wen diese Meldungen (ich habe sie nicht gezählt) nicht stören, der brauch hier nicht weiterzulesen. Mich haben sie gestört. Erich Titl [4] beschreibt, wie man diese Meldungen los wird. Man verwendet einen Patch von Randy Dunlap. Dieser definiert den Keyboard-Controller als Option im Kernel. Diesen Patch [14] habe ich für fli4l 2.1.8 angepaßt und mit einem 2. Patch [15] zum Abwählen der Option zum Download bereitgestellt.

Wie man eine Buildroot-Umgebung für fli4l 2.1.8 erzeugt, beschreibt Detlef Riekenberg in seinem Mini-HOWTO [9]. Meine Kernel-Buildroot habe ich nach dieser Anleitung eingerichtet.

Hat man das Basispaket in dieser Buildroot entpackt, dann braucht man nur noch die 2 zusätzlichen Patches in den Ordner "src/kernel-2.4" zu kopieren. Über die nachfolgende Befehlsfolge erzeugt man in der Buildroot seinen eigenen Kernel ohne Keyboard-Controller.


./mkkernel.sh -fetch ./mkkernel.sh -unpack ./mkkernel.sh -patch ./mkkernel.sh -remove ./mkkernel.sh -kernel oder ./mkkernel.sh -all (inklusive Hisax-Module, dauert sehr lange)

Den neuen Kernel kopiert man dann mit der eigenen Konfiguration wieder via imonc auf den Router. Auch hier sollte man alle 5 Dateien (syslinux.cfg, kernel, rootfs.tgz, rc.cfg und opt_tar.bz2) übertragen. Wichtig ist, daß die neuen Dateien im Verzeichnis "fli4l-2.1.8" der Buildroot erstellt werden (damit die Module zum Kernel passen).

Die Ansteuerung der LEDs

Jetzt fehlt nur noch die Ansteuerung der LEDs, um die WRAP "perfekt" zu machen.

Mit Hilfe des Mini-HOWTOs von Riku Saikkonen [10] habe ich das Programm "wrapled" erstellt, welches die LEDs auf dem Board ein- und ausschalten kann.

Da die Adresse der LEDs nicht im Bereich von 0x000 bis 0x3FF liegt, kann der Zugriff auf die Ports nicht über ioperm() angefordert werden. Hier mu$szlig; stattdessen jenseits iopl() verwendet werden. Dabei ist Vorsicht geboten, da damit der Zugriff auf den gesamten Adressbereich erteilt wird.

Das Ein-/Ausschalten der LEDs sei hier kurz dargestellt:


b1 = inb( GPIOBASE ); // lesen des BYTE an Adresse GPIOBASE b1 = b1 | 0x04; // LED1 ausschalten bzw. b1 = b1 & 0xFB; // LED1 einschalten outb( b1, GPIOBASE ); // schreiben des BYTE an Adresse GPIOBASE


Damit können wir jetzt auch sehen, was der Router gerade macht. Der Quelltext [11] und das ausfürbare Programm [12] liegen zum Download bereit. Ich bin kein C-Profi, daher gibt es sicherlich viele Ideen, wie man das Programm besser machen könnte. Es funktioniert - und darum geht es ja letztendlich.

Das komplette OPT ist auf meiner Homepage [13] zu finden.

Links


Schlusswort

Nach diesem HowTo habe ich fli4l auf der WRAP installiert. Ich hoffe, daß diese Anleitung anderen ebenfalls dabei helfen kann.

Alle Angaben sind natürlich ohne Gewähr! Ich schließe jede Haftung meinerseits aus. Wer am offenen PC arbeitet sollte schon genau wissen was er tut.

Bedanken möchte ich mich bei allen, die mir bei diesem HowTo geholfen haben. Dies sind die Autoren der Informationen, die über die obigen Links erreichbar sind. Außerdem möchte ich mich bei Mirko Kulpa bedanken, von dem die hier gezeigten Bilder stammen sowie natürlich bei Frank und dem gesamten fli4l-Team, ohne deren Arbeit dieses HowTo keinen Sinn machen würde.

Autor / Copyright

Diese Dokument unterliegt der GNU FDL und kann damit im Rahmen dieser Bestimmungen weiterverbreitet und bearbeitet werden.

Für Anregungen und Kommentare zu diesem Dokument bin dankbar und nehme sie gerne entgegen.



Version 1.02, Februar 2005 - (C) 2005-2007, Torsten Georg, fli4l (at) foddy (dot) de



Klicken Sie hier, um die Seite auszudrucken.