DBox-Debug-Mode-HOWTO von dridders v1.00, 30.12.00 changelog: v1.04, 25.01.01 lexxi (lexxi@gmx.ch) v1.06, 28.01.01 derget (derget@altavista.net) v1.22, 04.02.01 derget und lexxi v1.23 13.02.01 Added Sagem Support derget Hier wird beschrieben, wie man die DBox2 von Betaresearch (hergestellt durch Nokia, Sagem und Philips) in den Debug-Mode schaltet, so dass der Bootloader auch nicht signierte Dateien laedt. Dadurch kann man das Programm ppcboot (eine Art Linux-loader fuer PPC) ueber das Netzwerk starten. Mit ppcboot kann man nun einen Linux-Kernel auf der Box starten. pfffff, kompliziert, nicht unbedingt mit Hilfe der howto. Desweiteren wird erklaert, wie man ppcboot konfigurieren muss. Zum Schluss wird auf den Linux Kernel eingegangen (Quellen, patchen, konfigurieren...). Wenn ihr mit diesem HOWTO fertig seid und in eurem Terminalprogramm ' sh-2.03# ' steht, habt ihr gewonnen. ______________________________________________________________________ Inhaltsverzeichnis 1. Informationsquellen / Feedback 2. Voraussetzungen 3. SAGEM oder NOKIA 4. Die Prozedur 5. PPC Boot 6. Der Linux Kernel 7. Verwendete RPM's 8. Bug´s ______________________________________________________________________ 1. Informationsquellen / Feedback ---------------------------------- Bis jetzt gibt es leider noch nicht sehr viele Infos ueber die DBox2 im Netz. Folgendes hab ich bis jetzt gefunden: 1.) http://dbox2.elxsi.de - Die Hauptseite 2.) IRC: im IrcNet im Channel #dbox2 ist fast immer jemand zu finden, der zumindest etwas Ahnung hat. Als Server koennt ihr z.B. ircnet.irc.fu-berlin.de benutzen. 3.) http://www.mvista.com - Hier bekommt ihr das CDK, das bei der Entwicklung der Soft fuer die Box hilft. 4.) Debian PPC binarys - ftp://ftp.de.debian.org/pub/debian/dists/ potato/main/binary-powerpc/ 5.) http://members-proxy-1.mmbrprxy.home.net/mmporter/linux/cross Eine kleine Anleitung, wie ihr die wichtigsten Programme kompilieren muesst (gcc, binutils, glibc,...). 6.) http://ftpsearch.lycos.com/?form=advanced 7.) http://www.vandyke.com - CRT - einfaches Terminalprogramm fuer Win9x 8.) Fuer die Besitzer einer Sagem Box - http://www.tuxbox.org/ 9.) Das Hardwarebook - Kabel, Stecker... http://www.hardwarebook.net/ 10.) Pinbelegung des Modems in der Nokia Box http://www.noernet.de/dbox2/ 11.) Public FTP des Projectes ftp://tuxbox.berlios.de/pub/tuxbox/ 12.) EMail: dbox2-help@gmx.de ______________________________________________________________________ 2. Voraussetzungen ------------------- !! ACHTUNG !! Um die dbox in den Debugmodus zu bringen braucht man den Inhalt des Flash Filesystems auf dieser Soft liegen Copyright Rechte von Diwersen Firmen (SUN,BetaResearch, .... ) Daher ist das Bereitstellen dieser Soft im Internet natürlich Verboten. Die Punkte 8 und 9 beschreiben wie ihr die Dateien die ihr aus dem Flash Filesystem braucht , rausbekommt . Zuerst mal ein paar allgemeine Sachen, die immer wieder gefragt werden. * Die dbox und euren PC muesst ihr mit einem Crossover Kabel verbinden. Crossover => 1 - 3,2 - 6,3 - 1,4 - 4,5 - 5, 6 - 2,7 - 7,8 - 8 * Die dbox kann natuerlich auch Mittels einem normalen Hub (der Hub muss fuer 10mbit ausgelegt sein, die dbox kann nicht 100mbit) mit eurem Rechner verbunden werden, ACHTUNG hier keine Crossover Kabel verwenden! * Wenn ihr nur an der dbox ein Nullmodem Kabel eingesteckt habt (und nicht am PC) kann die dbox nicht booten, und bleibt 'haengen' --> also Nullmodem Kabel entweder an dbox UND PC oder ganz weg: * Als IP Adressen fuer eure dbox und euren Rechner verwendet ihr am besten den Kreis 192.168.1.X (zB: dbox --> 192.168.1.10 , Rechner --> 192.168.1.1) Netmask 255.255.255.0 1.) Ein installiertes Linux. Wer bis jetzt noch kein Linux drauf hat, sollte sich zuerst mal z.B. eine SuSE oder eine andere Distribution holen und damit vertraut machen. 2.) Die Verzeichnisse /dbox und /tftpboot einrichten. --> mkdir /dbox --> mkdir /tftpboot 3.) Bootpd oder Dhcpd Hierueber erhaelt der Bootloader der Box (und spaeter der Linux- Kernel) eine IP-Adresse. Ausserdem wird ihm damit mitgeteilt, welche Datei er booten soll. Beispiel /etc/bootptab: ------------------------------------------------------------------------- dbox:bf=/tftpboot/os:ha=:ip=: sa= ------------------------------------------------------------------------- Die Mac-Adresse der Box steht hinten auf einem Aufkleber (6 Hex-Byte, durch - oder : getrennt). Die muesst ihr ohne - und : bei ha= einsetzen. Beispiel /etc/dhcpd.conf: ------------------------------------------------------------------------- subnet 192.168.1.0 netmask 255.255.255.0 { } host dbox { fixed-address ; hardware ethernet ; allow bootp; server-name <"IP-DES-LINUX-RECHNERS">; filename "/tftpboot/os"; } ------------------------------------------------------------------------- Der 'server-name' wird nur als string angenommen, unbedingt mit "" versehen. Jetzt nur noch darauf achten, dass bootpd oder dhcpd auch gestartet wird. Wenn ihr dhcp*.i386.rpm erst jetzt installiert habt, muesst ihr noch mit --> touch /var/stat/dhcp/dhcpd.leases das file anlegen (sonst funzt dhcp nicht). bootpd startet man vielfach ueber die /etc/inetd.conf, dhcpd ueber ein passendes Script in /etc/rc.d/init.d, - je nach Distribution. Bei bootpd sieht der Eintrag in /etc/inetd.conf meisstens so aus: bootps dgram udp wait root /usr/sbin/tcpd bootpd -d4 -c /tftpboot 4.) /etc/hosts Jetzt tragt ihr die Box in die /etc/hosts ein: dbox 5.) RARP Hierueber bekommt der BR-Kernel seine IP-Adresse. Macht einfach diese Eingabe: --> rarp -s dbox ACHTUNG: entweder ihr schreibt dieses Komando in /etc/rc.d/rc.local oder ihr gebt es nach jedem Neustart des Rechners wieder ein. Einfach mit 'rarp --list' ueberpruefen. 6.) tftpboot Hierfuer muesst ihr den tftpd installiert haben. Dieser wird ueber die /etc/inetd.conf gestartet, der Eintrag sollte etwa so aussehen: tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s tftpboot 7.) nfs Ausserdem wird zum Starten ein NFS-Server benoetigt. Dieser sollte bei den meistens Distris schon installiert sein. Nur noch folgenden Eintrag in die /etc/exports einfuegen: /dbox dbox(rw,no_root_squash) 8.) bootkernel Da der Bootloader der dbox nur einen signierten Kernel bootet , müsst ihr euch diesen besorgen . Dafür müsst ihr eine dbox mit Software Version 1.32 haben an diese box müsst ihr mit geeigneten Sockeln einen externen Flasher an die Flash-Rams Andocken , mit dem ihr ein RAW Image macht , aus diesem Image könnt ihr den 1.32 Kernel extraihren , den ihr dann als /tftpboot/os ablegt. noch chmod -R 777 /tftpboot machen 9.) tuner.so , etc .. Nun müsst ihr eure dox auf version 1.5 Updaten Danach müsst ihr das erste mahl übers Netzt den extraihrten Kernel booten . Dafür muss alles laufen /etc/rc.d/init.d/nfs stop / start (nfs) /etc/rc.d/init.d/dhcpd stop / start (dhcpd) killall -HUP inetd (bootpd und tftpd) dbox per Krosskabel an den Rechner anschliessen nicht vergessen . Die Box sollte jetzt bei "Lade..." stehen bleiben. Wenn Sie "Starte Vxxx" anzeigt ist irgendwas schiefgelaufen, kontrolliert dann nochmal oben die Schritte. Einfach 'tail -f /var/log/messages' eintippen und die letzten Aktionen kontrollieren. Wenn ihr rsh dbox help eingebt sollte ein kleiner Hilfetext erscheinen. Ansonsten nochmal alles kontrollieren. die datei cpR.class (http://dbox.fqdn.org/cpR.class) in /dbox/ kopieren dann rsh dbox mount :/dbox /lost+found rsh dbox setenv CLASSPATH /usr/siege/lib/siege.jar:/usr/siege/lib/junior.jar:.:/class:/lost+found rsh dbox setenv PATH /root/platform/bin:/root/bin:/usr/bin:/usr/siege/bin:/mnt/bin rsh dbox setenv TZ MET-01METDST-02,J84,J302 rsh dbox setenv LD_LIBRARY_PATH /root/platform/lib:/root/lib:/usr/lib rsh dbox setenv SIEGEHOME /usr/siege rsh dbox arun siegep cpR / /lost+found eingeben. Das kopieren dauert 5 Min . Jetzt habt ihr den Inhalt des Flash Filesystems eurer dbox in /dbox/ auf eurem NFS Server liegen Jetzt ersetzt ihr /dbox/root/platform/drv/tuner.so mit tuner.so aus http://dbox2.elxsi.de/files/flash-1.2.tar.gz 10.) chmod -R 777 /dbox 11.) Zum Schluss natuerlich nocheinmal konrollieren, ob alles gestartet wurde /etc/rc.d/init.d/nfs stop / start (nfs) /etc/rc.d/init.d/dhcpd stop / start (dhcpd) killall -HUP inetd (bootpd und tftpd) ______________________________________________________________________ 3. SAGEM oder NOKIA Es gibt zur zeit 2 Verschieden Hersteller von der DBOX2 Nokia und Sagem , und diese noch in verschieden versionen was die Austatung des Flash Rams betrifft. Folgende dboxen werden unterstützt NOKIA mit 2* INTEL 32 Mbit Flash beschriftung (28F320C3) SAGEM mit 1* INTEL 64 Mbit Flash beschriftung (28F640J3) Fast unterstützt sind NOKIA mit am29dl323 , da kommt balt nen update für tuner.so Wer eine SAGEM mit 2* INTEL 32 Mbit Flash ist zz aufgeschmissen , sollte aber mal im irc-netz channel #dbox2 sein Problem erleutern , vieleicht findet sich dann eine Lösung. Wer garnicht weiss wie so ein Flashram aussieht kann sich mal das Bild hier ankuken http://www.tuxbox.org/sagem/sagem-connect.jpg (INTEL 64 Mbit FLASH in SAGEM BOX) ______________________________________________________________________ 4. Die Prozedur --------------- 1.) Verbindet die Box via Netzwerk mit dem Linux-Rechner. Am Besten klemmt ihr die Box auch gleich via Nullmodemkabel an ein Terminalprogramm (Einstellung: 57600, 8N1, Kein Protokoll/Handshaking). 2.) Box in den Strom stecken 3.) Die Box sollte jetzt bei "Lade..." stehen bleiben. Wenn Sie "Starte Vxxx" anzeigt ist irgendwas schiefgelaufen, kontrolliert dann nochmal oben die Schritte. Einfach 'tail -f /var/log/messages' eintippen und die letzten Aktionen kontrollieren. 4.) Wenn ihr rsh dbox help eingebt sollte ein kleiner Hilfetext erscheinen. Ansonsten nochmal alles kontrollieren. 5.) Box aufschrauben. I. ) NOKIA DBOX Fuer die hinteren Schrauben geht ein normaler Torx T-10. Fuer die seitlichen Schrauben braucht ihr theoretisch einen Spezial-Torx. Es geht aber auch anders. :-) Wen die Garantie nicht interessiert, fuer den gehen folgende Moeglichkeiten: a) Die Schrauben einfach mit einer Zange rausdrehen b) einen Phasenpruefer verkantet ansetzen und damit die Schrauben rausholen c) es soll auch mit Uhrmacherschraubenziehern gehen b) die Nippel in der Mitte lassen sich wohl auch rausbrechen. Danach geht das Schrauben dann auch einfacher. Wer lieber die Box nochmal unbeschaedigt zu kriegen will, kann folgendes probieren: a) passenden Schraubenzieher besorgen. Gibts bei verschiedenen Spezial- Geschaeften, ist der gleiche wie bei der DBox1. Es gibt bei Westfalia (www.westfalia.de) ein 100 Teiliges Spezial Bit Set für 29.90 DM (Art. Nr. 102269) b) Einen normalen Torx nehmen, und in die Mitte ein passendes Loch bohren. Die Box hat zwar eigentlich nur 5 statt 6 Ecken, aber es soll trotzdem gehen. c) Einem Phasenpruefer einen Schlitz in die Mitte feilen. Damit gehts dann wenn man vorsichtig ist auch ohne Spuren. II.) SAGEM DBOX Alles nur Normale TORX :) das sollte kein problem sein 6.) Jumper setzen I.) NOKIA DBOX Jetzt die Box wieder vom Strom trennen, und die Jumper XH4 und XH6 bruecken. Bei den meisten neueren Boxen sind hier leider keine Jumper mehr eingeloetet, sondern nur noch Loetpunkte. Diese beiden Loetpunkte einfach mit einem Kabel verbinden (Kabel anloeten). II.) NOKIA MIT AMD FLASH (am29dl323) Nur Jumper xh3 setzen III.) SAGEM DBOX Die beiden Pins des einen INTEL FLASH RAMS wie auf dem Bild beschrieben verbinden . (http://www.tuxbox.org/sagem/sagem-connect.jpg) Tipp : Wer nicht löten will , einfach 2 Schaschlick Spiesse in die beiden Löcher stecken , und sie mit nem stück Draht verbinden. 7.) Die Box wieder einstecken, und warten bis sie das Lade... anzeigt. 8.) rsh dbox setenv PATH /root/platform/bin:/root/bin:/usr/bin:/usr/siege/bin:/mnt/bin rsh dbox setenv TZ MET-01METDST-02,J84,J302 rsh dbox setenv LD_LIBRARY_PATH /root/platform/lib:/root/lib:/usr/lib rsh dbox setenv SIEGEHOME /usr/siege rsh dbox setenv CLASSPATH /usr/siege/lib/siege.jar:/usr/siege/lib/junior.jar:.:/class:/lost+found/class rsh dbox umount / rsh dbox mount :/dbox / rsh dbox arun initactor -v -V -i 4 Da kommen etliche Fehlermeldungen , das ist normal :) Euer Terminalprogramm beobachten (Einstellung: 57600, 8N1,Kein Protokoll/Handshaking) Dort sollte am schluss "Done!" stehen. 9.) Die Box vom Strom trennen und die Jumper entfernen. (WICHTIG !! Nur wenn die Jumper nicht gesetzt sind ist der Bootloader geschützt und kann von euch durch irgentwelche Spielerein nicht zerstört werden. ) 10.) So, eure Box sollte jetzt im Debug-Mode sein. Erkennen koennt ihr das daran, dass die Box beim Starten jetzt einige Infos ueber den Bootloader ausgibt. ______________________________________________________________________ 5. PPC Boot ----------- 1.) ppcboot-0.6.4 besorgen (ftp://ftp.denx.de/pub/ppcboot/), und am linuxrechner nach ..../dbox_ppcboot entpacken (legt ein neues Verzeichnis an - ppcboot-0.6.4/). 2.) das diff fuer ppcboot-0.6.4 von http://dbox2.elxsi.de holen, und nach ..../dbox_ppcboot/ppcboot-0.6.4/ entpacken. 3.) in ..../dbox_ppcboot/ppcboot-0.6.4/ --> patch -p1 bd->bi_baudrate=9600; /* kann mir wer erklären was das soll? */ autoboot: --------- #if 0 #define CONFIG_BOOTDELAY -1 /* autoboot disabled */ #else #define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ #endif bootcommand: ----------- #define CONFIG_BOOTCOMMAND "bootp 100000 /tftpboot/dbox-linux; bootm 100000" 'dbox-linux' ist in dem Falle der Namen des Linuxkernels, den ihr booten wollt. bootargs: --------- #define CONFIG_BOOTARGS "root=/dev/nfs rw nfsroot=10.0.0.1: /opt/hardhat/devkit/ppc/8xx/target" Hier muesst ihr natuerlich die IP gegen die eures Rechners austauschen, und in /etc/exports das Verzeichnis '/opt/hardhat/devkit/ppc/8xx/target' hinzufuegen (mit den selben Optionen wie /dbox). Die rpm's von mvista haben '/opt/hardhat/devkit/ppc/8xx/target' als Pfad fuer das Target !!!! 6.) Nur SAGEM .../dbox_ppcboot/ppcboot-0.6.4/dbox/flash.c editieren in zeile 36 "return 8 * 1024 * 1024;" einfügen 7.) in .../dbox_ppcboot/ppcboot-0.6.4/ --> make dbox_config && make aufrufen. ACHTUNG: Ueberprueft ob '/opt/hardhat/devkit/ppc/8xx/bin' in $PATH steht (sonst funzt der Cross Kompiler nicht). 8.) das so entstandene ppcboot nach /tftpboot/ppcboot kopieren. 9.) In /etc/bootptab \ /etc/dhcpd.conf das den Namen des Bootfiles aendern. os --> ppcboot einfacher waere natuerlich nur den Namen des files zu aender (/tftpboot/os loeschen, .../dbox_ppcboot/ppcboot-0.6.4/ppcboot nach /tftpboot/ kopieren und in /tftpboot/os umbenennen, aber Hand auf Herz, wer will's schon einfach haben ;-) 10.) bootpd \ dhcp neu starten --> killall -HUP inetd --> /etc/rc.d/init.d/dhcpd stop/start (bei RedHat) ______________________________________________________________________ 6. Linux Kernel --------------- 1.) Besorgt euch den 2.4er Kernel 'www.kernel.org' (nicht den prerelease!), von 'http://dbox.fqdn.org/' aus dem Unterverzeichnis /kernel/2.4.0-bitkeeper/ den grossen Patch fuer den Kernel 'linux-2.4.0-release-to-bk-dbox.diff.bz2' und das config-file. 2.) Kernel entpacken, Patch einspielen und das config-file nach /usr/src/linux/.config kopieren. In /usr/src/linux/Makefile die Variablen fuer ARCH und CROSS_COMPILE editieren. Die originale Zeile mit ARCH :== ... auskomentieren und eine neue mit ARCH := ppc einfuegen. Sucht den Eintrag mit 'CROSS_COMPILE = ' und fuegt danach 'ppc_8xx-' ein. Der Eintrag muss also genau so aussehen 'CROSS_COMPILE = ppc_8xx-'. 3.) In /usr/src/linux 'make xconfig' ausfuehren, dann 'make dep', 'make clean' und 'make zImage' ausfuehren. ( wer auf der Konsole arbeitet, macht natuerlich 'make menuconfig'). Wenn ihr gegenueber den Standardeistellungen nichts aendern wollt, braucht ihr 'make xconfig' natuerlich nicht mehr aufrufen, müsst dann aber noch selber nen symlink anlegen 'ln -s include/asm-ppc/ include/asm' dann nur noch 'make dep', 'make clean' und 'make zImage' ausfueren. 4.) Der so enstandene Kernel muss noch ppcboot kompatibel gemacht werden. Das geht am einfachsten mit dem Script mkimg , das in .../dbox_ppcboot/ppcboot-0.6.4/ liegt. Einfach mal in das Script reinkuken, die Pfade anpassen und ausfuehren. Bei Problemen --> 'chmod ugo+x mkimg' Dann hat man einen Kernel, den ppcboot booten kann. 5.) Es gibt auf 'dbox2.elxsi.de' unter Software einen fertig kompelierten Kernel (dbox-2.4.0.tgz) und auch einen Kompilieren Kernel 2.4.1. 6.) Es gibt inzwischen auch Patches für Kernel 2.4.1 auf ftp://tuxbox.berlios.de/pub/tuxbox/ Den könnt ihr genau so wie den 2.4.0 anwenden. ______________________________________________________________________ 7. Verwendete RPM's ------------------- dhcp-2.0-5.i386.rpm bootparamd-0.10-24.i386.rpm besorgt euch von ftp://ftp.mvista.com/pub/cdimages/CDK/1.2/ das iso-CD image (powerpc_000808.cdimage). Mit 'Adaptec Easy CD Creator' oder einem aehnlichen tool brennt ihr dann eure CD. CD einlegen und aus dem Verzeichnis /mnt/cdrom/ppc_8xx/RPMS alle *.noarch.rpm und *.i386.rpm installieren. Wenn ihr Probleme mit dem hll-ppc_8xx_busybox...rpm habt, einfach gesondert einspielen und nach /bin/ kopieren. schaut nach, ob /opt/hardhat/devkit/ppc/8xx/bin in eurer PATH Umgebung ist. ______________________________________________________________________ 8. Bug´s SUSE 7.0 und RED-HAT 7.0 , der DHCP Server überträgt den link zum kernel nicht richtig im tcpdump sieht mann sowas wie 'file "/tftpboo" ' anstatt ' file "/tftpboot/os" ' . Keine Ahnug warum das so ist , und warum das nicht bei allen ist Einfach DHCP neu compilieren , dann geht´s . ( am besten mit dhcp-2.0pl5) ______________________________________________________________________