# PNX8950-Flashbuilder by CS
# Gre und ein groes Danke an die Community des Forums www.mikrocontroller.net
# -> bitte weitermachen :-)
#
# WARNUNG -> die Verwendung dieser Scriptsammlung geschieht auf eigene Gefahr !!!
#         -> dies gilt auch fr die Verwendung der entstandenen Files usw.
#         -> Scripte sind grundlegend getestet, aber definitiv im BETA Stadium
#
# PNX8950-Flashbuilder ist eine Sammlung von Scripten, um fr 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 erhlt die Mglichkeit 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)
#
# Bootmglichkeiten (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 untersttzt
# Mit dem u-boot ist auch nur ein einmaliger Zugriff (auer ext2ls) auf die SATA-HDD mglich
# rootfs liegt fest auf /dev/sda2, wre ein TODO, falls USB-Stick parallel beim Boot des Boards
# angesteckt ist (dann knnte pltzlich der Stick auf sdaX liegen)
#
# Partitionen der Board-HDD
#	/dev/sda1		(ext2, fr 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 wre
# es nett, wenn diese dann allen ber das Forum www.mikrocontroller.net zur Verfgung gestellt werden.

# Hinweise
	Ich habe mir Mhe 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 zurck will)
	Vermutlich wre eine Filesize von max. 50 MB okay (ungetestet!!!).
	Mein betagter Linux-Rechner mit 1,6 GHz bentigt fr den Grundaufbau weniger als 20 Minuten
	Sollte das prebuilded Rescue-Image (pnx8950-rescue-image) ausgetauscht werden, so darf dies im Moment nicht
	grer 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)
	Fr die Erstinstallation - Internetzugang, fr 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 luft, erhaltet ihr folgende Files(/Strukturen)
	./PNX8950-Flashbuilder/bootloader
		Files fr den USB-Stick, welche normal ber den Original-Flashupdater geflasht werden knnen
	./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 fr 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 fr 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 knnen mit tail -f PFAD_ZU_logbuch.log die Meldungen ausgelesen werden
		Ansonsten wre das File die erste Anlaufstelle, wenn etwas nicht geht (neben den Consolenausgaben)

# wie sieht der Ablauf grob aus
	./config anpassen (fr 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) fr 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 spter 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 drfte die Adresse bekannt sein)
	Board-HDD muss der Tabelle oben partitioniert werden
	Inhalt aus ./hdd_board/sda2 1:1 auf die "zuknftige" Board-Festplatte kopieren /dev/sda2
		entweder Board-HDD an den Build-PC anschlieen, 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 lt sich mittel mke2fs aufbgeln '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 gelscht 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 <g>
	./config anpassen (fr Leute, die wissen, was sie machen) - sollte soweit alles selbsterklrend sein (hoffe ich)
	
	./build.sh source
		fhrt die Erstinstallation/Erstinitialisierung durch (Voraussetzung fr alles)
	./build.sh bootloader
		Voraussetzung: ./build.sh source ist sauber durchlaufen, Bootloader neu aufbauen
		Anschlieend 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
		Anschlieend 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 fllig

# Rescue-Image
	Console fr u-boot auf J2 mit 38400n8
	Console fr Rescue-Image auf J33 mit 9600n8 (keine Ahnung, wo sich das Einstellen lt, aber ausreichend)
	Dienste
		sshd
		proftpd
	Login auf allen Diensten
		user = root
		pass = root
			
# Linux-Image
	Console fr u-boot auf J2 mit 38400n8
	Console fr 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 frdert 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 lt sich nicht abfangen, auch kann ich nicht
	alle mglichen Szenarien durchtesten - habt also ein wenig nachsehen. Vielleicht ist das auch fr den ein oder
	anderen ein Anreiz, sich mit der Materie zu beschftigen.
	Wer der Meinung ist "alles schei*e", kein Problem, 'rm -R /opt/PNX8950-Flashbuilder' und ihr seid zumindest diese
	Sorgen los :-)
