# PNX8950-Flashbuilder by CS # Grüße und ein großes Danke an die Community des Forums www.mikrocontroller.net # -> bitte weitermachen :-) # # WARNUNG -> die Verwendung dieser Scriptsammlung geschieht auf eigene Gefahr !!! # -> dies gilt auch für die Verwendung der entstandenen Files usw. # -> Scripte sind grundlegend getestet, aber definitiv im BETA Stadium # # PNX8950-Flashbuilder ist eine Sammlung von Scripten, um für die von der Fa. Pollin vertriebenen # DVB-Boards (PNX8950) ein Flashimage zu estellen. Dieses kann über den Original-Flashupdater # in das NAND geflasht werden. Das Flashimage landet beim Boot des Boards an der # RAM Adresse 0x80100000 , und erhält die Möglichkeit die Original-Firmware bzw. das # Medion-/More.TV-Image wieder einzuspielen (siehe dazu Thread im Forum). # # Inhalt des Flashimages: # u-boot Version 2008.10 (very-very-dirty Dev-Versin halt) # Rescue-Image (buildroot Version 2.6.21.3) # Linux-Kernel (Version 2.6.21.3) # # Bootmöglichkeiten (über u-boot Console) # Rescue-Image 'run load_rescue' # Linux-Image 'run load_linux' # hierbei wird der Kernel aus dem NAND geladen, rootfs ist /dev/sda2 # Linux-Image 'run load_sata' # hierbei wird der Kernel von /dev/sda1 geladen, rootfs ist /dev/sda2 # # Derzeit wird das NAND unter u-boot, im Rescue-Image und Linux-Image nicht unterstützt # Mit dem u-boot ist auch nur ein einmaliger Zugriff (außer ext2ls) auf die SATA-HDD möglich # rootfs liegt fest auf /dev/sda2, wäre ein TODO, falls USB-Stick parallel beim Boot des Boards # angesteckt ist (dann könnte plötzlich der Stick auf sdaX liegen) # # Partitionen der Board-HDD # /dev/sda1 (ext2, für uImage, zum Boot aus u-boot heraus) # /dev/sda2 (ext2, rootfs habe derzeit ca. 4 GB (4096 MB)) # /dev/sda3 (ext2, derzeit optional) # # Es steht jedem freie, die Scripte anzupassen, zu verbessern oder auch zu erweitertn. Allerdings wäre # es nett, wenn diese dann allen über das Forum www.mikrocontroller.net zur Verfügung gestellt werden. # Hinweise Ich habe mir Mühe gegeben, soviel abzufangen, wie es geht - aber, es wird immer eine Kleinigkeit fehlen :-) Achtet bitte auf die Filesize von WinCe1.nb0, bei Auslieferung ist dieses ca. 25 MB groß- dies wurde ohne Probleme getestet. Insofern man das NAND nicht überbelagert und entsprechend Platz am Ende des NANDs verbleibt, sollte es kein Probleme geben -> ACHTUNG am Ende des NANDs liegen div. Infos, die von der Original-Firmware, aber auch von der Medio/More.TV-Firmaware gebraucht werden (wenn man zurück will) Vermutlich wäre eine Filesize von max. 50 MB okay (ungetestet!!!). Mein betagter Linux-Rechner mit 1,6 GHz benötigt für den Grundaufbau weniger als 20 Minuten Sollte das prebuilded Rescue-Image (pnx8950-rescue-image) ausgetauscht werden, so darf dies im Moment nicht größer als ca. 14 MB sein, sonst wird es durch das Linux-Image (am Ende) überschrieben - Überlappung! # Voraussetzungen ELDK muss unter /opt/eldk installiert sein, evtl. Link anlegen (getestet Version 4.1) Für die Erstinstallation - Internetzugang, für den Download der Sourcen Da ich mich mit den global Vars (export) nicht so auskennen, hier mal die relevanten (soweit mir bekannt) ARCH=mips CROSS_COMPILE=mips_4KCle- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/eldk/usr/bin:/opt/eldk/bin: /opt/eldk/mips_4KCle/lib/ldscripts:/opt/eldk/usr/bin:/opt/eldk/bin:/opt/eldk/mips_4KCle/lib/ldscripts' # was kommt am Ende raus Wenn alles gut läuft, erhaltet ihr folgende Files(/Strukturen) ./PNX8950-Flashbuilder/bootloader Files für den USB-Stick, welche normal über den Original-Flashupdater geflasht werden können ./PNX8950-Flashbuilder/hdd_board/sda1 hier liegt das uImage (kernel) falls u-boot von /dev/sda1 booten soll (dann muss zum Testen eines neuen Kernels nicht immer das NAND geflasht werden) ./PNX8950-Flashbuilder/hdd_board/sda2 Die Strukturen und Files für die SATA-HDD (/dev/sda2). Dabei wurden die restlichen Partitionen nandfs.user, nandfs.config und nandfs.profile direkt im rootfs mit eingebunden. ./PNX8950-Flashbuilder/PollinHDD.tar.gz das gepackte Verzeichnis ./hdd_board/sda2 für den einfachen Transfer zur Board-HDD per FTP ./PNX8950-Flashbuilder/logbuch.log Ein kleines Logfile, mit was, wann, wie, warum usw. Tipp: Auf einer weiteren Console können mit tail -f PFAD_ZU_logbuch.log die Meldungen ausgelesen werden Ansonsten wäre das File die erste Anlaufstelle, wenn etwas nicht geht (neben den Consolenausgaben) # wie sieht der Ablauf grob aus ./config anpassen (für Leute, die wissen, was sie machen, sonst default Config beibehalten) Download der Sourcen -> u-boot, linux, pollinux Entpacken, Patch-Files einspielen, Kompilieren von u-boot und linux Dummy-Container (WinCe1.nb0) erstellen bootbare u-boot Images (mkimage) für Rescue-/Linux-Image erstellen u-boot, Rescue- und Linux-Image in den Dummy-Container schieben Entpacken pollinux, Patch-Files einspielen Einbinden der Partitionen nandfs.user/.config/.profile ins rootfs Kopieren nach ./hdd_board/sda2 -> alles was unter ./hdd_board/sda2 liegt, muss später 1:1 auf die Board-Sata-HDD kopiert werden (besser über PollinHDD.tar.gz gehen - siehe unten) aus dem Verzeichnis ./replaceAdd/linux/ werden alle Files 1:1 nach ./hdd_board/sda2 kopieren, überschreiben (Struktur beachten) # wenn alles sauber durchgelaufen ist Inhalt aus ./bootloader auf USB-Stick packen und Board flashen (siehe Forum) - nur mit Original Flashupdater getestet Loadadresse beim/nach Boot (RAM) 0x80100000 (vielen dürfte die Adresse bekannt sein) Board-HDD muss der Tabelle oben partitioniert werden Inhalt aus ./hdd_board/sda2 1:1 auf die "zukünftige" Board-Festplatte kopieren /dev/sda2 entweder Board-HDD an den Build-PC anschließen, mounten und kopieren oder Rescue-Image auf dem Board starten, Board-HDD mounten, per mc ssh-Zugriff herstellen (bei der Default-Config des Flashbuilders) Bootprozess von u-boot unterbrechen und 'run load_rescue' zum Boot des Rescue-Images eingeben Board-HDD kann mit fdisk über das Rescue-Image partitioniert werden Das Dateisystem läßt sich mittel mke2fs aufbügeln 'mke2fs /dev/sda2' Verzeichnis anlegen 'mkdir /tmp/sda2' /dev/sda2 der Borad-HDD nach /tmp/sda2 mounten 'mount /dev/sda2 /tmp/sda2' die IP bezieht das Board per dhcp, auf der Console wird nach dem Boot die IP ausgegeben per FTP mit dem Board verbinden (user=root pass=root) <- ich weiß, aber es ist ein Rescue-Image :-) PollinHDD.tar.gz per FTP in das Verzeichnis /tmp/sda2 übertragen Archiv entpacken (ihr befinden euch per Console in /tmp/sda2/) 'gunzip PollinHDD.tar.gz' 'busybox tar xf PollinHDD.tar' Archiv kann um Platz zu sparen gelöscht werden (per FTP, oder mit 'rm PollinHDD.tar.gz') Board neu starten (.config des Flashbuilders beachten, falls der Autoboot auf Rescue gestellt wurde) gibt bestimmt noch andere Wege :-) # nun aber zum eingemachten PNX8950-Flashbuilder sollte in /opt entpackt worden sein, okay ihr lest ja bereits die README ./config anpassen (für Leute, die wissen, was sie machen) - sollte soweit alles selbsterklärend sein (hoffe ich) ./build.sh source führt die Erstinstallation/Erstinitialisierung durch (Voraussetzung für alles) ./build.sh bootloader Voraussetzung: ./build.sh source ist sauber durchlaufen, Bootloader neu aufbauen Anschließend sind frische Files in ./bootloader zum Flashen über den Original-Flashupdater ./build.sh linux Voraussetzung: ./build.sh source ist sauber durchlaufen, Linux-Image und Board-HDD-Abbild neu aufbauen Anschließend sind frische Files in ./bootloader zum Flashen über den Original-Flashupdater, zudem liegt unter ./hdd_board ein frisches Board-HDD-Abbild ./build.sh distclean setzt alles wieder auf Null, die bereits heruntergeladenen Sourcen bleiben erhalten, danach ist ein ./build.sh source fällig # Rescue-Image Console für u-boot auf J2 mit 38400n8 Console für Rescue-Image auf J33 mit 9600n8 (keine Ahnung, wo sich das Einstellen läßt, aber ausreichend) Dienste sshd proftpd Login auf allen Diensten user = root pass = root # Linux-Image Console für u-boot auf J2 mit 38400n8 Console für Linux-Image auf J33 mit 38400n8 Dienste keine Ahnug, soweit bin ich noch nicht Login derzeit nur direkt über J33 kein sshd kein ftpd Hinweis Console gibt es vor/nach (?) S02devices manuelles Durchlaufen aller init-Scripte fördert die meisten Devices zu Tage (u.a. DVB, Audio, usw.) ein paar Sachen sind in den init-Skripten auskommentiert, bringen das Board zum stillstand u.a. S50starttm siehe Patches unter ./workdir/dPatch/pollin_pnx8950_pollinux_* was noch nicht auskommentiert ist, aber auch einen Stillstand verursacht, war entweder S80rootapp und/oder S95stbMainApp (weiß es nicht mehr) # Schlusswort An dieser Stelle nochmal vielen Dank an Mitglieder des Forums www.mikrocontroller.net, im speziellen, an die Leute, die die Entwicklung soweit voran getrieben haben. Und - die Skripte wurden von mir grundlegend getestet, aber alles läßt sich nicht abfangen, auch kann ich nicht alle möglichen Szenarien durchtesten - habt also ein wenig nachsehen. Vielleicht ist das auch für den ein oder anderen ein Anreiz, sich mit der Materie zu beschäftigen. Wer der Meinung ist "alles schei*e", kein Problem, 'rm -R /opt/PNX8950-Flashbuilder' und ihr seid zumindest diese Sorgen los :-)