DBox-Debug-Mode-HOWTO von dridders v1.00, 30.12.00 changelog: v1.02, 15.01.01 lexxi v1.03, 22.01.01 lexxi (lexxi@gmx.ch) 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 (und man somit einen Linux-Kernel auf der Box starten kann). Desweiteren wird erklaert, wie man PPCBoot (den eigentlichen Kernelloader) 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. Die Prozedur 4. PPC Boot 5. Der Linux Kernel 6. Verwendete RPM's 7. Sagem Boxen ______________________________________________________________________ 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://dbox.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://64.65.58.118/hgw/cgi-bin/Ultimate.cgi - Hier auf dem Board gibts eine Seite zur Software-Entwicklung fuer die Box. 4.) http://www.mvista.com - Hier bekommt ihr das CDK, das bei der Entwicklung der Soft fuer die Box hilft. 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/sagem/ 9.) EMail: dbox2-help@gmx.de 2. Voraussetzungen ------------------- 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 der 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). Bei bootpd geht dies vielfach ueber die /etc/inetd.conf bei dhcpd ueber ein passendes Script in /etc/rc.d/init.d. Je nach Distribution. Bei bootpd sieht der Eintrag meistens 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.) minflsh.tar.gz Besorgt euch dieses File: minflsh.tar.gz und entpackt es. Den Inhalt des Verzeichnisses minflsh, dass jetzt entstanden ist verschiebt ihr nach /dbox. Die Datei /dbox/kernel/os kopiert ihr dann nach /tftpboot. Jetzt muesst ihr noch die Datei /dbox/do bearbeiten. In der ersten Zeile fuegt #!/bin/bash hinzu, und in der Zeile umount -F / muesst ihr das -F entfernen. 9.) chmod -R 777 /dbox /tftpboot 3. 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. 4.) Wenn ihr rsh dbox help eingebt sollte ein kleiner Hilfetext erscheinen. Ansonsten nochmal alles kontrollieren. 5.) Box aufschrauben. 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. 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. 6.) 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). 7.) Die Box wieder einstecken, und warten bis sie das Lade... anzeigt. 8.) Folgendes eingeben: /dbox/do dbox :/dbox und dann das Terminal-Programm beobachten. Einige haben berichtet, dass sich das '/dbox/do' - Script nicht richtig ausfueren laesst. Zum Ersten hilft hier das Einfuegen von '#!/bin/bash' am Anfang des Scripts. Solltet ihr weiterhin Probleme haben, fuert die Befehle einfach einzelln aus. 9.) Die Box vom Strom trennen und die Jumper entfernen. 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. 11.) besorgt euch ppcboot und den linuxkernel und den ganzen anderen Kram, und setzt diese Howto fort. :-) 4. 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://dbox.elxsi.de holen, und nach ..../dbox_ppcboot/ppcboot-0.6.4/ entpacken. 3.) in ..../dbox_ppcboot/ppcboot-0.6.4/ --> patch -p1 baudrate: #define CONFIG_BAUDRATE 9600 ACHTUNG: ihr muesst in eurem Terminalprogramm auch die Baudrate veraendern!!!! --> autoboot: #if 0 #define CONFIG_BOOTDELAY -1 /* autoboot disabled */ #else #define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ #endif --> bootcomand: #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.) in .../dbox_ppcboot/ppcboot-0.6.4/ --> make dbox && make aufrufen. ACHTUNG: Ueberprueft ob '/opt/hardhat/devkit/ppc/8xx/bin' in $PATH steht (sonst funzt der Cross Kompiler nicht). 7.) das so entstandene ppcboot nach /tftpboot/ppcboot kopieren. 8.) 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 ;-) 9.) bootbd \ dhcp neu starten --> killall -HUP inetd --> /etc/rc.d/init.d/dhcpd stop/start (bei RedHat) 5. 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. 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, gleich 'make dep', 'make clean' und 'make zImage' ausfueren. 4.) Es gibt auf 'dbox2.elxsi.de' unter Software einen fertig kompelierten Kernel (dbox-2.4.0.tgz) 6. 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. 7. Sagem Boxen -------------- 1.) Auf http://dbox2.elxsi.de gibt es ein eigenes File für Sagem Boxen (flash-1.2.tar.gz). Dies geht derzeit (22.01.01) nur fuer Sagem - Boxen mit STRATA 64 mbit Speichern, ACHTUNG AUFPASSEN !!!!! Bitte Berichte von Sagem-Boxen-Besitzern.