<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.tuxbox-neutrino.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dixidix</id>
	<title>TuxBoxWIKI - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tuxbox-neutrino.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dixidix"/>
	<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/wiki/Spezial:Beitr%C3%A4ge/Dixidix"/>
	<updated>2026-04-22T17:38:33Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Vorlage:Neutrino-HD-Info&amp;diff=17044</id>
		<title>Vorlage:Neutrino-HD-Info</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Vorlage:Neutrino-HD-Info&amp;diff=17044"/>
		<updated>2015-01-10T13:11:10Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Leichte Textanpassungen, Verkürzungen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine freie unter [[GPL]]-Lizenz stehende [[GUI|Benutzeroberfläche]] für SetTop-Boxen. Neutrino-HD ist ein [[Fork]] des ursprünglich vom [[DBox2 Software Projekt|Tuxbox]]-Projekt für die [[dBox2]] entwickeltem [[Neutrino]] und wurde auf Geräte mit [[HDTV]]-Unterstützung portiert und wird speziell dafür weiterentwickelt.&lt;br /&gt;
&lt;br /&gt;
Diese [[GUI]] wird namentlich und werksseitig auf Receivern von [[CST]] eingesetzt und zusammen mit Community-Enwicklern weiter entwickelt. Von der [[Tuxbox]]-Community wurde die [[GUI]] auf verschiedene andere Boxtypen portiert und wird dort unter dem Namen [[Neutrino-MP]] bzw. namentlich daraus abgeleiteten Community-[[Fork]]s geführt und ist unter anderem auf SH4-basierten [[Spark]]-Boxen des Herstellers [http://www.fulansoft.com Fulan], die [[TripleDragon]], auf einigen [http://www.azbox.eu AZbox]-Receiver Serien und ist ansatzweise auf [[PC]] und auf der [http://de.wikipedia.org/wiki/Raspberry_Pi Raspberry Pi-Plattform] lauffähig. &lt;br /&gt;
Erwähnt sei noch ein weiteres Derivat namens [[NeutrinoHD2]]. Benutzern von [[NeutrinoHD2]] dürfte die alternativen Optik auffallen wobei diese Variante auf einen deutlich älteren Softwarestand basiert und nur teilweise oder garnicht auf den aktuellen Stand gebracht bzw. alternativ angepasst. Einige Funktionen dürften deshalb in diesem Artikel nur begrenzt oder nicht zutreffen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #999999; padding: 8px 10px 11px 10px; background-color:white;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
* [http://www.dbox2-tuning.net/ulc/index.php?action=downloadfile&amp;amp;filename=NeutrinoHD_Quickstart_1.0.pdf&amp;amp;directory=Doku&amp;amp;‎ Quickstart Anleitung zum Download als PDF]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Einstellungen:IDE-MMC-HDD-Setup&amp;diff=15901</id>
		<title>Neutrino:Einstellungen:IDE-MMC-HDD-Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Einstellungen:IDE-MMC-HDD-Setup&amp;diff=15901"/>
		<updated>2012-06-25T15:52:09Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Hinweis zum Modemport&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
{{Neutrino_sidebar}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach jahrelangen &amp;quot;Übergangslösungen&amp;quot; gibt es nun für die [[Neutrino]]-GUI eine einheitliche Möglichkeit, eingebundene Laufwerke, wie z.B [[HDD|Festplatten]] oder eine [[SD-Karte|MMC-Karte]] komfortabel einzurichten und zu warten. Ziel war es, eine möglichst umfassende aber kompakte und für den Benutzer schnell und unkomplizierte Möglichkeit anzubieten.&lt;br /&gt;
Unterstützt werden bis zu 2 [[HDD|Festplatten]] und 1 [[SD-Karte|MMC]] auf denen jeweils bis zu 4 Partitionen eingerichtet werden können. Das Anlegen einer [[Swap-Partition]] und die Freigabe für [[NFS]] und [[Samba]] (Windows-Freigaben) sind ebenfalls möglich. &lt;br /&gt;
Diese Laufwerksverwaltung, im Folgendem als Menü bezeichnet, nutzt die Funktionalität des Linux-Tools &amp;quot;[[fdisk]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen=&lt;br /&gt;
Vorraussetzung dafür ist natürlich die entsprechende Ausstattung des jeweiligen [[Receiver]]s mit einem passendem [[Hardware:dbox2:IDE-Interface|IDE-Interface]]. Bei der [[hardware:dbox2|dBox2]] wäre dies durch ein nachrüstbares [[Hardware:dbox2:IDE-Interface|IDE-Interface]] zum Anschluß von IDE/SATA-Festplatten oder ein integriertes MMC-Interface als separates Bauteil oder kombiniert mit einem [[Hardware:dbox2:IDE-Interface|IDE-Interface]] der Fall. Images mit Kernel 2.6.x und somit andere Receivertypen, werden derzeit noch nicht unterstützt. &lt;br /&gt;
Ob Dein Image ein Laufwerk-Setup besitzt und auch für [[NFS]] und/oder [[Samba]] gerüstet ist, hängt davon ab, wie du es gebaut hast. Näheres zu den dafür notwendigen Build-Optionen findest du unter [[Tuxbox Entwicklungsumgebung|Entwicklung]]. Die [[Images|Tuxbox-Distributionen]] haben dieses Menü standardmäßig eingebaut. Ein Blick in die [[Neutrino:Service:Image Informationen|Imageinformationen]] gibt ebenfalls Aufschluß:&lt;br /&gt;
[[Bild:Ide imageinfo.jpg|thumb|none|150px|Menü-Version Anzeige]]&lt;br /&gt;
&lt;br /&gt;
=Anmerkung=&lt;br /&gt;
{{request}}&lt;br /&gt;
&lt;br /&gt;
=System=&lt;br /&gt;
Es wäre größtenteils auch möglich auch ohne dieses Menü, seine Laufwerke z.B. über Telnet einzurichten. Man muss nur die entsprechenden Einstellungen und Änderungen an den Startscripten und Systemdateien manuell vornehmen. Deshalb der Vollständigkeit halber einige Erläuterungen über das, was das Menü eigentlich macht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Damit die Laufwerke auch beim Booten so wie sie eingerichtet wurden zur Verfügung stehen, ist die Einrichtung immer mit '''Übernehmen''' ''abzuschließen, denn nur so werden die benötigten Einstellungen dem System (Startscripte, fstab, etc...) mitgeteilt! In der Regel wird der Benutzer beim Schließen des Menüs darauf hingewiesen, falls Änderungen vorgenommen wurden.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startscripte==&lt;br /&gt;
Es gibt einige Startscripte, die das Menü anlegt. &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Es ist nicht ratsam die Startscripte manuell zu verändern bzw. zu löschen, sofern das nicht ein ausdrücklicher Wunsch ist. Diese Scripte sind teilweise verlinkt und es kann vorkommen, dass diese dann nicht mehr richtig funktionieren oder wegen falscher Rechte nicht mehr das machen was sie sollen. Zum Löschen sollte man den Menüpunkt '''[[#Zur.C3.BCcksetzen|Zurücksetzen]]''' verwenden''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===/etc/init.d/06hdd===&lt;br /&gt;
Hier werden die Ladebefehle für fs-Module und [[hdparm]] eingetragen. Das Menü sorgt auch dafür, dass nur die Einträge für Treiber-Module eingetragen werden, die auch benötigt werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo &amp;quot;/etc/init.d/06hdd generated from neutrino ide/mmc/hdd drive-setup&lt;br /&gt;
 13.12.2009 - 22:28:04&lt;br /&gt;
 BETA! 0.4  do not edit!&amp;quot;&lt;br /&gt;
 case $1 in&lt;br /&gt;
 	start)&lt;br /&gt;
 		insmod reiserfs&lt;br /&gt;
 		insmod fat&lt;br /&gt;
 		insmod vfat&lt;br /&gt;
 		insmod jbd&lt;br /&gt;
 		insmod ext3&lt;br /&gt;
 		insmod ext2&lt;br /&gt;
 		insmod xfs&lt;br /&gt;
 		insmod ide-core&lt;br /&gt;
 		insmod dboxide&lt;br /&gt;
 		insmod ide-detect&lt;br /&gt;
 		insmod ide-disk&lt;br /&gt;
 		insmod mmc2&lt;br /&gt;
 		hdparm -S6 -W0 -c1 /dev/ide/host0/bus0/target0/lun0/disc&lt;br /&gt;
 		hdparm -S6 -W0 -c1 /dev/ide/host0/bus0/target1/lun0/disc&lt;br /&gt;
 				;;&lt;br /&gt;
 	stop)&lt;br /&gt;
 				;;&lt;br /&gt;
 esac&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
===/etc/init.d/07mounts===&lt;br /&gt;
hier werden die Mountbefehle abgelegt. &lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo &amp;quot;/etc/init.d/07mounts generated from neutrino ide/mmc/hdd drive-setup&lt;br /&gt;
 13.12.2009 - 22:28:04&lt;br /&gt;
 BETA! 0.4  do not edit!&amp;quot;&lt;br /&gt;
 case $1 in&lt;br /&gt;
 	start)&lt;br /&gt;
 		mount -a&lt;br /&gt;
 		swapon -a&lt;br /&gt;
 		;;&lt;br /&gt;
 	stop)&lt;br /&gt;
 		umount /hdd1&lt;br /&gt;
 		umount /hdd&lt;br /&gt;
 		umount /hdd2&lt;br /&gt;
  		umount /mmc&lt;br /&gt;
 		swapoff -a&lt;br /&gt;
 		;;&lt;br /&gt;
 esac&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
===/etc/init.d/31sambaserver===&lt;br /&gt;
Hier werden die Start und Stop-Befehle für den [[Samba]]server abgelegt. Dieses Script wird nur erzeugt wenn auch [[Samba]] im [[Images|Image]] verfügbar ist.&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # /var/etc/init.d/31sambaserver generated from neutrino ide/mmc/hdd drive-setup&lt;br /&gt;
 # BETA! 1.50  29.03.2010 - 21:01:44&lt;br /&gt;
 &lt;br /&gt;
 case $1 in&lt;br /&gt;
 	start)&lt;br /&gt;
 		if [ -e /var/etc/.sambaserver -a -e /etc/smb.conf ]; then&lt;br /&gt;
  			/bin/nmbd -D&lt;br /&gt;
  			/bin/smbd -D -a -s /etc/smb.conf&lt;br /&gt;
  		fi&lt;br /&gt;
 		;;&lt;br /&gt;
  	stop)&lt;br /&gt;
  		killall smbd&lt;br /&gt;
  		killall nmbd&lt;br /&gt;
  		;;&lt;br /&gt;
 esac&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
====/etc/smb.conf====&lt;br /&gt;
weiterhin wird die für [[Samba]] benötigte Konfigurationsdatei erzeugt:&lt;br /&gt;
 ; /etc/smb.conf generated by neutrino ide/mmc/hdd drive-setup, do not edit!&lt;br /&gt;
 ; BETA! 1.50  29.03.2010 - 21:01:44&lt;br /&gt;
 [global]&lt;br /&gt;
 interfaces = 192.168.1.22/24&lt;br /&gt;
 workgroup = MSHEIMNETZ&lt;br /&gt;
 server string = Samba@Dbox&lt;br /&gt;
 netbios name = dbox&lt;br /&gt;
 security = share&lt;br /&gt;
 load printers = no&lt;br /&gt;
 guest ok = yes&lt;br /&gt;
 guest account = root&lt;br /&gt;
 encrypt passwords = yes&lt;br /&gt;
 os level = 0&lt;br /&gt;
 log level = 0&lt;br /&gt;
 browseable = yes&lt;br /&gt;
 preserve case = yes&lt;br /&gt;
 short preserve case = yes&lt;br /&gt;
 character set = iso8859-1&lt;br /&gt;
 [Share_1_2]&lt;br /&gt;
 comment = P2@FUJITSU MPB3032ATU E&lt;br /&gt;
 path = /mnt/hdd1&lt;br /&gt;
 read only = no&lt;br /&gt;
 public = yes&lt;br /&gt;
&lt;br /&gt;
===Verlinkte Startscripte===&lt;br /&gt;
Wie man sieht, stehen hier zwei Blöcke in den jeweiligen Scripten, die abwechselnd einmal mit dem Parameter '''start)''' und '''stop)''' ausgeführt werden. Diese Scripte sind wie alle anderen Startscripte verlinkt und werden beim Booten mit dem Start-Parameter innerhalb der '''/etc/init.d/rcS'''  und beim Herunterfahren mit dem Stop-Parameter von '''/etc/init.d/rcK''' (entspricht dem [[halt]]-Script) aufgerufen. Die verlinkten Scripte haben dann jeweils noch ein Präfix:&lt;br /&gt;
*'''S''' = '''S'''tart&lt;br /&gt;
*'''K''' = Stop ('''K'''ill)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Im mount-Script ist es notwendig, dass im Stop-Block die Einträge zum Aushängen der jeweiligen Laufwerke eingetragen sind. Der Stop-Block im hdd-Script kann im Prinzip leer bleiben bzw. sollte keine unload-Befehle für ide-Module enthalten, damit die Laufwerke auch vom System beim Herunterfahren zurückgesetzt werden können.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Benennung der Links&lt;br /&gt;
*/etc/init.d/'''S'''06hdd&lt;br /&gt;
*/etc/init.d/'''K'''06hdd&lt;br /&gt;
*/etc/init.d/'''S'''07mounts&lt;br /&gt;
*/etc/init.d/'''K'''07mounts&lt;br /&gt;
*/etc/init.d/'''S'''31sambaserver&lt;br /&gt;
*/etc/init.d/'''K'''31sambaserver &lt;br /&gt;
&lt;br /&gt;
Das Schreiben der Scripte und die anschließende Verlinkung wird vom Menü automatisch durchgeführt.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' Davon abhängig ob sich '''/etc''' in einer beschreibbaren Partition ([[jFFS2|jffs2]], [[YADD Mini-Howto|Yadd]]) oder im Readonly-Bereich ([[squashFS|squashfs]]) befindet, werden die Scripte bei [[squashFS|squashfs]]-[[Images]] in&lt;br /&gt;
*/var/etc/init.d/&lt;br /&gt;
oder bei [[YADD Mini-Howto|Yadd]] oder [[jFFS2|jffs2]]-[[Images]] in &lt;br /&gt;
*/etc/init.d/&lt;br /&gt;
abgelegt.&lt;br /&gt;
Wo das Menü die Dateien hinschreiben muss, wird automatisch erkannt. Das [[Initsystem]] ist ausserdem so ausgelegt, dass es immer die richtige Version der Init-Scripte verwendet. &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==fstab==&lt;br /&gt;
Das Menü ist für die Verwendung von [[fstab]] (Linux-Standard) ausgelegt. Diese wird ebenfalls vom Menü verwaltet. Man braucht sich also auch hier um nichts zu kümmern. Es besteht aber die Möglichkeit, aus welchen Gründen auch immer, auf die Verwendung der [[fstab]] zu verzichten und kann statt der im mount-Script eingetragenen üblichen automatischen Einträge wie:&lt;br /&gt;
 mount -a&lt;br /&gt;
 swapon -a&lt;br /&gt;
auch normale Mounteinträge in das Startscript eintragen lassen. Im Untermenü '''[[#Erweiterte_Einstellungen|Erweitert]]''' steht die Option zur Verfügung, ob du [[fstab]] verwenden willst oder nicht.&lt;br /&gt;
[[Bild:Ide_service_setup_fstab.jpg|thumb|none|300px|Fstab-Optionen]]&lt;br /&gt;
Ausserdem kann man hier auch festlegen, ob die [[fstab]]-Parameter für [[Dateisystem]]e automatisch oder die vom Benutzer festgelegten [[Dateisystem]]e verwendet werden sollen. Standardvorgabe ist&lt;br /&gt;
 &lt;br /&gt;
'''Dateisystem automatisch zuweisen = aus'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Unter Umständen ist es bei Verwendung von ext2/3 ratsam, auf die Autofunktion zu verzichten, da [[ext3]] als [[ext2]] erkannt werden kann.''&lt;br /&gt;
''Werden normale Einträge verwendet, wird immer das vom Benutzer festgelegte [[Dateisystem]] verwendet. &lt;br /&gt;
&lt;br /&gt;
''Auch für [[fstab]] gilt der Grundsatz, dass abhängig von der Beschreibbarkeit des '''/etc'''-Ordners, '''[[fstab]]''' nach '''/var/etc/fstab''' oder '''/etc/fstab''' geschrieben wird. Auch das regelt das Menü automatisch.'' &lt;br /&gt;
''Ebenso muss [[BusyBox|Busybox]]-Mount so angepasst sein, damit bei Bedarf auf die richtige [[fstab]] zugegriffen werden kann! Ab [[BusyBox|Busybox]]-Version 1.14.4 ist dies bei der Tuxbox-Variante der Fall.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==drivesetup.conf==&lt;br /&gt;
Hier werden einige Konfigurationsdaten &amp;quot;zwischengelagert&amp;quot;, damit keine benötigten Informationen verloren gehen. Die Bezeichnung &amp;quot;.conf&amp;quot; als solche ist eigentlich nicht ganz korrekt, weil das Menü einige Daten dort eigenständig verwaltet, um zum einem dem Benutzer möglichst zutreffende Daten anzuzeigen und zum Anderen selbst auf aktuelle dem System angepasste Einstellungen zugreifen zu können. Dies ist beispielsweise der Fall, wenn man eine Partition löscht, aber im Menü selbst nichts geändert hat und Einträge wie z.B. für Filesystem und Mountpoint nicht mehr passen würden. In diesem Fall setzt das Menü die entsprechenden Einstellungen zurück. Wird hingegen nur eine Partition deaktiviert, also nicht eingehangen, bleiben diese Einstellungen auf Abruf bereit. Beispielsweise werden auch für die Einrichtung von bereits formatierten Laufwerken die vom System abgerufenen Informationen automatisch übernommen.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''{{note_drivesetup.conf}}''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==/etc/exports==&lt;br /&gt;
Auch diese Datei wird vom Menü angelegt, sofern NFS-Freigaben eingerichtet wurden und das Image für den Betrieb eines NFS-Servers ausgelegt ist. Siehe [[Neutrino:Service:IDE-MMC-HDD-Setup#NFS-Freigabe_einrichten|NFS-Freigabe einrichten]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Auch für [[exports]] gilt hier, dass abhängig von der Beschreibbarkeit des '''/etc'''-Ordners, '''[[exports]]''' nach '''/var/etc/exports''' oder '''/etc/exports''' geschrieben wird. Auch das regelt das Menü automatisch. &lt;br /&gt;
''Im Normalfall ist /etc/[[exports]] ein Symlink auf /var/etc/[[exports]].''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Module==&lt;br /&gt;
Das Menü nutzt standardmäßig die [[Dateisystem]]-Treibermodule unter&lt;br /&gt;
 /lib/modules/[KERNEL]/kernel/fs/...&lt;br /&gt;
die Ide-Module unter&lt;br /&gt;
 /lib/modules/[KERNEL]/kernel/drivers/ide/...&lt;br /&gt;
die [[SD-Karte|MMC]]-Module und dboxide.o unter&lt;br /&gt;
 /lib/modules/[KERNEL]/misc&lt;br /&gt;
Alternativ kann man auch die Module in einen benutzerdefinierten Ordner legen, um evtl. weitere Module hinzuzufügen oder zu ersetzen (siehe [[#Benutzerdefinierter_Ordner|Benutzerdefinierter Modul-Ordner]]).&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Die in den genannten Standardverzeichnissen vorhandenen Module werden ignoriert sofern gleichnamige benutzerdefinierten Module verwendet werden. Auch bei der Übernahme von Einstellungen werden dann auch immer die alternativen Module in die Startscripte übernommen.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Bei nachinstallierten Dateisystem-Modulen ist darauf zu achten, dass auch die dazu gehörenden Tools nachinstalliert werden (siehe [[Neutrino:Service:IDE-MMC-HDD-Setup#Tools|Tools]])!''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Verwendbare Filesysteme===&lt;br /&gt;
Es können derzeit diese Dateisysteme unter Verwendung der dafür notwendigen Module genutzt werden:&lt;br /&gt;
*'''ext2'''&lt;br /&gt;
*'''ext3''' (benötigt jbd.o)&lt;br /&gt;
*'''reiserfs'''&lt;br /&gt;
*'''vfat''' (benötigt fat.o)&lt;br /&gt;
*'''xfs'''&lt;br /&gt;
Konform dazu werden die passenden [[#Tools|Tools]] benötigt!&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von ntfs/hpfs ist derzeit nicht möglich!&lt;br /&gt;
&lt;br /&gt;
===Unterstützte MMC/SD-Treibermodule (Kernel 2.4.x)===&lt;br /&gt;
{{mmc module}}&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
Tools wie z.B. [[fdisk]], [[mkfs.ext3]] oder die passenden Checking- oder auch Repair-Tools liegen in der Regel unter &lt;br /&gt;
 /sbin&lt;br /&gt;
Alternative Tools sollten funktionieren, wenn man sie unter '''/var/bin''' ablegt. Dies sollte normalerweise möglich sein, kann aber von Image zu Image anders sein, es kommt daher darauf an, wie die notwendigen Umgebungsvariablen für die Pfade in deinem Image angelegt wurden.&lt;br /&gt;
Unterstützt werden diese Dateisysteme und FS-Tools:&lt;br /&gt;
{{supported_fs}}&lt;br /&gt;
&lt;br /&gt;
==Verwendung von CF-Karten==&lt;br /&gt;
Die Verwendung von [[CF-Karten]] sollte möglich sein, jedoch sind Einstellungen bzw. Parameter, wie sie mittels Hdparm für Festplatten vorgesehen sind, natürlich nicht nutzbar. &lt;br /&gt;
Siehe [[#Spindown|Spindown]], [[#WriteCache|WriteCache]]&lt;br /&gt;
&lt;br /&gt;
=Menüaufbau=&lt;br /&gt;
Das Menü ist in ein [[#Hauptmenü|Hauptmenü]] und mehrere Untermenüs ([[#Laufwerksmenü|Laufwerk]]- u. [[#Partitionsmenü|Partitionsmenüs]]) unterteilt und gibt somit quasi die Struktur der Laufwerke im System wieder.&lt;br /&gt;
&lt;br /&gt;
==Hauptmenü==&lt;br /&gt;
[[Bild:Ide_service_setup_main_set-ide.jpg|thumb|none|300px|Hauptmenü inaktives IDE-Interface und ohne geladene SD/MMC-Module]][[Bild:Ide_service_setup_main_set-ide.png|thumb|none|300px|Hauptmenü wenn alle Module geladen wurden]]&lt;br /&gt;
&lt;br /&gt;
===Übernehmen===&lt;br /&gt;
Alle Einstellungen werden gespeichert, Initscripte werden geschrieben und verlinkt sowie [[fstab]] und sofern unterstützt auch die Konfigurationsdateien für NFS- u. Sambaserver. Diese Funktion ist immer dann notwendig, wenn geänderte Einstellungen auf das System übertragen werden sollen. Falls Änderungen vorgenommen wurden, wird man beim Verlassen des Menüs gefragt, ob man das auch möchte. &lt;br /&gt;
&lt;br /&gt;
Es spielt auch keine Rolle ob man die IDE- und MMC/SD-Treiber einzeln oder auf einen Rutsch aktiviert. &lt;br /&gt;
Durch das Übernehmen werden die eingeschalteten Treiber geladen, egal ob dafür Geräte installiert sind oder nicht. Falls kein Gerät, also Festplatten oder MMC/SD-Karten, durch die Treiber aktiviert werden konnten, werden logischerweise auch keine Geräte im Menü angezeigt, die man verwenden könnte. Sollte man aber eine Platte oder Karte eingebaut haben und dennoch keines angezeigt werden, kann dies verschiedene Ursachen haben. In erster Linie sollte man darauf achten, dass Festplatten korrekt verbunden und gejumpert sind, also entweder Master oder Slave. [[Cabel Select|CS]] dürfte nicht ohne weiteres funktionieren. Ob das Interface richtig eingebaut wurde, ist natürlich auch wichtig. Sollte dennoch nichts gehen, kann man den Fehler melden (http://forum.tuxbox.org/bugs). In dem Fall bitte auch ein [[Bootlog]] machen.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Nicht alle Änderungen sind relevant und müssen übernommen werden, weil einige vom System automatisch übernommen werden oder nur für gewisse Aufgaben wie z.B. Formatieren oder Prüfen notwendig sind. Dies trifft beispielsweise auf die verwendeten Dateisysteme oder Partitionsgrössen zu. Einstellungen dieser Art werden daher nur formal in der Konfigurationsdatei gespeichert. Beim Übernehmen werden auch keine Änderungen am Dateisystem oder Partitionsgrößen vorgenommen. Diese Aufgaben werden direkt in den dafür vorgesehenen Untermenüs vorgenommen.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface===&lt;br /&gt;
Hier wird das [[Hardware:dbox2:IDE-Interface|IDE-Interface]] mit entsprechender Option eingestellt.&lt;br /&gt;
* aus&lt;br /&gt;
* aktiv mit Standard-IRQ&lt;br /&gt;
* aktiv mit IRQ6&lt;br /&gt;
&lt;br /&gt;
===Sektion: MMC/SD===&lt;br /&gt;
====Verwendeter MMC/SD-Treiber====&lt;br /&gt;
Ermöglicht die Auswahl des gewünschten MMC-Moduls. Sollte im Image keine MMC-Modul vorhanden sein, entfällt dieser Menüpunkt&lt;br /&gt;
&lt;br /&gt;
====Lade-Parameter====&lt;br /&gt;
Sofern ein Modul bestimmte Parameter unterstützt, kann man hier ein Untermenü öffnen und mit Hilfe einer Eingabemaske zusätzliche Ladeparameter angeben.&lt;br /&gt;
&lt;br /&gt;
===Erweitert===&lt;br /&gt;
Unter diesem Menüpunkt lassen sich einige Sonderfunktionen aktivieren oder deaktivieren.&lt;br /&gt;
[[Bild:Ide service setup advanced.png|thumb|none|300px|Untermenü: Erweitert]]&lt;br /&gt;
&lt;br /&gt;
====fstab====&lt;br /&gt;
siehe [[#fstab|fstab]]&lt;br /&gt;
&lt;br /&gt;
====insmod====&lt;br /&gt;
Hier besteht die Möglichkeit, dem Ladekommando eine oder mehrere Optionen mitzugeben, die auch in die Initscripte eingetragen werden. Hierfür öffnet man über den Menüpunkt '''Optionen''' einen Eingabedialog, in dem man die gewünschten Optionen eintragen kann. &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Auch wenn das Menü diese Möglichkeit bereitstellt, sollte man von dieser Funktion möglichst keinen Gebrauch machen, da die Funktionsweise der Ladekommandos eigentlich optimal auf das System abgestimmt ist! Die eingetragenen Optionen wirken sich ausserdem pauschal auf alle zu ladenenden Module aus und kann unter Umständen das Bootverhalten zum Teil erheblich negativ (lange Bootzeiten etc...) beeinflussen. Wenn du diese Funktion benutzt, solltest du also schon wissen was du machst!''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Treiber-Module====&lt;br /&gt;
=====Benutzerdefinierter Ordner=====&lt;br /&gt;
Hier kann man ein benutzerdefinierts Verzeichnis für IDE-, MMC- oder Fs-Treiber-Modul angeben. Diese Option bewirkt, dass ein Treiber-Modul, welches sich in diesem Ordner befindet, bevorzugt verwendet wird also auch dann wenn bereits ein gleichnamiges Modul in einem dafür bereits vorhandenen Modulordner vorliegen sollte (siehe [[#Module|Module]]). Standardvorgabe ist&lt;br /&gt;
 /var/lib/modules&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Auch diese Option sollte nur bedingt genutzt werden.&lt;br /&gt;
''{{note_drivesetup.conf}}''''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formatierungsoptionen====&lt;br /&gt;
Mit diesen Einstellungen (ab V1.79) ist es möglich den Tools, die für die Erzeugung der [[Dateisystem]]e verwendet werden, bestimmte Parameter zu übergeben. Die vorgegebenen Werte sollten eigentlich optimal passen, jedoch kann man hier diverse Anpassungen vornehmen. Im Menü stehen auch hier nur die von deinem [[Images|Image]] unterstützten [[Dateisystem]]e. Die Eingabe der Optionen erfolgt über eine Eingabemaske.&lt;br /&gt;
Welche Parameter verwendet werden können, kann man aus den entsprechenden Manpages erfahren.&lt;br /&gt;
*ext2/3 http://linux.die.net/man/8/mke2fs&lt;br /&gt;
*xfs http://linux.die.net/man/8/mkfs.xfs&lt;br /&gt;
*vfat/msdos http://linux.die.net/man/8/mkfs.vfat&lt;br /&gt;
*reiserfs http://linux.die.net/man/8/mkfs.reiserfs&lt;br /&gt;
*swap http://linux.die.net/man/8/mkswap&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Auch hier wieder der Hinweis, dass es sich hier um Experteneinstellungen handelt, bei denen es bei falscher Anwendung zu Fehlfunktionen kommen kann! Unter Umständen werden auch nicht alle Optionen vom Tuxbox-System unterstützt.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zurücksetzen====&lt;br /&gt;
Mit dieser Funktion werden sämtliche Treiber entladen, Initscripte sowie /etc/exports gelöscht und die Einstellungen in drivesetup.conf auf die Standardwerte zurückgesetzt.&lt;br /&gt;
Nachdem dieser Menüpunkt aufgerufen wurde, muss erst mit OK bestätigt werden, erst dann erfolgt die Rücksetzung und das Menü wird neu geladen.&lt;br /&gt;
&lt;br /&gt;
===Sektion: Laufwerke auswählen===&lt;br /&gt;
Je nachdem, wieviel und welche Laufwerke (Festplatten, SD/MMC) erkannt wurden, kann man diese hier auswählen und im entsprechendem Untermenü (Laufwerksmenü) die jeweiligen Einstellungen und Aufgaben vornhemen. &lt;br /&gt;
&lt;br /&gt;
====Laufwerksmenü====&lt;br /&gt;
[[Bild:Ide service setup discmenue.png|thumb|none|300px|Laufwerksmenü]]&lt;br /&gt;
Im Menükopf ist zu erkennen, welches Laufwerk gerade bearbeitet wird.&lt;br /&gt;
* hda (Master)&lt;br /&gt;
* hdb (Slave)&lt;br /&gt;
* mmc&lt;br /&gt;
&lt;br /&gt;
=====Sektion: HDD-Parameter=====&lt;br /&gt;
Diese Sektion ist nicht bei SD/MMC-Laufwerken verfügbar.&lt;br /&gt;
&lt;br /&gt;
=====Ausschalten nach (Sekunden)=====&lt;br /&gt;
Ändert die Spindownzeit einer Festplatte, sofern dies von dieser unterstützt wird. Siehe [[#Spindown|Spindown]]&lt;br /&gt;
&lt;br /&gt;
=====Schreib-Cache=====&lt;br /&gt;
Ändert den Parameter Writecache für Festplatten, sofern dies von dieser unterstützt wird. Siehe [[#WriteCache|Writcache]]&lt;br /&gt;
&lt;br /&gt;
=====Swap-Partition anlegen=====&lt;br /&gt;
Öffnet ein Untermenü, um eine Swap-Partition anzulegen. Siehe [[#Swap_anlegen|Swap-Partition anlegen]]&lt;br /&gt;
&lt;br /&gt;
=====Sektion: Partionen bearbeiten=====&lt;br /&gt;
Alle verfügbaren Partitionen werden hier sofern diese bereits angelegt sind zur Auswahl angezeigt. Durch Anwahl einer Partition, gelangt man in das Partitionsmenü, in dem man verschiedene Einstellungen setzen und Aufgaben für die betreffende Partition ausführen kann.&lt;br /&gt;
&lt;br /&gt;
=====Partitionsmenü=====&lt;br /&gt;
siehe [[#Partitionen_einrichten|Partitionen einrichten]] und [[#Aufgaben|Aufgaben]]&lt;br /&gt;
&lt;br /&gt;
=Fabrikneue Festplatte und/oder MMC Laufwerk einrichten=&lt;br /&gt;
Am Beispiel der Einrichtung einer Festplatte soll hier der Ablauf der Einrichtung erklärt werden. Die Einrichtung einer MMC-Karte erfolgt auf die gleiche Weise.&lt;br /&gt;
&lt;br /&gt;
Nach dem das Menü aufgerufen wurde, sieht man zunächst nur Grundfunktionen, da ja bisher noch kein Treiber geladen wurde:&lt;br /&gt;
Um das [[Hardware:dbox2:IDE-Interface|IDE-Interface]] zu aktivieren, wird die Option '''aktiv mit Standard-IRQ''' ausgewählt. Um auch (einzeln) eine MMC-Karte einzurichten, muss der gewünschte mmc-Treiber gewählt werden: &lt;br /&gt;
[[Bild:Ide_service_setup_main_set-ide.jpg|thumb|none|300px|Hauptmenü: alles deaktiviert]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Sollte der Modemport weiterhin benötigt werden, besteht die Möglichkeit das [[IDE-Interface]] alternativ über den IRQ6 zu nutzen. Diese Option ist technisch zwar gegeben, jedoch nicht ohne erforderliche Modifikationen an der Hardware nutzbar und sollte in der Regel unverändert bleiben! [[Hardware:dbox2:IDE-Interface#MultiCam_.2F_MC_das_unbekannte_Wesen.3F|Siehe Modemport]]''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Auswahl getroffen wurde, den Eintrag '''&amp;quot;Übernehmen&amp;quot;''' drücken. Es werden nun alle erforderlichen Module geladen.&lt;br /&gt;
[[Bild:Ide service setup load.jpg|thumb|none|300px|Hauptmenü: laden...]]&lt;br /&gt;
Stehen alle Daten zur Verfügung, werden nun alle gefundenen Laufwerke aufgelistet:&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd.jpg|thumb|none|300px|Hauptmenü: Auflistung]]&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man sich ein Laufwerk auswählen und entsprechende Einstellungen für Spindown und/oder Writecache vornehmen und weitere Vorgänge starten.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected.jpg|thumb|none|300px|1.Untermenü: nächste Schritte]]&lt;br /&gt;
&lt;br /&gt;
==MMC/SD==&lt;br /&gt;
Bei vorhandenem SD/MMC Support im jeweiligem [[Images|Image]] ist es möglich Speicherkarten bis maximal '''1GB''' zu verwenden. Höhere Kapazitäten werden derzeit nicht unterstützt. Ob Dein [[Images|Image]] SD/MMC-Karten unterstützt, erkennt man daran, dass der zugehörige Menüeintrag für die Modul- bzw. Treiberauswahl vorhanden ist. Eine Nachinstallation ist ebenfalls möglich. Siehe [[#Module|Module]]!&lt;br /&gt;
&lt;br /&gt;
===Aktivierung===&lt;br /&gt;
Die Aktivierung hierfür erfolgt über die Treiberauswahl und durch anschließendes '''Übernehmen'''.&lt;br /&gt;
[[Bild:Ide service setup main loaded-mmc-activating.jpg|thumb|none|300px|Hauptmenü: MMC aktivieren]]&lt;br /&gt;
&lt;br /&gt;
===Lade-Parameter===&lt;br /&gt;
Ausserdem besteht für [[SD-Karte|MMC]] die Option, dem Treiber zusätzliche Ladeparameter mitzugeben. Diese können unter dem Menüpunkt '''Lade-Parameter''' eingetragen werden. Die Eingabe erfolgt über eine entsprechende Eingabemaske, sobald der jeweilige Treiber im Untermenü ausgewählt wurde. Eine Eingabe ist dabei nur möglich, wenn das Treiber-Modul auch installiert ist. Welche Parameter in Frage kommen, kann man ggfs. in den Sourcen der Module einsehen.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:''' ''Es handelt sich auch hier um eine Expertenfunktion. Fehlerhafte Eingaben, können Ladefehler verursachen oder die Übernahme der Einstellungen schon im voraus verhindern und die Lade-Parameter haben nichts mit den Kommando-Optionen für [[#insmod|insmod]] oder [[#insmod|modprobe]] zu tun. Diese Parameter betreffen nur die Treiber selbst!''&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:Ide service setup main mmc_load_param.jpg|thumb|none|300px|MMC Untermenü: Ladeparameter]]&lt;br /&gt;
&lt;br /&gt;
==Spindown==&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Dieser Menüpunkt entfällt bei MMC.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Einstellung legt fest nach welcher Zeit eine Festplatte abgeschaltet wird.&lt;br /&gt;
Dafür wird der Menüeintrag &amp;quot;Ausschalten nach&amp;quot; gewählt...&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-spindown.jpg|thumb|none|300px|1.Untermenü: Spindown]]...und kann dann die Angaben in Sekunden eingeben. [[Bild:Ide service setup main loaded-hdd-selected-spindown-setup.jpg|thumb|none|300px|Spindown Eingabe]]&lt;br /&gt;
&lt;br /&gt;
==WriteCache==&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Dieser Menüpunkt entfällt bei MMC.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Einstellung legt fest ob eine Festplatte mit WriteCache arbeitet oder nicht.&lt;br /&gt;
Dafür wird der Menüeintrag &amp;quot;Schreib-Cache&amp;quot; gewählt...&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-wcache.jpg|thumb|none|300px|1.Untermenü: Writecache]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Vor allem ältere Platten unterstützen diese Funktion nicht, evtl. kann diese Einstellung sogar Fehlfunktionen hervorrufen, im Zweifelsfall einen Blick ins [[Bootlog]] werfen oder diese Option nicht einschalten!''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Partition anlegen==&lt;br /&gt;
Hierfür den Menüpunkt &amp;quot;Partition hinzufügen&amp;quot; anwählen:&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part.jpg|thumb|none|300px|1.Untermenü]]&lt;br /&gt;
Du gelangst nun in das nächste Untermenü, wo alle relevanten Einstellungen für die gewünschte Partition vorgenommen werden können.&lt;br /&gt;
Man erhält zunächst auch einen Überblick über den noch verfügbaren freien partitionierbaren Speicherplatz. Die Auswahl der Partitionsnummer wird vom Menü automatisch vorgenommen und wird im Menükopf angezeigt. Dabei wird immer die niedrigste freie Partition zugeordnet, man braucht sich also darum nicht zu kümmern. Es können bis zu 4 Partitionen erstellt werden, sofern genug Platz frei ist. &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Bei den angelegten Partitionen handelt es sich dabei um primäre Partitionen. Erweiterte Partitionen bzw. Partitionstabellen anderen Typs können nicht erstellt werden, dies wäre auch für die Zwecke, für die eine [[Receiver|Set-Top-Box]] üblicherweise dient unnötig und in der Regel dürfte eine Partition sogar immer ausreichend sein.''&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup.jpg|thumb|none|300px|Partition hinzufügen]]&lt;br /&gt;
&lt;br /&gt;
Du gibst nun deine gewünschten Vorgaben ein: &lt;br /&gt;
&lt;br /&gt;
===Partition aktivieren===&lt;br /&gt;
'''Ja''', bewirkt lediglich, dass diese Partition auch eingehangen wird. Bei '''Nein''' wird die Partition angelegt jedoch nicht eingehangen. Im Prinzip ist hier die Vorgabe '''Ja''' üblich.&lt;br /&gt;
&lt;br /&gt;
===Dateisystem festlegen===&lt;br /&gt;
Hier kannst du das gewünschte Dateisystem angeben, mit dem die Partition formatiert werden soll. Die Auswahl ist nicht statisch, sondern ermöglicht die Auswahl aller vorhandenen FS-Kernelmodule die im Image vorhanden sind, was bedeutet, dass auch nachinstallierte Module verfügbar sind.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-fs.jpg|thumb|none|300px|Dateisystem]]&lt;br /&gt;
&lt;br /&gt;
===Mountpoint festlegen===&lt;br /&gt;
Der Menüeintrag hierfür lautet &amp;quot;Einhängen nach&amp;quot;. Wähle bitte hier den gewünschten Mountpoint aus.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-mp.jpg|thumb|none|300px|Mountpoint ]] &lt;br /&gt;
Hierfür wird der Auswahldialog über den Browser genutzt.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-mp-select.jpg|thumb|none|300px|Mountpoint Dialog]]&lt;br /&gt;
&lt;br /&gt;
===Partitionsgröße festlegen===&lt;br /&gt;
Hier wird die gewünschte Größe der Partition festgelegt. Wenn man den gesamten bzw. restlichen verfügbaren Platz verwenden will, lässt man diese Angaben einfach weg,... &lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-size.jpg|thumb|none|300px|Partitionsgröße]] &lt;br /&gt;
...ansonsten kann man einen entsprechenden Wert eingeben.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-size-input.jpg|thumb|none|300px|Partitionsgröße eingeben]]&lt;br /&gt;
&lt;br /&gt;
===Partition erstellen und formatieren===&lt;br /&gt;
Sind alle Angaben komplett, muss nur noch der letzte Menüpunkt ausgeführt werden.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part.jpg|thumb|none|300px|erstellen und formatieren]]&lt;br /&gt;
Letzte Warnung:&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part-warning.jpg|thumb|none|300px|Warnung]]&lt;br /&gt;
Warten und dann sollte das irgendwann fertig sein.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part-creating-ready.jpg|thumb|none|300px|fertig]]&lt;br /&gt;
Wenn alles ohne Fehlermeldungen durchgelaufen ist, gelangst du zurück ins Hauptmenü.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part-creating-ready-select.jpg|thumb|none|300px|fertig]]&lt;br /&gt;
&lt;br /&gt;
Willst du noch weitere Partitionen anlegen, kannst du das an dieser Stelle so lange genug Speicher da ist, ohne weiteres tun.&lt;br /&gt;
&lt;br /&gt;
===Kontrolle und Übernehmen===&lt;br /&gt;
Um die frisch angelegte Partition jetzt dem System zur Verfügung zu stellen, muss zum Abschluß alles noch übernommen werden. Solltest du das Menü verlassen oder ein Timeout das Menü schließen wollen, wirst du automatisch darauf hingewiesen, die vorgenommenen Einstellungen und geändertet Partitionsdaten zu übernehmen.&lt;br /&gt;
Zur Kontrolle, kannst du vorher noch einen Blick in die aktuelle Partitionierung werfen.&lt;br /&gt;
Hier werden die im System vorhandenen Partitionen der gewählten Platte mit Informationen über Mountpoint, das verwendete Dateisystem, Mountoptionen, noch  freien Speicherplatz in Megabyte und einer geschätzten freien Stundenzahl angezeigt.&lt;br /&gt;
Man kann auch jetzt noch die Partition auswählen, um noch Details einzusehen oder auch diese Partition für [[#NFS-Freigabe_einrichten|NFS]] oder [[#Samba-Freigabe_einrichten|Sambaserver freigeben]], zu prüfen, ein- oder aushängen oder sogar löschen. &lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part-creating-ready-selected.jpg|thumb|none|300px|Partitionsliste]]&lt;br /&gt;
Zum Übernehmen der aktuellen Partitionen und Mounteinstellungen, gehe zurück ins Hauptmenü und wähle dann '''Übernehmen'''&lt;br /&gt;
[[Bild:Ide service setup applied.jpg|thumb|none|300px|Die erzeugte(n) Partition(en) steht/stehen dem System nun zur Verfügung]]&lt;br /&gt;
Das Ergebnis wird kurz angezeigt und die Partition steht ab sofort auch beim nächsten Bootvorgang zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
==Swap anlegen==&lt;br /&gt;
Hierfür steht der Menüpunkt '''Swap-Partition anlegen''' zur Verfügung&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-swap.jpg|thumb|none|300px|Partitionsliste]]&lt;br /&gt;
Hiermit werden alle nötigen Schritte und Vorgänge durchgeführt, die zum Einrichten einer Swap-Partition notwendig sind.&lt;br /&gt;
Es spielt auch keine Rolle, ob bereits eine normale Partition existiert. Solange genug Platz vorhanden ist, wird auch hierfür die nächste verfügbare Partitionsnummer verwendet und die weitere Vorgehensweise ist mit dem Erstellen normaler Partitionen identisch.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Es kann nur eine einzige Swap-Partition angelegt werden und die Größe ist auf 128MB vorgegeben. Optional kann auch 64MB gewählt werden und sollte weniger Speicherplatz verfügbar sein, kann der verfügbare Platz verwendet werden''&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-swap applied.jpg|thumb|none|300px|Partitionsliste]]&lt;br /&gt;
&lt;br /&gt;
=Vorbereitetes Laufwerk einrichten=&lt;br /&gt;
Recht komfortabel lassen sich auch bereits fertig partitionierte und formatierte Laufwerke einrichten. Im Optimalfall ist es auch nicht notwendig das Dateisystem zu kennen.&lt;br /&gt;
&lt;br /&gt;
Es wird im Folgenden davon ausgegangen, dass noch keine Laufwerke installiert waren, also gerade so, als ob noch ein jungfräuliches [[Images|Image]] vorliegt und auch die [[#drivesetup.conf|drive_setup.conf]] noch nicht existiert.&lt;br /&gt;
Für den Fall, dass du schon eingerichtete Laufwerke drin hattest, solltest du sicherstellen, dass das [[Hardware:dbox2:IDE-Interface|IDE-Interface]] und [[SD-Karte|MMC]] deaktiviert ist. Zu empfehlen ist eine eine [[#Zur.C3.BCcksetzen|Rücksetzung]]. In diesem Fall kann man auch die [[#drivesetup.conf|drive_setup.conf]] bei Bedarf vorher sichern. Bleibt die alte [[#drivesetup.conf|drive_setup.conf]] bestehen, ist das auch kein Problem, da sich einige Einstellungen teilweise selbst erneuern, aber eben nicht alle und einige Meldungen, die für den Benutzer wichtig wären, könnten ausbleiben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Es werden nur für das jeweilige Image verfügbare Dateisysteme unterstützt. Welche das sind, wird bei der Auswahl des Filesystems angezeigt. Andere gehen nicht! Um weitere Dateisysteme nutzen zu können, kann man die benötigten  Module nachinstallieren (siehe [[Neutrino:Service:IDE-MMC-HDD-Setup#Module|Module]])''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Erkannt werden nur Primäre Partitionen auf der Basis von Partitionstabellen die typisch für die allgemeine Verwendung unter Linux sind. Erweiterte Partitionen bzw. Partitionstabellen anderen Typs können nicht verwendet werden.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Laufwerke aktivieren==&lt;br /&gt;
Man baut nun z.B. eine Festplatte ein und bootet die Box. Man öffnet nun das Menü und es werden nur die wichtigsten Einträge angezeigt, weil bisher noch kein Treiber oder Filesystem geladen sein sollte:&lt;br /&gt;
[[Bild:Ide_service_setup_main_off.jpg|thumb|none|300px|Hauptmenü: alles deaktiviert]]&lt;br /&gt;
Um das IDE-Interface oder mmc zu aktivieren wird die gewünschte Option ausgewählt: &lt;br /&gt;
[[Bild:Ide_service_setup_main_set-ide.jpg|thumb|none|300px|Hauptmenü: Interface einschalten]]&lt;br /&gt;
&lt;br /&gt;
Drücke dann '''Übernehmen'''. &lt;br /&gt;
Es werden nun alle notwendigen Treiber und Einstellungen geladen. Werden während dieses Vorganges schon Partitionen gefunden, die ein unterstütztes Dateisystem enthalten, werden diese automatisch übernommen und in Standardordner eingehangen, welche man im Anschluß natürlich nach seinen eigenen Bedürfnissen ändern kann.&lt;br /&gt;
&lt;br /&gt;
Es können auch einige Meldungen ausgegeben werden, die anzeigen, auf welchem Laufwerk und für welche Partition vom Benutzer noch kein Dateisystem oder Mountpoints angegeben wurden.&lt;br /&gt;
'''Das ist noch kein Problem!''' Diese Meldungen sollen dem Benutzer nur zeigen, was noch fehlt. Es sind also nur gut gemeinte Hinweise darauf, dass man für dieses und jenes Laufwerk noch keine brauchbaren Angaben vorliegen und diese während der folgenden Schritte nachholen muss.&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Für den Fall, dass mehrere Partitionen gefunden werden, werden automatisch Ordner erzeugt, in welche diese Partitionen eingehangen werden. In der Regel können aber nur Ordner in beschreibbaren jffs-Bereichen angelegt werden. Zur Sicherheit werden diese Ordner allerdings ohne Schreibrechte angelegt, so dass das Risiko einer Beschädigung minimiert ist! Die darin eingehangenen Partitionen sind aber beschreibbar.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Laufwerk wählen== &lt;br /&gt;
''Die folgenden Schritte sind nur notwendig, wenn noch nicht alle Laufwerke automatisch erkannt und einghangen wurden oder man nachträglich noch Änderungen nach eigenen Wünschen wie z.B. an den Mountpunkten oder diverse Parameter vornehmen möchte.''&lt;br /&gt;
 &lt;br /&gt;
Im Hauptmenü werden nun die erkannten Laufwerke angezeigt.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-present-hdd.jpg|thumb|none|300px|Hauptmenü: Erkannte Laufwerke]]&lt;br /&gt;
&lt;br /&gt;
Wähle dann ein Laufwerk aus, um ins Laufwerksmenü zu gelangen. Hier werden nun die auf dem Laufwerk vorhandenen Partitionen angezeigt. Wähle dir dann eine aus, um wiederum diese Partition zu bearbeiten.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-present-hdd-parts.jpg|thumb|none|300px|Hauptmenü: Erkannte Partitionen]]&lt;br /&gt;
&lt;br /&gt;
==Partitionen einrichten==&lt;br /&gt;
Im Partitionsmenü gibst du dann bei Bedarf einen anderen Mountpoint an.&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-present-hdd-parts-edit.jpg|thumb|none|300px|Bearbeite Partition]]&lt;br /&gt;
Jetzt noch die Partition einhängen:&lt;br /&gt;
[[Bild:Ide service setup main loaded-hdd-selected-add-part-setup-make-part-creating-ready-selected-singlemount.jpg|thumb|none|300px|Bearbeite Partition]]&lt;br /&gt;
Solltest du versuchen, ein anderes Dateisystem angeben zu wollen, als das was auf der Partition zur Verfügung steht, wird dies in der Regel beim Übernehmen&lt;br /&gt;
der Einstellungen automatisch korrigiert bzw. mit einer Fehlermeldung quittiert. Ebenso kann dies bei einem ungültigen Mountverzeichnis der Fall sein. Das muss dann korrigiert werden.&lt;br /&gt;
&lt;br /&gt;
Solange die Partition aktiviert, also eingehangen ist, sind die Einträge für Dateisystem, Einhängepunkt deaktiviert. Um dort Änderungen vornehmen zu können, muss die Partition erst ausgehangen werden.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Um ein anderes Dateisystem zu verwenden, muss dieses natürlich vorhanden sein oder zuerst erzeugt werden. Verwende hierfür den Menüpunkt '''[[#Formatieren|Formatieren]] '''. Danach sollte auch das Einhängen wie gewohnt funktionieren. Bei ext2/3 formatierten Laufwerken kann es unter Umständen möglich sein, beide Versionen verwenden zu können, was allerdings nicht zwingend der Fall sein muss, da beim Formatieren gewisse Optionen gesetzt worden sein könnten, die nur die Verwendung einer Version zulassen.&lt;br /&gt;
'''''Beim Formatieren werden bekanntermaßen, alle Daten der Partition, unbrauchbar!'''''''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn du fertig bist, gehe zurück ins Hauptmenü, um mit '''Übernehmen''' den Vorgang abzuschließen. Das Laufwerk steht dann zur Verfügung und wird auch beim nächsten Booten entsprechend aktiviert bzw. eingehangen.&lt;br /&gt;
&lt;br /&gt;
=Aufgaben=&lt;br /&gt;
Das Menü stellt einige Möglichkeiten zur Bearbeitung und Wartung von einzelnen Partitionen zur Verfügung. &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Beim Prüfen, Löschen und Formatieren von Partitionen wird systembedingt immer die betreffende Partition vorher automatisch ausgehangen. Für diesen Fall bitte auch beachten, dass evtl. laufende Prozesse auf der jeweiligen Partition beendet werden. Siehe auch [[#Customizing|Customizing!]]''&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:Ide_service_setup_main_loaded-hdd-selected-add-part-setup-jobs.jpg|thumb|none|300px|Partitionen bearbeite: Aufgaben]]&lt;br /&gt;
 &lt;br /&gt;
==Formatieren==&lt;br /&gt;
Mit dieser Funktion kann man das unter dem Menüpunkt '''''Dateisystem''''' angegebene Dateisystem anlegen. Die Partitionsgröße wird nicht geändert. Siehe auch [[#Formatierungsoptionen|Formatierungsoptionen]]!&lt;br /&gt;
&lt;br /&gt;
==Aushängen/Einhängen==&lt;br /&gt;
Wie die Bezeichnung schon sagt, wird damit die jeweilige Partition ein- oder ausgehangen. Die Bezeichnung des Menüeintrags ändert sich dabei je nach dem, ob die Partition bereits eingehangen ist oder nicht. Im übergeordnetem Laufwerksmenü ist das Gegenstück zu finden. Dort lauten die Menüeinträge &lt;br /&gt;
*'''Alle einhängen'''&lt;br /&gt;
*'''Alle aushängen'''&lt;br /&gt;
Hiermit kann man entsprechend '''alle''' Partitionen des gewählten Laufwerks in einem Arbeitsgang ein- oder aushängen.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Wenn im Partitionsmenü der Menüeintrag '''Partition aktivieren''' auf '''nein''' gestellt ist, hat dies keine Auswirkung auf das manuelle Einhängen. Diese Option greift nur beim '''Übernehmen''' der Einstellungen.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Löschen==&lt;br /&gt;
Alle Daten auf der Partition gehen verloren. Der freie Speicher kann anschließend wieder genutzt werden. In der Regel ist nach der Löschung kein Neustart erforderlich. Sollte dies trotzdem erforderlich sein, wird man darauf hingewiesen.&lt;br /&gt;
[[Bild:Ide setup reboot.png|thumb|none|300px|Hinweis, falls Neustart erforderlich]]&lt;br /&gt;
&lt;br /&gt;
==Prüfen==&lt;br /&gt;
Mit dieser Funktion wird das Prüfwerkzeug für das zugehörige Dateisystem gestartet. Je nach Zustand und Größe der Partition, kann dies unter Umständen auch recht lange dauern.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] &lt;br /&gt;
'''HINWEIS:''''' Es ist nicht erforderlich, zusätzlich eine Prüfung direkt nach der Erzeugung einer Partition durchzuführen, da die Prüfung immer automatisch nach ihrer Erzeugung erfolgt jedoch schadet es nicht, hin und wieder vorallem nach häufigen Bootvorgängen und den damit verbundenen Einhängevorgängen eine Prüfung durchzuführen! Genauere Auskunft, ob eine Prüfung erforderlich ist, gibt ein [[Bootlog]]''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Serverfreigaben einrichten=&lt;br /&gt;
Im Partitionsmenü lassen sich in Abhängikeit von der im Image unterstützten Serverfunktion NFS und/oder [[Samba]](Windows)-Freigaben festlegen.&lt;br /&gt;
[[Bild:Ide service setup shares.jpg|thumb|none|300px|Partitionsmenü: Serverfreigaben einrichten]]&lt;br /&gt;
[[Bild:Ide main disc partition share.png|thumb|none|300px|Partitionsuntermenü: Serverfreigaben einrichten]]&lt;br /&gt;
&lt;br /&gt;
==NFS-Freigabe einrichten==&lt;br /&gt;
Sofern das [[Images|Image]] für die [[NFS]]-Serverfunktionalität ausgelegt ist, lassen sich auch ganz einfach Partitionen für [[NFS]] freigeben.&lt;br /&gt;
&lt;br /&gt;
Es kann praktisch für jede einzelne Partition, eine NFS-Freigabe eingerichtet werden.&lt;br /&gt;
Hierfür stellt man im jeweiligen Partitionsmenü die Option &amp;quot;'''Für NFS-Server freigeben'''&amp;quot; auf '''Ja'''. Danach kann man im darunterliegenden Menüeintrag, die Client-IP eingeben.&lt;br /&gt;
Durch '''[[#Übernehmen|Übernehmen]]''' wird die [[#.2Fetc.2Fexports|exports]]-Datei entsprechend modifiziert und die eingestellten NFS-Freigaben stehen '''nach dem nächsten Bootvorgang''' der Receivers zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Der Server läuft standardmäßig mit diesen Optionen:&lt;br /&gt;
*'''rw,sync,no_subtree_check'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:right;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.5em; margin-bottom:1em; border: 2px solid #a00;&amp;quot;&amp;gt;[[Bild:Stop hand.png]] '''HINWEIS:'''&lt;br /&gt;
''Sollte man eine Partition aushängen wollen, die gerade von einem Clienten oder anderen Prozessen verwendet wird, schlägt dies fehl. Die Partition muss also erst wieder &amp;quot;befreit&amp;quot; werden!'' Siehe auch: [[#Customizing|Customizing]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NFS-Client einrichten===&lt;br /&gt;
Hier als Beispiel, wie der [[NFS-Client]] unter OpenSuse 11.1 über [[YaST]] eingestellt werden kann, um auf den Server zugreifen zu können.&lt;br /&gt;
Man öffnet die entsprechende Anwendung für [[NFS-Client]] im [[YaST]]-Kontrollzentrum und kann dann die gewünschte Freigabe, die nun vom Receiver bereitgestellt wird hinzufügen:&lt;br /&gt;
[[Bild:Ide setup nfs yast client settings.jpg|thumb|none|400px|NFS-Client einrichten]]&lt;br /&gt;
Die hier angebenenen Einstellungen sind nur Beispiele, jedoch sollte man die Optionen in etwa so vornehemen.&lt;br /&gt;
*'''ro,soft,udp'''&lt;br /&gt;
oder&lt;br /&gt;
*'''rw,soft,udp'''&lt;br /&gt;
sollte gleichermaßen funktionieren, jedoch hat man auch nur dann Schreibrechte, wenn man als Root vom Clienten auf die Daten zugreift.&lt;br /&gt;
Wenn keine Fehler auftauchen, sollte alles dann so übernommen werden.&lt;br /&gt;
[[Bild:Ide setup nfs yast client.jpg|thumb|none|400px|NFS-Client einrichten]]&lt;br /&gt;
&lt;br /&gt;
==[[Samba]]-Freigabe einrichten==&lt;br /&gt;
Bei Bedarf kann hier ein eigener Freigabename über einen Eingabedialog vergeben werden und noch die Angaben für '''Nur lesen''' und '''Öffentlich''' geändert werden.&lt;br /&gt;
===Globale Sambaeinstellungen===&lt;br /&gt;
{{sambaserver}}&lt;br /&gt;
&lt;br /&gt;
=Auslagern=&lt;br /&gt;
Hier soll kurz auf das Thema '''Auslagern''' von Programmdateien eingegangen werden. Das Prinzip ist in der Regel auch auf alle anderen Programme, Dateien oder Verzeichnisse übertragbar, die man aus Platzmangel nicht immer im Flash unterbringen kann.&lt;br /&gt;
==Beispiel: Sambaserver==&lt;br /&gt;
{{Samba}}&lt;br /&gt;
&lt;br /&gt;
=Customizing=&lt;br /&gt;
{{Mount unmount scripts}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Weblinks=&lt;br /&gt;
*[http://www.dbox2-tuning.net/forum/viewtopic.php?f=7&amp;amp;t=49067 Diskussion zum aktuellen IDE-Menü im Tuxbox-Forum]&lt;br /&gt;
*[http://www.dbox2-tuning.net/forum/viewtopic.php?p=373385#p373385 Ur-Thread zum Entwurf im Tuxbox-Forum]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15883</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15883"/>
		<updated>2012-06-04T17:13:41Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine freie unter [[GPL]] stehende aus dem [[DBox2 Software Projekt|Tuxbox]]-Projekt hervorgegangene und auf das für die [[dBox2]] entwickelte [[Neutrino]] basierende [[GUI|Benutzeroberfläche]]. '''Neutrino-HD''' wurde für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert und wird speziell dafür weiterentwickelt. &lt;br /&gt;
Als erster Receiverhersteller verwendet Coolstream-Tech '''Neutrino-HD''' serienmäßig auf seinen [[HDTV]]-Geräten und zwar bei den Modellen &lt;br /&gt;
*[[Hardware:Coolstream:HD1|HD1]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO|NEO]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO²_Twin|NEO²]]&lt;br /&gt;
*[[Hardware:Coolstream:ZEE|Zee]]&lt;br /&gt;
Andere Hersteller verwenden ebenfalls auf '''Neutrino-HD''' basierende Systeme auf ihren Geräten. Ein bekanntes Beispiel ist aktuell [http://www.azbox.com/ Azbox], der es unter dem Namen '''[http://www.myazbox.de/wiki//index.php/AZtrino AZtrino]''' verwendet. &lt;br /&gt;
Entgegen der Darstellung, das es sich um 1:1 Versionen handelt (siehe [http://www.myazbox.de/wiki//index.php/Hauptseite#Die_AZBox_Me Azbox-Wiki]), sei an dieser Stelle ausdrücklich darauf hingewiesen, dass dies aus technischen Gründen und dem unterschiedlichem Entwicklungsstand nicht den Tatsachen entsprechen kann. Demzufolge sind die hier beschriebenen Funktionsmerkmale, sofern dies nicht ausdrücklich angemerkt ist, nur teilweise oder nicht auf Geräte anderer Hersteller anwendbar. &lt;br /&gt;
Dies trifft ebenfalls auf '''Neutrino-HD''' basierende, aber [[lizenzwidrig]] verbreitete [[Fremdsoftware]] zu. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Aufzeichnen=&lt;br /&gt;
{{Vorlage:NeutrinoHD_Aufnahme}}&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15235</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15235"/>
		<updated>2012-01-16T08:28:34Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Formulierung angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine freie unter [[GPL]] stehende aus dem [[DBox2 Software Projekt|Tuxbox]]-Projekt hervorgegangene und auf das für die [[dBox2]] entwickelte [[Neutrino]] basierende [[GUI]], die für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert wurde und speziell dafür weiterentwickelt wird. &lt;br /&gt;
Als erster Receiverhersteller verwendet Coolstream-Tech '''Neutrino-HD''' serienmäßig auf seinen [[HDTV]]-Geräten und zwar bei den Modellen &lt;br /&gt;
*[[Hardware:Coolstream:HD1|HD1]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO|NEO]]&lt;br /&gt;
*[[Hardware:Coolstream:ZEE|Zee]]&lt;br /&gt;
Andere Hersteller verwenden ebenfalls auf '''Neutrino-HD''' basierende Systeme auf ihren Geräten. Ein bekanntes Beispiel ist aktuell [http://www.azbox.com/ Azbox], der es unter dem Namen '''[http://www.myazbox.de/wiki//index.php/AZtrino AZtrino]''' verwendet. &lt;br /&gt;
Entgegen der Darstellung, das es sich um 1:1 Versionen handelt (siehe [http://www.myazbox.de/wiki//index.php/Hauptseite#Die_AZBox_Me Azbox-Wiki]), sei an dieser Stelle ausdrücklich darauf hingewiesen, dass dies aus technischen Gründen und dem unterschiedlichem Entwicklungsstand nicht den Tatsachen entsprechen kann. Demzufolge sind die hier beschriebenen Funktionsmerkmale, sofern dies nicht ausdrücklich angemerkt ist, nur teilweise oder nicht auf Geräte anderer Hersteller anwendbar. &lt;br /&gt;
Dies trifft ebenfalls auf '''Neutrino-HD''' basierende, aber [[GNU Public License (GPL)|lizenz]]wiedrig verbreitete Fremdsoftware zu. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Aufzeichnen=&lt;br /&gt;
{{Vorlage:NeutrinoHD_Aufnahme}}&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15226</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15226"/>
		<updated>2012-01-11T16:46:32Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine freie unter [[GPL]] stehende aus dem [[DBox2 Software Projekt|Tuxbox]]-Projekt hervorgegangene und auf das für die [[dBox2]] entwickelte [[Neutrino]] basierende [[GUI]], die für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert wurde und speziell dafür weiterentwickelt wird. &lt;br /&gt;
Als erster Receiverhersteller verwendet Coolstream-Tech '''Neutrino-HD''' serienmäßig auf seinen [[HDTV]]-Geräten und zwar bei den Modellen &lt;br /&gt;
*[[Hardware:Coolstream:HD1|HD1]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO|NEO]]&lt;br /&gt;
*[[Hardware:Coolstream:ZEE|Zee]]&lt;br /&gt;
Andere Hersteller verwenden ebenfalls auf '''Neutrino-HD''' basierende Systeme auf ihren Geräten. Ein bekanntes Beispiel ist aktuell [http://www.azbox.com/ Azbox], der es unter dem Namen '''[http://www.myazbox.de/wiki//index.php/AZtrino AZtrino]''' verwendet. &lt;br /&gt;
Entgegen der Darstellung, das es sich um 1:1 Versionen handelt (siehe [http://www.myazbox.de/wiki//index.php/Hauptseite#Die_AZBox_Me Azbox-Wiki]), sei an dieser Stelle ausdrücklich darauf hingewiesen, dass dies aus technischen Gründen und dem unterschiedlichem Entwicklungsstand nicht den Tatsachen entsprechen kann. Demzufolge sind die hier beschriebenen Funktionsmerkmale, sofern dies nicht ausdrücklich angemerkt ist, nur teilweise oder nicht auf Geräte anderer Hersteller anwendbar. &lt;br /&gt;
Dies trifft prinzipiell auch auf [[GNU Public License (GPL)|lizenz]]wiedrig verbreitete auf '''Neutrino-HD''' basierende Fremdsoftware zu. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Aufzeichnen=&lt;br /&gt;
{{Vorlage:NeutrinoHD_Aufnahme}}&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15225</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15225"/>
		<updated>2012-01-11T16:36:48Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine freie unter [[GPL]] stehende aus dem [[DBox2 Software Projekt|Tuxbox]]-Projekt hervorgegangene und auf das für die [[dBox2]] entwickelte [[Neutrino]] basierende [[GUI]], die für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert wurde und speziell dafür weiterentwickelt wird. &lt;br /&gt;
Als erster Receiverhersteller verwendet Coolstream-Tech '''Neutrino-HD''' serienmäßig auf seinen [[HDTV]]-Geräten und zwar bei den Modellen &lt;br /&gt;
*[[Hardware:Coolstream:HD1|HD1]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO|NEO]]&lt;br /&gt;
*[[Hardware:Coolstream:ZEE|Zee]]&lt;br /&gt;
Andere Hersteller verwenden ebenfalls auf '''Neutrino-HD''' basierende Systeme auf ihren Geräten. Ein bekanntes Beispiel ist aktuell [http://www.azbox.com/ Azbox], der es unter dem Namen '''[http://www.myazbox.de/wiki//index.php/AZtrino AZtrino]''' verwendet. &lt;br /&gt;
Entgegen der Darstellung, das es sich um 1:1 Versionen handelt (siehe [http://www.myazbox.de/wiki//index.php/Hauptseite#Die_AZBox_Me Azbox-Wiki]), sei an dieser Stelle ausdrücklich darauf hingewiesen, dass dies aus technischen Gründen und dem unterschiedlichem Entwicklungsstand nicht den Tatsachen entsprechen kann. Demzufolge sind die hier beschriebenen Funktionsmerkmale, sofern dies nicht ausdrücklich angemerkt ist, nur teilweise oder nicht auf Geräte anderer Hersteller anwendbar. &lt;br /&gt;
Dies trifft prinzipiell auch für [[GNU Public License (GPL)|lizenz]]wiedrig verbreitete auf '''Neutrino-HD''' basierende Fremdsoftware zu. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Aufzeichnen=&lt;br /&gt;
{{Vorlage:NeutrinoHD_Aufnahme}}&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15223</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=15223"/>
		<updated>2012-01-11T15:28:36Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Hinweise zu Beschränkungen mit Fremdsoftware eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine aus dem [[DBox2 Software Projekt|Tuxbox]]-Projekt hervorgegangene auf [[Neutrino]] basierende [[GUI]], die für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert wurde und speziell dafür weiterentwickelt wird. Als erster Receiverhersteller verwendet Coolstream-Tech '''Neutrino-HD''' serienmäßig auf seinen [[HDTV]]-Geräten und zwar bei den Modellen &lt;br /&gt;
*[[Hardware:Coolstream:HD1|HD1]]&lt;br /&gt;
*[[Hardware:Coolstream:NEO|NEO]]&lt;br /&gt;
*[[Hardware:Coolstream:ZEE|Zee]]&lt;br /&gt;
Andere Hersteller verwenden ebenfalls auf '''Neutrino-HD''' basierende Systeme auf ihren Geräten. Ein bekanntes Beispiel ist aktuell [http://www.azbox.com/ Azbox], der es unter dem Namen '''[http://www.myazbox.de/wiki//index.php/AZtrino AZtrino]''' verwendet. &lt;br /&gt;
Entgegen der Darstellung, das es sich um 1:1 Versionen handelt (siehe [http://www.myazbox.de/wiki//index.php/Hauptseite#Die_AZBox_Me Azbox-Wiki]), sei an dieser Stelle ausdrücklich darauf hingewiesen, dass dies aus technischen Gründen und dem unterschiedlichem Entwicklungsstand nicht den Tatsachen entsprechen kann. Demzufolge sind die hier beschriebenen Funktionsmerkmale, sofern dies nicht ausdrücklich angemerkt ist, nur teilweise oder nicht auf Geräte anderer Hersteller anwendbar. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Aufzeichnen=&lt;br /&gt;
{{Vorlage:NeutrinoHD_Aufnahme}}&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Images:Yadi&amp;diff=14951</id>
		<title>Images:Yadi</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Images:Yadi&amp;diff=14951"/>
		<updated>2011-09-06T17:47:52Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Berlios verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Images]]&lt;br /&gt;
[[Bild:yadi.png|right|200px| ]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Yadi galt als Nachfolger der bis dahin verbreiteten AlexW-Images und versuchte nach deren Wegfall den Prozess der Imageerstellung basierend auf dem GNU [[Hardware:dbox2|DBox2]] Software Projekt, durch diverse Scripte und Patches zu vereinfachen bzw. zu automatisieren. Zusätzlich wurden fertige [[Images]] im [[SquashFS]] und [[JFFS2]] Format verteilt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://dboxjffs2.sourceforge.net/ Yadi Homepage]&lt;br /&gt;
*[http://dboxjffs2.sourceforge.net/faq.php Yadi FAQ]&lt;br /&gt;
*[http://forum.tuxbox.org/forum/viewforum.php?f=28 Support im Tuxbox-Forum]&lt;br /&gt;
*[http://developer.berlios.de/projects/yadi/ BerliOs Projektseite]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Projekt&amp;diff=14025</id>
		<title>Tuxbox-Projekt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Projekt&amp;diff=14025"/>
		<updated>2011-01-13T18:55:49Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: redirect angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DBox2 Software Projekt‎]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=14024</id>
		<title>Tuxbox-Neutrino</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Tuxbox-Neutrino&amp;diff=14024"/>
		<updated>2011-01-13T18:50:06Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
{{NeutrinoHD_sidebar}}&lt;br /&gt;
[[Bild:NeutrinoHD.png|400px]]&lt;br /&gt;
&lt;br /&gt;
'''Neutrino-HD''' ist eine aus dem [[Tuxbox]]-Projekt hervorgegangene auf [[Neutrino]] basierende [[GUI]], die für den Betrieb von [[Receiver]]n der neueren Generation mit [[HDTV]]-Unterstützung portiert wurde und speziell dafür weiterentwickelt wird. Derzeit findet '''Neutrino-HD''' serienmäßig Verwendung auf [[HDTV]]-Receivern von [[Coolstream]] bei den Modellen [[HD1]], [[NEO]] und [[Zee]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bedienung=&lt;br /&gt;
&lt;br /&gt;
==Einschalten==&lt;br /&gt;
&lt;br /&gt;
==Umschalten (zappen)==&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_EPGVorschau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Tonoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Bildoptionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:NeutrinoHD_Erweiterungen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kanalliste==&lt;br /&gt;
&lt;br /&gt;
[[Bild:NeutrinoHD Kanalliste.png|Kanalliste|none|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
=Menüs=&lt;br /&gt;
Beschreibungen zur Menüstruktur und den einzelnen Optionen finden Sie unter [[NeutrinoHD:Hauptmenü|NeutrinoHD Hauptmenü]].&lt;br /&gt;
&lt;br /&gt;
=Optionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU-Tuxbox_Projekt&amp;diff=14023</id>
		<title>GNU-Tuxbox Projekt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU-Tuxbox_Projekt&amp;diff=14023"/>
		<updated>2011-01-13T18:44:55Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Das Projekt hatte ursprünglich das Ziel, auf der [[DBox2]] ein alternatives [[Betriebssystem]] bzw. eine entsprechende Software basierend auf [[Linux]] und offenen Standards bereitzustellen. Dazu wurden u.a. bereits vorhandene [[DVB]]-Umsetzungen wie z.B. der Firma Convergence ([[Linux]] [[DVB]] [[API]]) verwendet und auf die [[Hardware]] der [[DBox2]] portiert.&lt;br /&gt;
[[Bild:Dbox2_logo.jpg|175px|right]]&lt;br /&gt;
Die [[DBox2]] ist eine Settop-Box für den Empfang von digitalen TV- und Radio-Programmen im [[DVB]]-Format. Die [[DBox2]] ist sowohl für Kabel-, als auch Satellitenempfang erhältlich und wurde hauptsächlich von Premiere (jetzt: Sky) vertrieben, ist jedoch auch von Mediavision oder als einfacher Digital-Receiver bei verschiedenen Händlern erhältlich gewesen.&lt;br /&gt;
 &lt;br /&gt;
Hersteller der [[DBox2]] waren [[Nokia]], [[Philips]] und [[Sagem]]. &lt;br /&gt;
 &lt;br /&gt;
Inzwischen wurde die Tuxbox-Software auch für andere Set-Top-Boxen portiert und es dürften noch weitere folgen. Die Entwicklung dürfte also noch einiges bereithalten. Ein besonderes Augenmerk besteht deshalb auf die Unterstützung für HDTV-fähige Geräte.&lt;br /&gt;
 &lt;br /&gt;
Die Entwicklung der Tuxbox-Software erfolgt als [[Open-Source]] unter der [[GNU Public License (GPL)]]. Obwohl das Projekt ursprünglich keinerlei finanzielle Interessen verfolgte und für die Entwickler nach wie vor ein Hobby darstellt, findet die Software inzwischen auch bei diversen Geräteherstellern in Form von Ablegern, sog. [[Forks]], Verwendung an dem auch einige der Tuxbox-Entwickler beteilgt sind. Bekanntes Beispiel ist [[Neutrino-HD]], welches ähnlich wie [[Enigma]] inzwischen von einigen Geräteherstellern serienmäßig in ihren Geräten Verwendung findet.&lt;br /&gt;
   &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Weblinks=&lt;br /&gt;
*[http://www.tuxbox.org Tuxbox Homepage]&lt;br /&gt;
*[http://forum.tuxbox.org Tuxbox Forum]&lt;br /&gt;
*[http://cvs.tuxbox.org/ Tuxbox CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Esound&amp;diff=13870</id>
		<title>Esound</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Esound&amp;diff=13870"/>
		<updated>2010-11-03T19:18:27Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Verweis hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der '''Enlightened Sound Daemon''', kurz '''EsounD''' oder '''esd''', ist ein Sound[[server]], der normalerweise von den [[WP:Fenstermanager|Fenstermanager]]n [[WP:Enlightenment|Enlightenment]] und [[WP:GNOME|Gnome]] verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Zweck eines Soundservers ist es, dafür zu sorgen, dass mehrere [[Anwendungsprogramm|Anwendungen]] gleichzeitig Audiosignale ausgeben können. Dazu greifen die Anwendungen selbst nicht mehr direkt auf das Audiogerät beziehungsweise deren Treiber zu, sondern senden stattdessen den wiederzugebenden Audiostrom an den Soundserver. Dieser mischt die Ströme und spielt das Ergebnis dann über das Audiogerät ab.&lt;br /&gt;
&lt;br /&gt;
EsounD verfügt auch über einfache [[WP:Sequenzer (Musik)|Sequenzer]]fähigkeiten; so können [[WP:Computersample|Samples]] geladen und später wiedergegeben werden, auf der Dbox2 ist diese Funktion aus Platzgründen nicht implementiert. Weiterhin ist EsounD [[WP:Netzwerktransparenz|netzwerktransparent]] - ein Programm muss also nicht auf demselben [[WP:Host (Informationstechnik)|Host]] wie der Soundserver laufen, um Audioströme an diesen zu senden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Neutrino:Esound_Soundserver|Esound-Server auf der dbox2 (ESD)]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.tux.org/~ricdude/EsounD.html EsounD Website] (englisch)&lt;br /&gt;
* [ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/ FTP-Server mit neuen Releases]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=LGPL&amp;diff=13261</id>
		<title>LGPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=LGPL&amp;diff=13261"/>
		<updated>2010-08-18T07:24:41Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Redirekt auf GNU Lesser General Public License angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GNU Lesser General Public License]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU_Lesser_General_Public_License&amp;diff=13260</id>
		<title>GNU Lesser General Public License</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU_Lesser_General_Public_License&amp;diff=13260"/>
		<updated>2010-08-18T07:23:35Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
{{Infos}}&lt;br /&gt;
&lt;br /&gt;
*[[Wikipedia:LGPL]]&lt;br /&gt;
* [http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License 3] (englisch)&lt;br /&gt;
* [http://www.gnu.de/lgpl-ger.html inoffizielle deutsche Übersetzung der LGPL]&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Loki_Software&amp;diff=13259</id>
		<title>Loki Software</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Loki_Software&amp;diff=13259"/>
		<updated>2010-08-18T07:16:36Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
{{Infos}}&lt;br /&gt;
&lt;br /&gt;
*[[Wikipedia:Loki Software]]&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM7020&amp;diff=13257</id>
		<title>Hardware:Dreambox:DM7020</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM7020&amp;diff=13257"/>
		<updated>2010-08-18T07:12:41Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Registereinträge hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Hardware:Dreambox]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die '''DM7020''' ist eine Modell-Variante  der [[Dreambox]], einem Digital Satelliten-Empfangsreceiver für TV- und Radioprogramme.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dream-multimedia-tv.de/ Webseite des Herstellers]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM7025&amp;diff=13256</id>
		<title>Hardware:Dreambox:DM7025</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM7025&amp;diff=13256"/>
		<updated>2010-08-18T07:11:55Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Registereinträge hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Hardware:Dreambox]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die '''DM7025''' ist eine Modell-Variante  der [[Dreambox]], einem Digital Satelliten-Empfangsreceiver für TV- und Radioprogramme.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dream-multimedia-tv.de/ Webseite des Herstellers]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM500&amp;diff=13255</id>
		<title>Hardware:Dreambox:DM500</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:Dreambox:DM500&amp;diff=13255"/>
		<updated>2010-08-18T07:11:00Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Registereinträge eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Hardware:Dreambox]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die '''DM500''' ist eine Modell-Variante  der [[Dreambox]], einem Digital Satelliten-Empfangsreceiver für TV- und Radioprogramme.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dream-multimedia-tv.de/ Webseite des Herstellers]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Development:NeutrinoHD_auf_der_Triple_Dragon_(veraltet)&amp;diff=13246</id>
		<title>Development:NeutrinoHD auf der Triple Dragon (veraltet)</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Development:NeutrinoHD_auf_der_Triple_Dragon_(veraltet)&amp;diff=13246"/>
		<updated>2010-08-16T03:14:44Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Kategorien hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
[[Category:NeutrinoHD]]&lt;br /&gt;
[[Category:Hardware:TripleDragon]]&lt;br /&gt;
&lt;br /&gt;
=Build-Umgebung=&lt;br /&gt;
&lt;br /&gt;
==Auschecken==&lt;br /&gt;
Zuerst sollte man ein Verzeichnis erstellen, in dem der spätere Quell-Code und die fertigen Binarys abgelegt werden:&lt;br /&gt;
 mkdir ~/neutrino-hd-td&lt;br /&gt;
 cd ~/neutrino-hd-td&lt;br /&gt;
&lt;br /&gt;
Anschließend checkt man das Build-System für die Triple Dragon aus&lt;br /&gt;
 git clone git://gitorious.org/tripledragon-buildscripts/mainline.git&lt;br /&gt;
 cd mainline&lt;br /&gt;
&lt;br /&gt;
==Konfiguration vorbereiten==&lt;br /&gt;
Anschließend öffnet man die Datei config mit einem Editor und nimmt folgenden Eintrag vor:&lt;br /&gt;
 FLAVOUR=neutrino-hd&lt;br /&gt;
&lt;br /&gt;
==Build-System erstellen==&lt;br /&gt;
Nun gibt man folgende Befehle ein:&lt;br /&gt;
 make preqs&lt;br /&gt;
 make crosstool&lt;br /&gt;
 make bootstrap&lt;br /&gt;
&lt;br /&gt;
=NeutrinoHD=&lt;br /&gt;
==Compilieren==&lt;br /&gt;
Mit folgenden Kommandos baut man dann Neutrino&lt;br /&gt;
 make neutrino-hd&lt;br /&gt;
 make neutrino-hd-system&lt;br /&gt;
&lt;br /&gt;
==System von Festplatte starten==&lt;br /&gt;
===Festplatte vorbereiten===&lt;br /&gt;
Nachdem alles durchgelaufen ist, liegt im Verzeichnis in dem man gebaut hat, unter ./root das fertige System. Um das nun auf der TripleDragon zum laufen zu bekommen, sollte man die Festplatte in 2 Partitionen aufteilen:&lt;br /&gt;
&lt;br /&gt;
 * Partition 1: Für Timeshift und Co.&lt;br /&gt;
 * Partition 2: Das System&lt;br /&gt;
&lt;br /&gt;
Nachdem man die Partitionen formatiert hat (z.B. mit ext3), kopiert man den Inhalt aus dem root-Verzeichnis auf die Partition 2&lt;br /&gt;
&lt;br /&gt;
===Bootloader vorbereiten===&lt;br /&gt;
Anschließend muss man noch dem Bootloader der TripleDragon mitteilen, das man von der Festplatte booten möchte. Da man diesen nur über die serielle Schnittstelle erreichen kann, braucht man ein entsprechendes Kabel.&lt;br /&gt;
Nachdem man das soweit in Betrieb genommen hat, startet man eine entsprechende Terminal-Software. Die Einstellungen können i.d.R. so belassen werden, wie sie sind - nur die Baud-Rate sollte auf 115.200 gestellt werden.&lt;br /&gt;
Um nun in den Bootloader zu gelangen, muss man während die Box unter Strom gesetzt wird, die Pfeil-nach-Links Taste und die Enter-Taste gleichzeitig gedrückt werden.&lt;br /&gt;
Wenn man das richtig macht, sieht man in etwa folgendes:&lt;br /&gt;
  _______________________________&lt;br /&gt;
 / (C) MNC Ltd. Set-Top-Box      \&lt;br /&gt;
 \  BIOS 3.29 (2005/11/07)       /&lt;br /&gt;
  -------------------------------&lt;br /&gt;
   \  .--.     Serialnumber: Tripledragon-EU-0-172xxxxxx-S&lt;br /&gt;
     |o_o |    PowerPC at  : 252 MHz, EBIU: 63 MHz, PVR: 41810952, VDEV: 0B&lt;br /&gt;
     |:_/ |    RAM config  : B0: 2x32=64 MB, B1: 2x8=16 MB, [80 MB]&lt;br /&gt;
    //   \ \   Flash memory: Size: 8 MB, Manufacturer: 04, Type: 22D7&lt;br /&gt;
   (|     | )  Tunertype   : DVB-S, Sat-Tuner BS2F7VZ0184&lt;br /&gt;
  /'\_   _/`\  Ethernet    : Chip 33, Revis. 91  (SMC91C11x)&lt;br /&gt;
  \___)=(___/  Network     : not initialised yet&lt;br /&gt;
  Ethernet MAC: BADDxxxxxxxx, TD IP: 192.168.1.123, Host IP: 192.168.1.1&lt;br /&gt;
  F-System: 0xFF9C0000, 0x47B000 (4698112 Byte), VAR: 1769472 Byte / 27 sect&lt;br /&gt;
  Kernel  : 0xFFE40000, 0x197A00 (1669632 Byte / 26 sect), autostart&lt;br /&gt;
 &lt;br /&gt;
  Main Bios-Menu&lt;br /&gt;
   0 - Boot&lt;br /&gt;
   R - Reset&lt;br /&gt;
   S - Save config&lt;br /&gt;
 &lt;br /&gt;
   B - Boot/Kernel Setup&lt;br /&gt;
   E - Upgrade/Flash/Network&lt;br /&gt;
   H - Hardware Setup&lt;br /&gt;
   L - Loader Config&lt;br /&gt;
   V - Video/Modulator Setup&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
Hier drückt man erst B und anschließend K. Dann sollte man folgendes vor sich haben:&lt;br /&gt;
  _______________________________&lt;br /&gt;
 / (C) MNC Ltd. Set-Top-Box      \&lt;br /&gt;
 \  BIOS 3.29 (2005/11/07)       /&lt;br /&gt;
  -------------------------------&lt;br /&gt;
   \  .--.     Serialnumber: Tripledragon-EU-0-172xxxxxx-S&lt;br /&gt;
     |o_o |    PowerPC at  : 252 MHz, EBIU: 63 MHz, PVR: 41810952, VDEV: 0B&lt;br /&gt;
     |:_/ |    RAM config  : B0: 2x32=64 MB, B1: 2x8=16 MB, [80 MB]&lt;br /&gt;
    //   \ \   Flash memory: Size: 8 MB, Manufacturer: 04, Type: 22D7&lt;br /&gt;
   (|     | )  Tunertype   : DVB-S, Sat-Tuner BS2F7VZ0184&lt;br /&gt;
  /'\_   _/`\  Ethernet    : Chip 33, Revis. 91  (SMC91C11x)&lt;br /&gt;
  \___)=(___/  Network     : not initialised yet&lt;br /&gt;
  Ethernet MAC: BADDxxxxxxxx, TD IP: 192.168.1.123, Host IP: 192.168.1.1&lt;br /&gt;
  F-System: 0xFF9C0000, 0x47B000 (4698112 Byte), VAR: 1769472 Byte / 27 sect&lt;br /&gt;
  Kernel  : 0xFFE40000, 0x197A00 (1669632 Byte / 26 sect), autostart&lt;br /&gt;
 &lt;br /&gt;
  Kernel Commandline Setup&lt;br /&gt;
   0 - Boot&lt;br /&gt;
   R - Reset&lt;br /&gt;
   S - Save config&lt;br /&gt;
 &lt;br /&gt;
   1 - CMDline 1: console=ttyS1,115200 ip=off root=/dev/mtdblock2&lt;br /&gt;
 &lt;br /&gt;
   2 - CMDline 2: console=ttyS1,115200 ip=192.168.1.123:192.168.1.1:192.168.1.1:255.255.255.0:dvt3000 root=/dev/nfs rw nfsroot=192.168.1.1:/tftpboot/dvt3000,hard,intr&lt;br /&gt;
 &lt;br /&gt;
   3 - CMDline 3: console=ttyS1,115200 root=/dev/ide/host0/bus0/target0/lun0/part2 rw&lt;br /&gt;
 &lt;br /&gt;
   4 - CMDline 4: console=ttyS1,115200 root=/dev/ide/host0/bus0/target0/lun0/part3 rw&lt;br /&gt;
 &lt;br /&gt;
   a-d select comandline 1-4&lt;br /&gt;
   Y - toggle CMDline to use: [use CMDline 3]&lt;br /&gt;
 -&amp;gt;&lt;br /&gt;
Hier drückt man dann solange Y, bis unten&lt;br /&gt;
   Y - toggle CMDline to use: [use CMDline 2]&lt;br /&gt;
steht. Das bedeutet, dass der Bootloader sein System auf der Partition 2 der Platte sucht.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte die Platte soweit sein, dass diese das System startet.&lt;br /&gt;
&lt;br /&gt;
=Nützliche Quellen für weitere Informationen und bei Problemen=&lt;br /&gt;
* http://www.dbox2-tuning.net/forum/viewtopic.php?f=62&amp;amp;t=49203&lt;br /&gt;
* http://www.dbox2-tuning.net/forum/viewtopic.php?f=62&amp;amp;t=49199&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Bootlog&amp;diff=13221</id>
		<title>Bootlog</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Bootlog&amp;diff=13221"/>
		<updated>2010-07-15T13:45:47Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
&lt;br /&gt;
Das [[Bootlog]] (= serielles Log) wird benötigt, um z.B. Ausgaben über den Startvorgang oder allgemeine Ausgaben während des Betriebes der [[DBox2]]-Software analysieren zu können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=Vorraussetzungen=&lt;br /&gt;
Um das [[Bootlog]] zu bekommen, benötigt man Folgendes: &lt;br /&gt;
&lt;br /&gt;
* in der GUI muss die Logausgabe auf seriell gestellt sein siehe z.B: [[Neutrino:Einstellungen:Treiber-_%26_Bootoptionen#EXPERT.21_Boot-Konsole|Neutrino-Einstellungen]]&lt;br /&gt;
[[Bild:seriell.jpg|thumb|none|300px|Beispiel: Neutrino Einstellung muss auf seriell stehen!]]&lt;br /&gt;
* Terminal-Programm (z.B. Hyperterminal) oder [[DBox2]]-[[Bootmanager]], [[Putty]] oder [[Minicom]] unter Linux&lt;br /&gt;
* angeschlossenes [[Nullmodem|Null-Modemkabel]]&lt;br /&gt;
&lt;br /&gt;
alternativ, wenn kein Nullmodemkabel verwendet wird:&lt;br /&gt;
* mit  ''[[setconsole]]'' (über [[BusyBox]] aktiviert)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
''[[Setconsole]] ist nicht in jedem [[Image]] enthalten.'' &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Wenn Ihr nicht wisst, was ein [[Nullmodem|Null-Modemkabel]] oder Terminal-Programm ist, solltet Ihr besser nicht versuchen eine [[DBox2]] mit [[Linux]] zu [[flashen]]. Wer trotzdem unerschrocken und lernwillig ist, möge [http://www.google.de Google] für weitere Informationen bemühen. Für die Nutzung des [[DBox2]]-[[Bootmanager]]s lest bitte die entsprechende Anleitung, welche im Readme des Bootmanagers zu finden sein sollte! &lt;br /&gt;
 &lt;br /&gt;
=mit Bootmanager oder Terminalprogramm=&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
* [[Nullmodem]]kabel mit [[DBox2]] und [[PC]] (Com1 od. Com2) verbinden &lt;br /&gt;
&lt;br /&gt;
* Schnittstelle am [[PC]] entsprechend konfigurieren. Stellt die benutzte [[COM]]-Schnittstelle auf 9600 Baud, 8bit, no parity &lt;br /&gt;
 &lt;br /&gt;
* [[DBox2]] starten und gucken, ob eine Ausgabe im Terminalprogramm erfolgt. Wenn nein (oder nur unleserliche Zeichen), Schnittstelle auf 57600 Baud, 8 bit, no parity konfigurieren und [[DBox2]] wieder neu booten. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Im Terminal-Programm sollten eine lange Liste der von der [[DBox2]] durchgeführten Aktionen stehen. Dies ist das Bootlog... &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==Beispiel== &lt;br /&gt;
(extrem gekürzt): &lt;br /&gt;
 &lt;br /&gt;
 debug: DDF: Calibrating delay loop... debug: DDF: 67.79 BogoMIPS &lt;br /&gt;
 debug: BMon V1.2 mID 01 &lt;br /&gt;
 debug: feID dd gtxID 0b &lt;br /&gt;
 debug: fpID 5a dsID 01-8b[....] &lt;br /&gt;
 debug: HWrev 09 FPrev 0.81 &lt;br /&gt;
 debug: B/Ex/Fl(MB) 32/00/08 &lt;br /&gt;
 WATCHDOG reset enabled &lt;br /&gt;
 dbox2:root&amp;gt; debug: &lt;br /&gt;
 BOOTP/TFTP bootstrap loader (v0.3) &lt;br /&gt;
 debug: &lt;br /&gt;
 debug: Transmitting BOOTP request via broadcast &lt;br /&gt;
 debug: Given up BOOTP/TFTP boot &lt;br /&gt;
 boot net failed &lt;br /&gt;
  &lt;br /&gt;
 Flash-FS bootstrap loader (v1.5) &lt;br /&gt;
 &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
 Initializing... &lt;br /&gt;
 CPU: PPC823ZTnnB2 at 67 MHz: 2 kB I-Cache 1 kB D-Cache &lt;br /&gt;
 Board: ### No HW ID - assuming TQM8xxL &lt;br /&gt;
 DRAM: (faked) 32 MB &lt;br /&gt;
 Ethernet: ..... &lt;br /&gt;
 FLASH: 8 MB &lt;br /&gt;
 LCD driver (KS0713) initialized &lt;br /&gt;
 LCD logo at: 0x84A7E (0x1E00 bytes) &lt;br /&gt;
 FB logo at: 0x868A6 (0x31C1 bytes) &lt;br /&gt;
 AVIA Frambuffer &lt;br /&gt;
 Input: serial &lt;br /&gt;
 Output: serial &lt;br /&gt;
 &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
 events are old 60min after their end time &lt;br /&gt;
 [sectionsd ] checking timerd &lt;br /&gt;
 [sectionsd ] timerd available &lt;br /&gt;
 dmxdev: set buffer size 40000 -&amp;gt; 60000 &lt;br /&gt;
 $Id: zapit.cpp,v 1.163 2002/04/24 18:51:18 field Exp $ &lt;br /&gt;
 &lt;br /&gt;
 /var/tuxbox/config/zapit/zapit.conf: No such file or directory &lt;br /&gt;
 [getservices.cpp] /var/tuxbox/config/zapit/services.xml: No such file or directory &lt;br /&gt;
 [zapit] /var/tuxbox/config/zapit/bouquets.xml: No such file or directory &lt;br /&gt;
 [zapit] channels have been loaded succesfully &lt;br /&gt;
 Controld $Id: controld.cpp,v 1.57 2002/03/29 15:47:18 obi Exp $ &lt;br /&gt;
 &lt;br /&gt;
 [controld] Boxtype detected: (01, 1, 1, Nokia) &lt;br /&gt;
 set event: 00000009 &lt;br /&gt;
 SWITCH LETTER BOX &lt;br /&gt;
 [nhttpd] [[Neutrino]] HTTP-Server starting.. &lt;br /&gt;
 &lt;br /&gt;
 httpd gestartet &lt;br /&gt;
 dmxdev: set buffer size 40000 -&amp;gt; 60000 &lt;br /&gt;
 NeutrinoNG $Id: neutrino.cpp,v 1.243 2002/04/24 13:06:58 field Exp $ &lt;br /&gt;
 &lt;br /&gt;
 [neutrino] frameBuffer Instance created &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Hinweis=&lt;br /&gt;
Bricht das [[Bootlog]] nach &lt;br /&gt;
&lt;br /&gt;
 Image Type: PowerPC Linux Kernel Image (gzip compressed) &lt;br /&gt;
 Data Size: 576993 Bytes = 563 kB = 0 MB &lt;br /&gt;
 Load Address: 00000000 &lt;br /&gt;
 Entry Point: 00000000 &lt;br /&gt;
 Verifying Checksum ... OK &lt;br /&gt;
 Uncompressing Kernel Image ... OK &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
ab, dann startet die [[DBox2]] nochmal und drückt die &amp;quot;2&amp;quot; (auf der [[Fernbedienung]]) an dieser Stelle: &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Options: &lt;br /&gt;
 1: Console on null &lt;br /&gt;
 2: Console on ttyS0 &lt;br /&gt;
 3: Console on framebuffer &lt;br /&gt;
 Select (1-3), other keys to stop autoboot: 0 &lt;br /&gt;
&lt;br /&gt;
=Bootlog über Netzwerk=&lt;br /&gt;
Es besteht die Möglichkeit, über den Befehl ''[[setconsole]]'', ein Log über [[Telnet]] über das [[Netzwerk]] aufzuzeichnen. Vorraussetzung dafür ist, dass Dbox-Taste -&amp;gt; Einstellungen -&amp;gt; Treiber- und Bootoptionen -&amp;gt; Expert! Bootconsole auf seriell steht. Die Ausgaben über das Netzwerk sind unter Umständen nicht so ausführlich wie ein serielles Bootlog. Man sollte daher immer ein Bootlog über die serielle Schnittstelle vorziehen. Das erleichtert in der Regel immer die Suche nach Fehlern.&lt;br /&gt;
&lt;br /&gt;
=Kernel-Log ausgeben=&lt;br /&gt;
Mit dem Befehl &amp;quot;dmesg&amp;quot; (alternativ mit &amp;quot;cat /proc/kmsg&amp;quot;) kann man sich mittels [[Telnet]] den [[Kernel]]-Log ausgeben lassen. Auch hier sollte immer ein Bootlog über die serielle Schnittstelle vorgezogen werden. Die dmesg-Ausgaben sind bei weitem nicht so üppig wie es über die serielle Schnittstelle möglich wäre.&lt;br /&gt;
&lt;br /&gt;
=unter Linux=&lt;br /&gt;
Ein Bootlog unter Linux kann man relativ einfach mit diesem Befehl erstellen:&lt;br /&gt;
 sudo cat -u /dev/ttyS0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Bootlogo_austauschen&amp;diff=12817</id>
		<title>Dbox2:Bootlogo austauschen</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Bootlogo_austauschen&amp;diff=12817"/>
		<updated>2010-04-20T14:15:53Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Neutrino Grafics Creator hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
{{Howto_sidebar}}&lt;br /&gt;
__TOC__&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=Allgemeines=&lt;br /&gt;
'''Es gibt 2 Arten von Bootlogos.'''&lt;br /&gt;
&lt;br /&gt;
*Das Bootlogo, welches auf dem [[Framebuffer]] (TV) dargestellt wird&lt;br /&gt;
*Das Bootlogo, welches auf dem [[LCD]] dargestellt wird&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Dateien liegen im Ordner '''/var/tuxbox/boot''' und können mit einem [[FTP]]-Client getauscht werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*logo-fb für das Logo auf dem [[Framebuffer]] (TV)&lt;br /&gt;
*logo-lcd für das Logo auf dem [[LCD]]&amp;lt;br&amp;gt;&lt;br /&gt;
*lcd.ani für animierte Logos auf dem [[LCD]]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Hinweis: Die animierten Logos sind nicht in jedem Image lauffähig, da hierfür ein spezielles Programm benötigt wird. Standardmäßig lassen sich diese Logos bisher nur mit den NovaTux-Images nutzen.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle diese Dateien haben ein bestimmtes Format und eine bestimmte Auflösung.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Logo für den [[Framebuffer]] ist ein Ein-Frame MPEG1 Video in der Größe 720 x 576 Pixel&amp;lt;br&amp;gt;&lt;br /&gt;
Das Logo für das [[LCD]] ist ein [[RAW]] File mit der Größe 120 x 64 Pixel (2 Farben)&amp;lt;br&amp;gt;&lt;br /&gt;
Animierte Logos für das [[LCD]] haben ein spezielles Format die ebenfalls mit der Größe 120 x 64 Pixel (2 Farben) arbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Am einfachsten kann man die -lcd und -lb Files mit dem [[Logo_Viewer|'''TuxBox Logo Viewer''']] erstellen.&amp;lt;br&amp;gt;&lt;br /&gt;
Der [[Logo_Viewer|TuxBox Logo Viewer]] kann diese Dateien auch direkt auf der [[DBox2]] ersetzen.&lt;br /&gt;
Die -ani Files lassen sich nur mit einem bestimmten Programm (bmp2ani) und aus einer Folge von 1bit-Bitmaps erzeugen. Es gibt aber auch einige fertige -ani's zum herunterladen.&lt;br /&gt;
Die ani-Files können bisher nur über ein FTP-Programm eingespielt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um Radio-, Scan- und Shutdownbilder herzustellen, bedarf es eines gewissen Aufwands, da es sich hier um ganz spezielle raw-Formate in Verbindung mit Paletten-Dateien (*.pal) handelt. Um es auszutauschen, kann man diese Bilder in den Benutzerdefinierten Bereich des [[Images]] installieren.&lt;br /&gt;
Das Shutdown-Logo lässt sich unter Umständen auch mit dem [[Logo_Viewer|'''TuxBox Logo Viewer''']] herstellen, da dieses Programm eine Extrafunktion (&amp;quot;RAW Viewer&amp;quot;) bereit hält, mit der es in gewissen Grenzen möglich ist, solche Bilder zu erzeugen. In diesem Fall kommt es auf einen Versuch an.&lt;br /&gt;
 &lt;br /&gt;
Ein gelungenes Tool gibts von Loostech. Den '''Neutrino Grafics Creator'''. Dies ist praktisch der Nachfolger des [[Logo_Viewer|TuxBox Logo Viewer's]]. Damit lassen sich fast alle Bilder herstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*siehe auch [[Neutrino:Customizing#eigene_LCD-Vorlagen|Ändern des LCD_Hintergrunds]]&lt;br /&gt;
&lt;br /&gt;
*[http://lostech.bplaced.net/download.php#1016 Download: Neutrino Grafics Creator]&lt;br /&gt;
*[http://www.chatlogin.com/dbox2/chkdesign/htdocs/start.php Bootlogo Sammlung]&lt;br /&gt;
*[http://www.dbox2.info Logo Viewer Download]&lt;br /&gt;
*[http://www.dbox2-tuning.net/dlc/index.php?name=CmodsDownload&amp;amp;file=index&amp;amp;req=viewdownload&amp;amp;cid=10&amp;amp;orderby=dateD Weitere Bootlogo-Sammlung]&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=%CE%9Ccodes&amp;diff=12428</id>
		<title>Μcodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=%CE%9Ccodes&amp;diff=12428"/>
		<updated>2010-03-02T07:17:38Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach UCodes erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[UCodes]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Microcode&amp;diff=12427</id>
		<title>Microcode</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Microcode&amp;diff=12427"/>
		<updated>2010-03-02T06:40:16Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach UCodes erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[UCodes]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Microcode&amp;diff=12426</id>
		<title>Microcode</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Microcode&amp;diff=12426"/>
		<updated>2010-03-02T06:37:48Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach Ucodes erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Ucodes]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU-Tuxbox_Projekt&amp;diff=11781</id>
		<title>GNU-Tuxbox Projekt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=GNU-Tuxbox_Projekt&amp;diff=11781"/>
		<updated>2009-11-23T08:13:35Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Text aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Das Projekt hatte ursprünglich das Ziel, auf der [[DBox2]] ein alternatives [[Betriebssystem]] bzw. eine entsprechende Software basierend auf [[Linux]] und offenen Standards bereitzustellen. Dazu wurden u.a. bereits vorhandene [[DVB]]-Umsetzungen wie z.B. der Firma Convergence ([[Linux]] [[DVB]] [[API]]) verwendet und auf die [[Hardware]] der [[DBox2]] portiert.&lt;br /&gt;
[[Bild:Dbox2_logo.jpg|175px|right]]&lt;br /&gt;
Die [[DBox2]] ist eine Settop-Box für den Empfang von digitalen TV- und Radio-Programmen im [[DVB]]-Format. Die [[DBox2]] ist sowohl für Kabel-, als auch Satellitenempfang erhältlich. &lt;br /&gt;
 &lt;br /&gt;
Hersteller der [[DBox2]] waren [[Nokia]], [[Philips]] und [[Sagem]]. &lt;br /&gt;
 &lt;br /&gt;
Inzwischen wurde die Tuxbox-Software auch für andere Set-Top-Boxen portiert und es dürften noch weitere folgen. Die Entwicklung dürfte also noch einiges bereithalten. Ein besonderes Augenmerk besteht deshalb auf die Unterstützung für HDTV-fähige Geräte.&lt;br /&gt;
 &lt;br /&gt;
Das Projekt verfolgt keinerlei finanzielle Interessen und stellt für die Entwickler nur ein Hobby dar. Die Entwicklung der Tuxbox-Software erfolgt als [[Open-Source]] unter der [[GNU Public License (GPL)]]. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Die [[DBox2]] wurde hauptsächlich von Premiere vertrieben, ist jedoch auch von Mediavision oder als einfacher Digital-Receiver bei verschiedenen Händlern erhältlich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.tuxbox.org Tuxbox Homepage]&lt;br /&gt;
*[http://forum.tuxbox.org Tuxbox Forum]&lt;br /&gt;
*[http://cvs.tuxbox.org/ Tuxbox CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Datei:Kanalsuche_kabel.png&amp;diff=11755</id>
		<title>Datei:Kanalsuche kabel.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Datei:Kanalsuche_kabel.png&amp;diff=11755"/>
		<updated>2009-10-21T15:30:09Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: hat eine neue Version von „Bild:Kanalsuche kabel.png“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Customizing&amp;diff=11695</id>
		<title>Neutrino:Customizing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Customizing&amp;diff=11695"/>
		<updated>2009-08-28T15:50:19Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
{{Howto_sidebar}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Unter [[Neutrino]] gibt es einige Möglichkeiten die Benutzeroberfläche ([[GUI]]) nach seinen eigenen Wünschen anzupassen und da [[Neutrino]] nach dem Client-Server Prinzip funktioniert, lässt sich [[Neutrino]] über einige Befehle mittels [[API]] auch ohne [[GUI]] in gewissem Umfang bedienen. Desweiteren besteht auch die Möglichkeit, einzelne Ereignisse wie z.B. Aufnahmestop, Bildformatumschaltung etc. abzufangen und diese bei Bedarf mittels [[WP:Unix-Shell|Shell-]][[WP:Bash|Script]] für bestimmte zusätzliche Funktionen zu nutzen. Es wäre auch möglich, ein eigenes Webinterface zu benutzen. &lt;br /&gt;
&lt;br /&gt;
=Benutzeroberfläche anpassen=&lt;br /&gt;
==Alternative Sprachen (custom locale)==&lt;br /&gt;
Die [[locale]] ist eine Datei, welche für die Ausgabe der Sprache auf der [[GUI]] verantwortlich ist. Eigene oder geänderte locales können bei [[squashFS]] [[Images]] im /var Verzeichnis gespeichert werden:&lt;br /&gt;
&lt;br /&gt;
 format: UTF-8 encoded &lt;br /&gt;
 directory: /var/tuxbox/config/locale or /share/tuxbox/neutrino/locale &lt;br /&gt;
 filenames: *.locale&lt;br /&gt;
&lt;br /&gt;
Die Sprache kann nach Neustart unter [[Neutrino:Einstellungen:Sprache|Einstellungen:Sprache]] ausgewählt werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Plugins hinzufügen/entfernen==&lt;br /&gt;
Eigene [[Plugins]] können gespeichert werden unter:&lt;br /&gt;
&lt;br /&gt;
 directory: /var/tuxbox/plugins or /lib/tuxbox/plugins &lt;br /&gt;
 Disabling plugin X (X.cfg, X.so) available in /lib/tuxbox/plugins: touch /var/tuxbox/plugins/X.cfg&lt;br /&gt;
&lt;br /&gt;
==eigene Icons==&lt;br /&gt;
Für alle Icons, also Symbole, die in den Menüs und Fenstern zu sehen sind, können ersatzweise eigene Icons verwendet werden. Es werden dafür entsprechende Dateien im Raw-Format benötigt. Auch die Größe sollte man dabei beachten, damit es zu keinen unschönen Abbildungen in den jeweiligen Fenstern kommt. &lt;br /&gt;
Mgck hat auch ein kleines Programm ([http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?f=27&amp;amp;t=45435 RawIconEditor] )zum editieren solcher Icons geschrieben, womit man relativ einfach solche Icons bearbeiten kann.&lt;br /&gt;
Die entsprechenden Icons werden hier abgelegt:&lt;br /&gt;
&lt;br /&gt;
 var/share/tuxbox/neutrino/icons/&lt;br /&gt;
&lt;br /&gt;
==eigene Radiomode-, Shutdown- und Scanbilder==&lt;br /&gt;
Ebenso wie Icons lassen sich auch die Hintergrundbilder austauschen. Dies erfolgt auf die gleiche Weise wie bei eigenen Icons. Der Unterschied ist nur, dass auch die dazugehörigen .pal-Dateien nicht vergessen werden dürfen. Diese Hintergrundbilder sind relativ groß und schlucken einiges vom ohnehin knappen Speicherplatz in der Box. Man sollte daher eigentlich davon absehen diese Logos zu tauschen, aber wenn man es dennoch haben möchte, sei hier der Hinweis angebracht, dass das Risiko, sein Image &amp;quot;platzen&amp;quot; zu lassen ungemein größer wird. Alternativ besteht auch die Möglichkeit Symlinks auf die Dateien zu setzen. Diese können dann auf ein Ausgelagertes Verzeichnis zeigen, welche sich z.B. auf MMC oder HDD befinden. &lt;br /&gt;
&lt;br /&gt;
==Senderlogos==&lt;br /&gt;
ab CVS-Stand 17.07.2008 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Infobar besteht die Möglichkeit, Senderlogos einzublenden. &lt;br /&gt;
&lt;br /&gt;
===Dateiformat und Speicherort===&lt;br /&gt;
Es werden dafür entsprechende Dateien vom gleichen Raw-Format wie Icons benötigt und werden standardmäßig im gleichen Ordner wie die alternativen Icons abgelegt.&lt;br /&gt;
 /var/share/tuxbox/neutrino/icons/&lt;br /&gt;
Der Speicherort ist entsprechend den eigenen Bedürfnissen anpassbar. &lt;br /&gt;
&lt;br /&gt;
'''Hinweis!'''&lt;br /&gt;
&lt;br /&gt;
''Bei [[jffs2]]-[[Images]] ist '''kein''' '''''/var''''' Ordner vorhanden. Falls man nicht bereits einen anderen Speicherort eingetragen hat, muss das Verzeichnis entsprechend ohne das '''''/var''''' in den Infobareinstellungen eingetragen werden. Ohne dies zu beachten, werden dann natürlich keine Logos angezeigt!&lt;br /&gt;
 /share/tuxbox/neutrino/icons/'' &lt;br /&gt;
&lt;br /&gt;
[[Bild:Stop_hand.png|none]]'''Warnung!'''&lt;br /&gt;
''Auch wenn die Möglichkeit besteht, die verschiedensten Dateien in den Var-Bereich eines [[Image]]s zu packen, sollte man es nicht übertreiben und möglichst nur das einspielen, was auch wirklich gebraucht wird. Die Gefahr sein [[Image]] zu zerstören (&amp;quot;[[Imageplatzer]]&amp;quot;) steigt mit jedem Byte, das dazu kommt. Eine [[Sicherung]] des [[Image]]s ist in jedem Fall ratsam!''&lt;br /&gt;
''Empfehlenswert ist daher, eine Auslagerung auf ein [[SD-Medium]], sofern man ein entsprechendes [[IDE-Interface]] nutzen kann. Eine Auslagerung auf [[HDD]] ist auch möglich, jedoch eher unpraktisch für Daten die recht häufig geholt werden müssen, insbesondere wenn sich die [[HDD]] gerade mal eben vom [[Spindown]] aufrappeln muss.''&lt;br /&gt;
&lt;br /&gt;
===Größe der Logos===&lt;br /&gt;
Je nachdem wo man die Logos angezeigt haben möchte, ist auch die Größe der Grafikdateien variabel. Erfahrungsgemäß sind Logos mit der Größe 120x34px zu empfehlen, damit sie optisch am besten auf allen Positionen eingepasst werden können. Diese Empfehlung ist allerdings nicht zwingend, da abhängig von der Position, an welcher die Logos platziert werden sollen unterschiedliche Platzverhältnisse vorhanden sind. So kann es durchaus vorkommen, dass ein Logo an der Stelle des Programmnames sehr gut passt, aber für die Anzeige im Ziffernfeld viel zu breit ist und deshalb nicht angezeigt wird. Es liegt also im Ermessen der Logoersteller für welche Position sie ihre Logos bevorzugt herstellen. Die Position der Logos lässt sich im Menü &lt;br /&gt;
*'''''Diverse Einstellungen&amp;gt;Infobar&amp;gt;Anzeige''''' &lt;br /&gt;
einstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis!'''&lt;br /&gt;
&lt;br /&gt;
''Die normale Anzeige von Programmnummer und Sendername hat Vorrang gegenüber der Anzeige der Logos, was bedeutet, dass Logos nur dann angezeigt werden, wenn sie auch an der entsprechenden Stelle des [[Infobar]]s genug Platz haben, um die Anzeige der Standardinformationen nicht zu verschlechtern oder gar zu verhindern. Es spielt also durchaus eine Rolle was man für [[Neutrino:Einstellungen:Video#Bildbereich_einstelle|OSD- ]] und [[Neutrino:Einstellungen:Farben#Schriftgr.C3.B6.C3.9Fe|Schriftgrößen-Einstellungen]] vorgenommen hat. Sollte es damit Probleme geben, wird dies im [[Bootlog|Log]] der Box auch mitgeteilt.'' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Darstellung===&lt;br /&gt;
Es besteht auch die Möglichkeit den Hintergrund der Logos gerahmt oder schattiert darzustellen. Dies kann unter Umständen bei bestimmten Themes sinnvoll sein.&lt;br /&gt;
*[[Bild:infobar_channellogo_gerahmt.png|300px]]&lt;br /&gt;
*[[Bild:infobar_channellogo_schattiert.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die Darstellung der Logos lässt sich im Menü &lt;br /&gt;
'''''Diverse Einstellungen&amp;gt;Infobar&amp;gt;Hintergrund''''' einstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Bild:Diverse einstellungen infobar.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Dateinamen===&lt;br /&gt;
Der Dateiname für ein Logo setzt sich aus der '''ChannelID''' '''oder''' dem '''Realnamen des Kanals''' wie er in den EPG-Informationen angezeigt wird und der Dateiendung &amp;quot;'''.raw'''&amp;quot; zusammen.&lt;br /&gt;
Beispiel hier für 3Sat:&lt;br /&gt;
 43700016d67.raw&lt;br /&gt;
oder&lt;br /&gt;
 3sat.raw&lt;br /&gt;
&lt;br /&gt;
Die ChannelID ist eine Kombination einiger Daten, die man beispielsweise aus den [[Neutrino#Technische_Information|Streaminfos]] abrufen kann. &lt;br /&gt;
*[[Bild:Technische_informationen.png|400px]]&lt;br /&gt;
Diese setzt sich zusammen aus &lt;br /&gt;
*tsid 0x0'''437'''&lt;br /&gt;
*onid 0x'''0001'''&lt;br /&gt;
*sid  0x'''6d67'''&lt;br /&gt;
Wie man sieht, ist das angezeigte Format in den Informationen etwas anders. Es werden nur die fett abgebildeten Daten benötigt.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit, die ChannelID zu gewinnen besteht darin, diese über den Webbrowser abzurufen. Dafür muss die dBox natürlich mit dem PC verbunden sein. Im Browser gibt man hierfür diese Daten ein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://&amp;lt;dBoxIP&amp;gt;/control/getonidsid&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Als Rückgabe erscheint dann die gewünschte ID vom aktuell eingeschaltetem Sender.&lt;br /&gt;
&lt;br /&gt;
Die Datei &lt;br /&gt;
 /var/tuxbox/config/zapit/services.xml&lt;br /&gt;
enthält ebenfalls diese Daten.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:''' ''Die ChannelID's sind je nach Empfangsmöglichkeiten (Kabel-Provider, Satellit  usw.) unterschiedlich. Wenn möglich, sollte man evtl. auf vorgefertigte Logo-Packs zurückgreifen.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird solch eine Raw-Datei anhand der ChannelID bzw. dem Sendernamen erkannt, wird sie automatisch zum passenden Kanal angezeigt.&lt;br /&gt;
&lt;br /&gt;
Hier einige Beipiele:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Bild:Infobar chlogo number.jpg|300px]] anstelle Kanalnummer 120x64px&lt;br /&gt;
*[[Bild:Infobar chlogo ersatz.jpg|300px]] anstelle Sendername  [max]x64px&lt;br /&gt;
*[[Bild:Infobar chlogo beside.jpg|300px]] neben Sendername     [max]x64px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:''' [max] ''gibt die Breite an, die verwendet werden kann. Die Breite für das Logo kann je nach Länge des Programmnames, der je nach Einstellung bis zur Zeitanzeige reichen kann, variieren. Dies ist somit auch davon abhängig, welche Einstellungen für den OSD-Bereich gemacht wurden. Sollte ein Logo nicht passen, kann das [[Bootlog]] mehr Informationen über die maximal mögliche Größe Aufschluß geben&amp;lt;br&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Nach dem Einspielen sind die Logos sofort verfügbar sobald sie durch den Infobar aufgerufen werden. Ein Neustart von Neutrino ist nicht erforderlich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verfügbarkeit von Logos===&lt;br /&gt;
Sollte jemand Logos zur Verfügung stellen wollen, besteht [http://www.dbox2-tuning.net/ulc hier] die Möglichkeit, Logos zu sammeln.&lt;br /&gt;
Eine Online-Nachladefunktion ist geplant, aber derzeit noch nicht verfügbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==eigene LCD-Vorlagen==&lt;br /&gt;
Neben dem [[Bootlogo austauschen|LCD-Bootlogo]] lassen sich auch die während des Betriebs der Box vom LC-Displays abgebildeten Hintergründe nach eigenen Wünschen austauschen. Hierfür werden Bilder im png-Format mit einer Auflösung von 120x64 Pixel 1bit-Modus, horizontale und vertikale Auflösung jeweils 96 dpi benötigt.&lt;br /&gt;
Speicherort:&lt;br /&gt;
&lt;br /&gt;
 var/share/tuxbox/neutrino/lcdd/&lt;br /&gt;
&lt;br /&gt;
Diese Dateien können hierbei ersetzt werden:&lt;br /&gt;
*lcd.png&lt;br /&gt;
*lcd2.png&lt;br /&gt;
*lcd3.png&lt;br /&gt;
*power.png&lt;br /&gt;
*setup.png&lt;br /&gt;
&lt;br /&gt;
=eigene Bootlogos verwenden=&lt;br /&gt;
&lt;br /&gt;
siehe [[Bootlogo austauschen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ereignisse abfangen=&lt;br /&gt;
Angenommen man möchte eine nächtliche Timeraufname machen und diese aber möglicht bald auf seinem Rechner wiederfinden. Hier kann es beispielsweise nützlich sein, nachdem die Aufnahme beendet wurde, sich diese von einer evtl. vorhandenen Festplatte über das Netzwerk auf seinen Rechner kopieren zu lassen. Genau hierfür bietet Neutrino die Möglichkeit, eine entsprechende Aktion auszuführen. In diesem Fall wäre es das Script '''recording.end''' dass, sofern es vorhanden und ausführbar ist, nach jedem Ende einer Aufnahme ausgeführt wird. Dieses und noch einige weitere Ereignisse lassen sich damit abfangen und nutzen...   &lt;br /&gt;
&lt;br /&gt;
==Aufnahme==&lt;br /&gt;
===Aufnahme Ankündigung===&lt;br /&gt;
Wenn eine Aufnahme angekündigt wird, wird zunächst (wenn vorhanden) dieses Skript ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.timer   (Rechte auf 755)&lt;br /&gt;
Dieses Script kann benutzt werden um eine evtl. im Standby/ Spindown befindliche Platte im Server/ NAS zu &amp;quot;wecken&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Aufnahme Start===&lt;br /&gt;
Wenn eine Aufnahme gestartet wird, wird zunächst (wenn vorhanden) dieses Skript ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Aufnahme Ende===&lt;br /&gt;
Seit [[Yadi]] 1.9.0.2 ist im folgenden Pfad eine Beispielkonfiguration für ein Skript, was bei Aufnahmeende ausgeführt wird. Damit es ausgeführt wird, muss es in record.end umbenannt werden. Rechte müssen auf 755 stehen.&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.end&lt;br /&gt;
&lt;br /&gt;
Wenn ihr das Beispielskript /var/tuxbox/config/recording.end.dist umbenennt in recording.end werden die aufgenommenen ts-files mit dbox2genpsi gepatcht, sodass sie auch unter [[Enigma]] abspielbar sind.&lt;br /&gt;
&lt;br /&gt;
und so sieht es aus:&lt;br /&gt;
 &lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 # $Id: recording.end,v 1.5 2004/08/07 21:11:31 essu Exp $ &lt;br /&gt;
 FOUND=`grep network_nfs_recordingdir /var/tuxbox/config/neutrino.conf` || exit &lt;br /&gt;
 RECDIR=`expr substr $FOUND 26 154` &lt;br /&gt;
 cd $RECDIR &amp;amp;&amp;amp; FILES=`ls -c *.ts` || exit &lt;br /&gt;
 for FILE in $FILES; do &lt;br /&gt;
 break; &lt;br /&gt;
 done &lt;br /&gt;
 dbox2genpsi $RECDIR/$FILE&lt;br /&gt;
&lt;br /&gt;
Natürlich können an dieser Stelle auch andere Skripte ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
==Standby==&lt;br /&gt;
===Standby ON===&lt;br /&gt;
Wenn die Box in den Standby geschickt wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/standby.on   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Standby OFF===&lt;br /&gt;
Wenn die Box aus dem Standby geholt wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/standby.off   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
==Audioplayer==&lt;br /&gt;
===Audioplayer Start===&lt;br /&gt;
Wenn der Audioplayer gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/audioplayer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Audioplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Audioplayer Stop===&lt;br /&gt;
Wenn der Audioplayer beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/audioplayer.end   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 sectionsd&lt;br /&gt;
Das startet den [[sectionsd]] nach Beendung des [[Audioplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bildbetrachter==&lt;br /&gt;
===Bildbetrachter Start===&lt;br /&gt;
(ab Pictureviewer Version 1.63)&lt;br /&gt;
Wenn der [[Neutrino:Bildbetrachter|Bildbetrachter]] gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/pictureviewer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Neutrino:Bildbetrachter|Bildbetrachter]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bildbetrachter Stop===&lt;br /&gt;
Wenn der [[Neutrino:Bildbetrachter|Bildbetrachter]] beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/pictureviewer.end   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Movieplayer==&lt;br /&gt;
===Movieplayer Start===&lt;br /&gt;
Wenn der Movieplayer gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/movieplayer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Movieplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Movieplayer Stop===&lt;br /&gt;
Wenn der Movieplayer beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/movieplayer.end   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 sectionsd&lt;br /&gt;
Das startet den [[sectionsd]] nach Beendung des [[Movieplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bildformatumschaltung==&lt;br /&gt;
Wenn auf ein Bildformat umgeschaltet wird, werden diese Skripte (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
===16:9===&lt;br /&gt;
 /var/tuxbox/config/16:9.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
===4:3===&lt;br /&gt;
 /var/tuxbox/config/4:3.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
===mit Lirc===&lt;br /&gt;
Ausserdem gibt es noch die Alternativen für [[Lirc]], welche ebenfalls genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
 16:9.lirc&lt;br /&gt;
&lt;br /&gt;
 4:3.lirc&lt;br /&gt;
&lt;br /&gt;
=OSD-Schriftart=&lt;br /&gt;
Neutrino bietet die Möglichkeit, eine alternative Schriftart anzuzeigen. Hierfür muss Neutrino mit den entsprechenden Startparametern aufgerufen werden.&lt;br /&gt;
Die dafür benötigte Startoption lautet &lt;br /&gt;
 --font [name sizeoffset /dir/file.ttf [/dir/bold.ttf [/dir/italic.ttf]]] &lt;br /&gt;
[[Neutrino]] wird über das Startscript &lt;br /&gt;
*''/etc/init.d/start_neutrino'' &lt;br /&gt;
bzw. &lt;br /&gt;
*''/var/etc/init.d/start_neutrino'' &lt;br /&gt;
aufgerufen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für gewöhnlich lautet der Aufruf von Neutrino so:&lt;br /&gt;
 until neutrino -f -u ; do&lt;br /&gt;
 &lt;br /&gt;
Man ändert entprechend nur die erste Zeile ab, indem man zusätzlich zu den Startparametern -f und -u um den Parmeter --font erweitert. Hier als Beispiel wird die Schriftart &amp;quot;Verdana&amp;quot; verwendet.&lt;br /&gt;
Ein Aufruf von [[Neutrino]] mit Schrift-Option könnte dann etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
 FONTS=&amp;quot;Verdana 0 /var/share/fonts/verdana.ttf /var/share/fonts/verdanab.ttf /var/share/fonts/verdanai.ttf&amp;quot; &lt;br /&gt;
 FONTSTART=&amp;quot;--font $FONTS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 until neutrino -u -f $FONTSTART&lt;br /&gt;
&lt;br /&gt;
'''Hinweis!'''&lt;br /&gt;
''Es ist daruf zu achten, dass man auch eine passende ttf-Schriftart verwendet, die alle benötigten Zeichen enthält und Darstellungen in Standard, Bold und Italic ermöglicht. Auch mit der Größe von Schriftartdateien sollte man hier Vorsichtig sein, um zum einen lange Ladezeiten und zum anderen [[Imageplatzer]] zu vermeiden. Auch auf eine korrekte Syntax des Startaufrufs ist zu achten, da [[Neutrino]] sonst nicht startet.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
=custom Webinterface=&lt;br /&gt;
Das [[Webinterface]] von [[Neutrino]] liegt im Verzeichnis:&lt;br /&gt;
 /share/tuxbox/neutrino/httpd&lt;br /&gt;
&lt;br /&gt;
Bei [[squashFS]] [[Images]] ([[Yadi]]) ist dieses Verzeichnis schreibgeschützt. Das heißt, dass Änderungen dort nicht so einfach möglich sind. Es gibt jedoch einen Eintrag in der nhttpd.conf, der einen alternativen Pfad beinhaltet. Man erstellt unter /var das Verzeichnis &amp;quot;httpd&amp;quot;:&lt;br /&gt;
 /var/httpd&lt;br /&gt;
In diesen Pfad kann man das alternative Webinterface ablegen. Bei Aufruf im Browser&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://&amp;lt;dboxIP&amp;gt;/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
erscheint die in diesem Verzeichnis abgelegte &amp;quot;index.html&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:dbox2&amp;diff=11412</id>
		<title>Hardware:dbox2</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:dbox2&amp;diff=11412"/>
		<updated>2009-06-26T06:57:11Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Kategorie angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:dbox2]]&lt;br /&gt;
 __TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Die [[DBox2]] wurde als Nachfolger der [[DBox1]] hauptsächlich durch Premiere vertrieben.&lt;br /&gt;
Ursprünglich wie die [[DBox1]] wurde auch diese durch [[Nokia]] gefertigt. Premiere hat die [[DBox2]] jedoch später auch von [[Sagem]] und [[Philips]] für sich bauen lassen. Die [[DBox2]] ist als digitaler Satelliten- und Kabelreceiver ([[Hardware#DVB-S_.28Satellit.29|DVB-S]] und [[Hardware#DVB-C_.28Cable.2FKabel.29|DVB-C]]) verfügbar.&lt;br /&gt;
&lt;br /&gt;
Die ständige Weiterentwicklung der Produktionstechniken und der Leistungsfähigkeit bestimmter Chips hat auch vor der [[DBox2]] nicht halt gemacht. Das hatte zur Folge, dass sich die [[DBox2]] eines Herstellers nicht direkt mit der eines anderen Herstellers vergleichen lässt.&lt;br /&gt;
So fertigte [[Nokia]] die [[DBox2]] hautsächlich in der Kombination [[Hardware#AViA500|AViA500]]/[[Hardware#GTX|GTX]] und später noch mit [[Hardware#AViA600|AViA600]]/[[Hardware#GTX|GTX]], während [[Philips]] und [[Sagem]] ausschließlich die Kombination [[Hardware#AViA600|AViA600]]/[[Hardware#eNX|eNX]] verbauten. [[Sagem]] stattete außerdem viele seiner Boxen mit einem [[Hardware#Flash_Chips|Flashbaustein]] aus, während [[Nokia]] und [[Philips]] immer zwei [[Hardware#Flash_Chips|Flashbausteine]] einsetzten. Ein weiterer nicht weniger relevanter Unterschied liegt z.B. im verwendeten [[Hardware#Tuner_.28Frontend.29|Tuner]] bzw. [[Hardware#Tuner_.28Frontend.29|Frontend]]. &lt;br /&gt;
&lt;br /&gt;
Die [[DBox2]] wird bereits seit einiger Zeit nicht mehr hergestellt, die u.a. von Premiere weiterhin angebotenen Geräte sind so genannte &amp;quot;refurbished&amp;quot; Boxen. Das sind generalüberholte Boxen mit einem Jahr Garantie.&lt;br /&gt;
&lt;br /&gt;
Nähere Informationen zu den einzelnen Boxen der genannten Hersteller sind [[DBox2|hier]] zu finden.&lt;br /&gt;
'''Siehe auch [[Erweiterungen]]'''.&lt;br /&gt;
&lt;br /&gt;
=Varianten=&lt;br /&gt;
Die [[DBox2]] gibt es von drei verschiedenen Herstellern: [[Nokia]], [[Philips]] und [[Sagem]]. Je nachdem welcher Hersteller die Box gefertigt hat, werden unterschiedliche [[Hardware#Flash_Chips|Flash]]bausteine verwendet. Gefertigt werden diese entweder von Intel oder AMD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBox2 von Nokia==&lt;br /&gt;
[[Bild:Dbox2_nokia_340.png]]&lt;br /&gt;
&lt;br /&gt;
Die [[DBox2]] von Nokia gibt es sowohl mit Intel als auch mit AMD [[Hardware#Flash_Chips|Flash]]bausteinen. Es wurden immer zwei verbaut. Als [[Hardware#MPEG-2_Audio.2FVideo_Decoder_Chip|MPEG-Dekoder]] ist entweder ein [[Hardware#AViA500|AViA500]] oder ein [[Hardware#AViA600|AViA600]] in der Box, als Demux ein [[Hardware#GTX|GTX]]. Es gibt zwei verschiedene [[Fernbedienung#Nokia|Fernbedienungen]] von Nokia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBox2 von Philips==&lt;br /&gt;
[[Bild:Dbox2_philips.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Philips - [[DBox2]] gibt es nur als [http://de.wikipedia.org/wiki/Satellitenreceiver Sat] Version und auch nur mit 2 Intel-Bausteinen und der Dekoder/Demux-Kombination [[Hardware#AViA600|AViA600]]/[[Hardware#eNX|eNX]].&lt;br /&gt;
&lt;br /&gt;
Ein &amp;quot;berühmtes&amp;quot; Problem der Philips ist der sogenannte &amp;quot;Fernbedienungsbug&amp;quot; der sich dadurch bemerkbar macht, dass unter anderem beim schnellen Umschalten mit den Hoch-Runter-Tasten der [[Fernbedienung#Nokia|Fernbedienung]] auf einmal Zahlen erkannt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBox2 von Sagem==&lt;br /&gt;
[[Bild:Dbox2_sagem.jpg]]&lt;br /&gt;
&lt;br /&gt;
Für die [[DBox2]] von Sagem gibt es wie auch bei Nokiageräten sowohl Geräte mit Intel als auch mit AMD [[Hardware#Flash_Chips|Flash]]bausteinen. Die Sagem [[DBox2]] ist das einzige Modell bei dem es Boxen mit nur einem 8MB Intel [[Hardware#Flash_Chips|Flash]]baustein gibt.&lt;br /&gt;
&lt;br /&gt;
== Flashidentifikation ==&lt;br /&gt;
&lt;br /&gt;
Um herauszufinden, welche Flashanzahl die eigene Box hat, hilft im Normalfall entweder aufschrauben und nachsehen, oder, wenn bereits Linux auf der Box installiert ist, folgendes: &lt;br /&gt;
&lt;br /&gt;
===Konsole===&lt;br /&gt;
&lt;br /&gt;
* per telnet zur Box verbinden&lt;br /&gt;
* Ausführen von : &lt;br /&gt;
   sed -n -e '/^mtd0/p' /proc/mtd | sed -e 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/\3/'&lt;br /&gt;
*Es wird ausgegeben:&lt;br /&gt;
&lt;br /&gt;
 00020000   = 1 Flashbausteine&lt;br /&gt;
oder&lt;br /&gt;
 00004000   = 2 Flashbausteine&lt;br /&gt;
&lt;br /&gt;
===Neutrino GUI===&lt;br /&gt;
Bei aktuellen Images ab CVS-Stand Mai 2007 im Servicemenü:&lt;br /&gt;
&lt;br /&gt;
'''Imageinformationen &amp;gt; Unterstützung'''&lt;br /&gt;
&lt;br /&gt;
[[Bild:Imageinfo_support.jpg|none|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flashen mit Expertenfunktionen===&lt;br /&gt;
Möchte man mit den Expertenfunktionen ein Image flashen, wird ein entsprechender Hinweis daraufhin gegeben, welcher Imagetyp benötigt wird. Dies betrifft die Funktionen:&lt;br /&gt;
*flashimage&lt;br /&gt;
*flash(without bootloader)&lt;br /&gt;
&lt;br /&gt;
=Fernbedienung=&lt;br /&gt;
Es gibt drei verschiedene Fernbedienungen für die [[DBox2]]. Alle drei haben die gleichen Funktionen und unterscheiden sich nur in der Anordnung der Tasten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Nokia==&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;alte Fernbedienung&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;neue Fernbedienung&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;[[Bild:FB_Nokia02.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;[[Bild:FB_Nokia01.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Die alte Fernbedienung wird nur von Nokia-Boxen erkannt, die neue kann auch an [[DBox2#DBox2_von_Sagem|Sagem]] und [[DBox2#DBox2_von_Philips|Philips]] benutzt werden. Umgekehrt können Nokias mit allen 3 Fernbedienungen gesteuert werden.&lt;br /&gt;
&lt;br /&gt;
In aktuellen [[Image]]s kann man einstellen, daß die [[DBox2]] nur noch auf die alte bzw. neue Fernbedienung reagiert. Dazu legt man im Verzeichnis /var/etc eine Datei namens '''''.'''oldrc'' bzw. '''''.'''newrc'' an.&lt;br /&gt;
&lt;br /&gt;
==Sagem und Philips==&lt;br /&gt;
[[Bild:FB_Sagem_Philips.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''''Hinweis:''''' Für die [[DBox2#DBox2_von_Philips|Philips]] Fernbedienung gibt es eine [[Umbau_Philips_Fernbedienung|Umbauanleitung]] um die Funktionstüchtigkeit zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
=Anschlüsse=&lt;br /&gt;
Die [[DBox2]] verfügt über diverse Anschlussmöglichkeiten. Hier kann z.B. ein Fernsehgerät, eine Stereoanlage, ein Videorekorder, ein Telefonanschluss oder ein [[Netzwerk]] angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==DBox2 (Sat)==&lt;br /&gt;
{|&lt;br /&gt;
|1x|| 230 V Input&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Stereo RCA (Cinch) Output&lt;br /&gt;
|-&lt;br /&gt;
|2x|| [[Scart]] (1x TV, 1x VCR)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[LIRC|VCR Steuerung]] (via Infrarot / &amp;quot;Sichtkontakt&amp;quot; zwischen [[DBox2]] und VCR muss bestehen)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[Digital Audio]] (Optisch, IEC-958)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[RS 232]] (Serieller Anschluss)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Telefon (RJ11)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[Ethernet]] (RJ45 - 10MBit/Halb-Duplex)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[LNB]] (400 mA)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Analog Receiver Anschluss (um das Signal bei ausgeschalteter [[DBox2]] an einen Analog-Receiver &amp;quot;durchzuschleifen&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Dbox rueckansicht.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBox2 (Kabel)==&lt;br /&gt;
{|&lt;br /&gt;
|1x|| 230 V Input&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Stereo RCA (Cinch) Output&lt;br /&gt;
|-&lt;br /&gt;
|2x|| [[Scart]] (1x TV, 1x VCR)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[LIRC|VCR Steuerung]] (via Infrarot / &amp;quot;Sichtkontakt&amp;quot; zwischen [[DBox2]] und VCR muss bestehen)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[Digital Audio]] (Optisch, IEC-958)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[RS 232]] (Serieller Anschluss)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Telefon (RJ11)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| [[Ethernet]] (RJ45 - 10MBit/Halb-Duplex)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| Antenne (Koaxialbuchse für den Kabelanschluss)&lt;br /&gt;
|-&lt;br /&gt;
|1x|| TV / VCR (Koaxialstecker um das Eingangssignal an weitere Geräte &amp;quot;durchzuschleifen&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:dbox-rueckansicht-kabel.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Innenleben=&lt;br /&gt;
==Hauptprozessor (CPU)==&lt;br /&gt;
Als [[CPU]] (Central Processing Unit) der [[DBox2]] kommt ein ursprünglich von Motorola entwickelter MPC823 zum Einsatz. Es handelt sich dabei um einen mit 66MHz. getakteten 32Bit [[Prozessor]] mit [[PowerPC]]-Kern (PowerPC wird gerne auch durch &amp;quot;[[PPC]]&amp;quot; abgekürzt) und integrierter Kommunikations-Peripherie. Das heißt, dass diverse Interfaces wie z.B. ein [[USB]]-Kanal und ein [[I2C]]-Port bereits im [[Prozessor]] integriert sind. Die Netzwerkschnittstelle der [[DBox2]] ist mit Ausnahme des Tranceiver-Chips z.B. ebenfalls innerhalb der [[CPU]] realisiert. Aufgrund des Designs der [[DBox2]] ist der [[USB]]-Kanal leider nicht verwendbar, da u.a. bestimmte Anschlussleitungen bereits für andere Dinge genutzt werden. &lt;br /&gt;
&lt;br /&gt;
[[Bild:MPC823_neu.png]]&lt;br /&gt;
&lt;br /&gt;
Die [[CPU]] ist bei der [[DBox2]] in einem BGA-Gehäuse (Ball Grid Array) auf dem [[Mainboard]] aufgelötet. Dabei werden die einzelnen Anschlusskontakte eines BGA-Gehäuses (kleine Lötmittelperlen) beim Auflöten mittels einer speziellen Heißluftlötstation kurz aufgeschmolzen und bilden dadurch den Kontakt zu den Anschlüssen des [[Mainboard]]s. Der Wechsel einer [[CPU]] ist daher aufwendig und kann nur durch teures Equipment und dem entsprechenden Know How durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Technische Daten können hier eingesehen werden:&lt;br /&gt;
*[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC823&amp;amp;nodeId=018rH3bTdG8657 MPC823]&lt;br /&gt;
&lt;br /&gt;
==RAM Chips==&lt;br /&gt;
Hauptspeicher ([[RAM]]) wird immer und grundsätzlich zur Ausführung von Programmcode benötigt. Bei der [[DBox2]] kommen insgesamt 32MB [[RAM]] zum Einsatz. Es handelt sich dabei um SDRAM, der entweder komplett auf dem [[Mainboard]] aufgelötet ist oder bei älteren [[Nokia]]-Boxen auch je zur Hälfte onboard und als Modul auf der [[Hardware#Speichererweiterung|Speichererweiterung]] sitzt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:150px-RAM-16MB.png|thumb|none|150px|16MB SDRAM-Chip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flash Chips==&lt;br /&gt;
Die Flashbausteine dienen der dauerhaften Speicherung der Betriebssoftware. Mit Ausnahme von einigen frühen und Entwickler-Boxen hat jede [[DBox2]] 8MB Flashspeicher. Der Zugriff auf den Flashspeicher erfolgt immer mit 32Bit Breite.&lt;br /&gt;
&lt;br /&gt;
Der '''AMD 29DL323CB''' ist in [[Nokia]] und [[Sagem]] verbaut (paarweise, 2x16Bit Datenbus).&lt;br /&gt;
{| valign=bottom&lt;br /&gt;
|[[Bild:150px-AMD_29DL323CB.jpg|thumb|none|150px|AMD 29DL323CB]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der '''Intel TE28F320C3B''' ist in den Boxen aller 3 Hersteller zu finden (paarweise, 2x16Bit Datenbus).&lt;br /&gt;
{| valign=bottom&lt;br /&gt;
|[[Bild:150px-Intel_TE28F320.jpg|thumb|none|150px|Intel TE28F320C3B]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Den '''Intel E28F640J3A''' gibt es ausschließlich in der [[Sagem]] 1xIntel. Da dieser Chip 8MB hat (daher &amp;quot;solo&amp;quot; verwendet wird) und wie die anderen Flashs nur einen 16Bit Datenbus, wird der Bus mit einem [[GAL]] (kleiner Chip unterhalb des Flashs) gemultiplext, also 2 16Bit Worte hintereinander ausgegeben.&lt;br /&gt;
{| valign=bottom&lt;br /&gt;
|[[Bild:150px-Inteltsop56.jpg|thumb|none|150px|Intel E28F640J3A]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Weitere Flashversionen (nur 4MB, Flashs von ST-Micro) sind nur in Entwicklerboxen aufgetaucht, in &amp;quot;freier Wildbahn&amp;quot; haben diese keine Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tuner (Frontend)==&lt;br /&gt;
Der Tuner eines jeden Empfängers dient zum Empfang der vom Sender ausgestrahlten Trägerfrequenz, auf der die eigentlichen Nutzdaten durch ein entsprechendes Modulationsverfahren (z.B. AM=Amplitudenmodulation oder FM=Frequenzmodulation) &amp;quot;aufmoduliert&amp;quot; wurden.&lt;br /&gt;
&lt;br /&gt;
Der Tuner empfängt den Träger entweder durch Vorwahl einer Frequenz (z.B. durch den Benutzer) oder durch ein geeignetes Verfahren zur automatischen Erkennung von entsprechenden Trägerfrequenzen. Nachdem der Tuner auf eine Trägerfrequenz &amp;quot;getuned&amp;quot; hat, greift der PLL (Phase Locked Loop/Geschlossener Phasenregelkreis) des Tuners und sorgt dafür, dass der Tuner auf der Trägerfrequenz stabil getuned (abgestimmt) bleibt. Im Weiteren greifen dann noch zusätzliche Mechanismen zur Optimierung der Empfangsqualität durch Einsatz einer automatischen Signal-Verstärker/-Begrenzer-Schaltung (AGC=Automatic Gain Control).&lt;br /&gt;
&lt;br /&gt;
Durch den Demodulator wird nun das Nutzsignal bzw. die Nutzdaten in verschiedenen Schritten aus dem Trägersignal gefiltert. Dabei kommen natürlich auch diverse Verfahren zur Rauschunterdrückung zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Gebilde aus Tuner/PLL/AGC/Demodulator/ZF und weiteren Schaltungen wird in der Regel auch als &amp;quot;Frontend&amp;quot; bezeichnet. Heute wird dies üblicherweise durch hochintegrierte Schaltkreise zusammen mit dem eigentlichen Tuner als komplettes Produkt durch die Hersteller vertrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-S (Satellit)===&lt;br /&gt;
{|style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 100px;&amp;quot; |&amp;amp;nbsp; '''&amp;amp;nbsp;'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Nokia'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Sagem'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Philips'''&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Demodulator&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; VLSI VES1893 oder VLSI VES1993&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; VLSI VES1993&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; [[Philips]] TDA8044&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; PLL&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Zarlink SP5668 oder [[Philips]] TSA5059&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; [[Philips]] TSA5059&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; [[Philips]] TSA5059&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei [[DVB-S]] wird die so genannte &amp;quot;[[QPSK|Quadrature Phase Shift Keying]]&amp;quot; (QPSK) Modulation verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-C (Cable/Kabel)===&lt;br /&gt;
{|style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 100px;&amp;quot; |&amp;amp;nbsp; '''&amp;amp;nbsp;'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Nokia'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Sagem'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Philips'''&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Demodulator&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; VLSI VES1820&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Atmel AT76C651&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; ST STV0297&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; PLL&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Zarlink SP5659&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Infineon TUA6010XS&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; [[Philips]] TSA5512&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei [[DVB-C]] hingegen verwendet man die &amp;quot;[[QAM|Quadrature Amplitude Modulation]]&amp;quot; (QAM) (hängt im Detail vom Kabelnetzbetreiber ab!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DVB-T (Terrestrisch)===&lt;br /&gt;
{|style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 100px;&amp;quot; |&amp;amp;nbsp; '''&amp;amp;nbsp;'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Nokia'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Sagem'''&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 250px;&amp;quot; |&amp;amp;nbsp; '''Philips'''&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Demodulator&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Infineon SQC6100&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; -&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; -&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; PLL&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; Zarlink SP5668&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; -&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE&amp;quot; |&amp;amp;nbsp; -&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für [[DVB-T]] wurden die Modulationsverfahren [[QPSK]], 16-[[QAM]] und 64-[[QAM]] definiert.&lt;br /&gt;
&lt;br /&gt;
Bei der [[DVB-T]] Übertragung handelt es sich um ein als [[COFDM|&amp;quot;Coded Orthogonal Frequency Division Multiplex&amp;quot;]] (COFDM) bezeichnetes Mehrträgerverfahren. Dabei werden viele in geringem Frequenzabstand nebeneinander liegende Trägersignale einzeln moduliert und als Gesamtsignal übertragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CAM-Chip (SEC)==&lt;br /&gt;
[[CAM]] steht für &amp;quot;'''C'''onditional '''A'''ccess '''M'''odule&amp;quot; und bezeichnet einen Standard zum Einsatz von Entschlüsselungsmodulen in so genannten [[CI]]s, was selbst einen Standard darstellt und für &amp;quot;'''C'''ommon '''I'''nterface&amp;quot; steht.&lt;br /&gt;
&lt;br /&gt;
Ist ein Digital-Receiver mit einem [[CI]] ausgestattet, dann kann er der Theorie nach jedes dem Standard entsprechende [[CAM]] aufnehmen und somit jede verfügbare Verschlüsselungstechnologie in Verbindung mit einer entsprechenden [[Smartcard]] entschlüsseln. &lt;br /&gt;
&lt;br /&gt;
Schon bei der [[DBox1]] war der Weg zu einer proprietären Lösung zu erkennen, da die dort eingesetzten [[CAM]]s keine [[CI]]-[[CAM]]s waren (auch wenn das Hardwareinterface genauso aussieht!), sondern eine eigene Lösung, die über [[I2C]] angesprochen wurde.&lt;br /&gt;
&lt;br /&gt;
Bei der [[DBox2]] ist [[BR|BetaResearch]] dann noch einen Schritt weiter gegangen und hat von vornherein alternative Verschlüsselungssysteme ausgeschlossen. Das [[CAM]] ist bei der [[DBox2]] fest auf dem [[Mainboard]] aufgebracht und wird durch den SEC-Chip verkörpert. Es handelt sich bei dem Chip um eine Eigenentwicklung von BetaResearch, zu der es keine offizielle Dokumentation gibt und dessen [[Firmware]] nicht nur verschlüsselt sondern auch noch signiert ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:150px-SEC.jpeg|thumb|none|150px|SEC-Chip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
{{cam_note}}&lt;br /&gt;
&lt;br /&gt;
==MPEG-2 Transport Demultiplexer Chip==&lt;br /&gt;
Der in der [[DBox2]] eingesetzte &amp;quot;'''MPEG-2 Graphics Transport Demultiplexer Processor'''&amp;quot; -im Folgenden &amp;quot;Demux&amp;quot; genannt- wurde von der Firma C-Cube entwickelt, welche später durch das Unternehmen LSI-Logic übernommen wurde.  Er wurde in verschiedenen Varianten hergestellt, die vor allem durch eine kontinuierliche Weiterentwicklung der eingesetzten Technologie begründet war.&lt;br /&gt;
&lt;br /&gt;
'''Der Chip hat folgende Aufgabe:'''&lt;br /&gt;
&lt;br /&gt;
Um verschiedene Signale bzw. Informationen gebündelt über einen Übertragungskanal zu übermitteln, werden die entsprechenden Einzelsignale durch einen Multiplexer zu einem komplexen Gesamtsignal geschnürt und mit geeigneten Zusatzinformationen zum korrekten Entschnüren der Einzelsignale ([[Demultiplexen]]) versehen. Die [[DVB]]-Spezifikation sieht u.a. vor, die einzelnen Signale/Daten, welche ein Sender zu seinem Programm anbieten kann, zu einem gemeinsamen Datenbündel zusammenzufügen. Diese Daten wie z.B. [[EPG]]-Informationen, Videotext aber auch die Audio-/Video-Daten selbst usw. werden zu einem Paket zusammengefügt. Der Demux trennt nun dieses Gesamtpaket wieder in seine Einzelinhalte auf und stellt dabei z.B. die AV-Signale dem &amp;quot;[[MPEG]]-2 Audio/Video Decoder Chip&amp;quot; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===GTX===&lt;br /&gt;
Demuxer Chip, den man nur in den Boxen des Herstellers [[Nokia]] findet. Der [[GTX]] ist der Vorgänger vom eNX Chip und hat weniger Features. Der Vorteil des [[GTX]] gegenüber dem eNX ist, dass es nicht so viele verschiedene Baureihen des Chips gab und das auf Grund dessen es leichter war für die Developer der Linux@Dbox2 Soft, die Treiber für den Chip zu schreiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===eNX===&lt;br /&gt;
Diesen Chip findet man in den Boxen der Hersteller [[Sagem]] und [[Philips]]. Der Demux demultiplext den Datenstrom und leitet ihn an den MPEG-Dekoder bzw. die [[CPU]] weiter und er ist auch noch für das [[OSD]] zuständig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MPEG-2 Audio/Video Decoder Chip==&lt;br /&gt;
Der &amp;quot;'''MPEG-2 Audio/Video Decoder Chip'''&amp;quot; der [[DBox2]] wurde ursprünglich ebenfalls durch C-Cube entwickelt. In der [[DBox2]] wurden der AViA500 und der AViA600 in noch zusätzlichen Detailvariationen eingesetzt, auf die aber nicht weiter eingegangen werden soll. Vom Hersteller wurde der Einsatz im Gespann mit dem GTX/eNX-Chip vorgesehen, was zumindest bei der [[DBox2]] auch so realisiert wurde.&lt;br /&gt;
&lt;br /&gt;
'''Der Chip hat folgende Aufgabe:'''&lt;br /&gt;
&lt;br /&gt;
Durch den &amp;quot;MPEG-2 Audio/Video Decoder Chip&amp;quot; wird der vom Transport-Demultiplexer erzeugte Transport [[Stream]] dekodiert. Das heißt, dass die durch den MPEG2-Standard zur Verringerung der Datenmenge (Datenreduktion) komprimierten digitalen Audio/Video-Daten wieder zu getrennten und unkomprimierten digitalen Audio- und Video-Daten dekodiert werden. Da der MPEG2-Standard eine so genannte verlustbehaftete Kompression beschreibt, in der im Wesentlichen abwechselnd ein Vollbild gefolgt von diversen Differenzbildern usw. übertragen werden, muss der A/V-Decoder nicht nur dafür sorgen, dass die Daten nach einem vorbestimmten Algorithmus entpackt werden, sondern er muss auch die verlorengegangenen Daten substituieren, denn am Ende müssen vom A/V-Dekoder wieder vollwertige, unkomprimierte digitale Audio- und Video-Daten ausgegeben werden. Die zur Verwendung kommenden Algorithmen (Ein Algorithmus ist eine eindeutige Beschreibung eines endlichen Verfahrens zur Lösung eines bestimmten Problems) zur Dekomprimierung der MPEG2-Kodierten Daten, sowie die Strategien zur Erzeugung (in der Regel aufwendige Interpolationsverfahren) möglichst realitätsnaher Daten, machen die Qualität eines MPEG2-Dekoders aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AViA500===&lt;br /&gt;
Dieser wurde nur in alten Nokia-Boxen verbaut.&lt;br /&gt;
&lt;br /&gt;
[[Bild:150px-Avia500.png|thumb|none|150px|AViA500-Chip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AViA600===&lt;br /&gt;
Dieser wurde in allen Boxen der drei bekannten Hersteller eingebaut.&lt;br /&gt;
&lt;br /&gt;
[[Bild:150px-Avia600.png|thumb|none|150px|AViA600-Chip]]&lt;br /&gt;
&lt;br /&gt;
==Digital Video Encoder (SAA7126)==&lt;br /&gt;
Der &amp;quot;'''Digital Video Encoder'''&amp;quot; (kurz DENC) sorgt für die Umsetzung der vom &amp;quot;MPEG-2 Audio/Video Decoder Chip&amp;quot; angelieferten digitalen Video-Signale (im Standardformat der ITU-R BT.601/BT.656) in die üblichen analogen Signalarten, die in der Fernsehtechnik eingesetzt werden (z.B. RGB, CVBS und S-Video). Er besitzt dafür mehrere DACs (Digital-Analog-Converter). Einige DENCs können optional auch das &amp;quot;Macrovision® Copy Protection&amp;quot;-Signal zur Unterbindung von (analogen) Mitschnitten erzeugen. In der [[DBox2]] kommt der SAA7126 von Philips zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Nähere Informationen zum SAA können hier eingesehen werden:&lt;br /&gt;
&lt;br /&gt;
*[http://www.nxp.com/pip/SAA7126H_7127H_2.html SAA]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Audio/Video-Switch (CXA)==&lt;br /&gt;
Der von Sony hergestellte &amp;quot;Audio/Video-Switch&amp;quot; wurde je nach Hersteller in verschiedenen Typen (z.B. [[Nokia]]=CXA2092Q oder [[Sagem]]=CXA2126Q) u.a. zur Bereitstellung der Scart-Anschlüsse der [[DBox2]] eingesetzt.&lt;br /&gt;
&lt;br /&gt;
*[http://www.sony.co.jp/~semicon/english/img/sonyde01/a6801541.pdf CXA] (PDF-Dokument)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Frontprozessor==&lt;br /&gt;
Der Frontprozessor (FP) ist ein speziell für die [[DBox2]] hergestellter [[Mikrocontroller]] mit maskiertem [[ROM]]. Die [[CPU]] an sich ist ein standard NEC [[Mikrocontroller]] der 78K-Serie. Da die fest eingebrannte [[Firmware]] aber bisher nicht ausgelesen werden konnte, kann man einen Ersatz nur aus einer anderen [[DBox2]] beziehen. Zu seinen Aufgaben gehören folgende Funktionen:&lt;br /&gt;
&lt;br /&gt;
- Steuern der Polarisationsumschaltung (Vertikal/Horizontal) für das [[LNB]]&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Setzen der Tuningfrequenzen für die Tuner der Nokia-Boxen (3wire-bus)&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Erzeugen der 22kHz. Signale für [[Hardware#DiSEqC|DiSEqC]] (nur VES1893 und VES1993) (Nokia und Sagem)&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Betrieb der Hintergrundbeleuchtung des [[LCD]] inkl. Dimmen und Auto-Dimmen&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Betrieb der [[LED]]s (Gehäusefront)&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Funktion der Tasten (Gehäusefront)&amp;lt;br/ &amp;gt;&lt;br /&gt;
- [[IR]]-Funktionen (inkl. [[Keyboard]] und [[Mouse]])&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Reboot und Shutdownfunktionen (Power on/off bzw. [[Deep_Standby#Deep-Standby|Deep-Standby]])&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Steuern des &amp;quot;Resetbus&amp;quot; (betrifft u.a. das [[CAM]])&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Steuern der Wakeup-Timer&amp;lt;br/ &amp;gt;&lt;br /&gt;
- Scart-Umschaltung (im Zusammenspiel mit dem [[Hardware#Audio.2FVideo-Switch_.28CXA.29|Audio/Video-Switch]] (CXA))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Netzwerk-Schnittstelle==&lt;br /&gt;
Das Ethernet-Interface der [[DBox2]] wurde innerhalb der [[Hardware#Hauptprozessor_.28CPU.29|CPU]] realisiert. Nur der Tranceiver-Chip sitzt als diskretes Bauteil auf dem [[Mainboard]] bzw. einer Interfaceplatine der [[DBox2]].&lt;br /&gt;
&lt;br /&gt;
Das Netzwerk-Interface der [[DBox2]] ist schaltungsbedingt fest auf 10MBit/HalbDuplex eingestellt. Durch einen elektrischen Eingriff und Patchen des [[Linux]]-[[Kernel]]s kann er fest auf 10MBit/VollDuplex eingestellt werden. Zuzeit ist es nicht klar, ob dieser Eingriff auf allen Versionen der [[DBox2]] problemlos funktionert.&lt;br /&gt;
Zumindest auf einer Sagem [[DBox2]] mit LevelOne LXT905LC Transiver konnte der Umbau erfolgreich durchgeführt werden. Es sind aber weitere Tests auf anderen Boxen nötig.&lt;br /&gt;
&lt;br /&gt;
*[http://forum.tuxbox.org/forum/viewtopic.php?t=18485 Link zu einem entsprechenden Thread im Tuxbox-Forum]&lt;br /&gt;
&lt;br /&gt;
*[http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?f=19&amp;amp;t=47415 Link zum aktuellen Thread mit Testimages]&lt;br /&gt;
&lt;br /&gt;
Artikel [[Erweiterungen#Netzwerkschnittstelle_auf_Fullduplex_umr.C3.BCsten|Fullduplex Umbau]]&lt;br /&gt;
&lt;br /&gt;
==Speichererweiterung==&lt;br /&gt;
[[Sagem]]-Boxen kann man mit einem 32MB Modul von Kingston (KTH-LJ4100/32, entspricht HP C7845A) auf 64MB Arbeitsspeicher erweitern. Ein Kingston KTH-LJ4100/64 mit 64MB funktioniert ebenfalls, es werden allerdings nur 32MB davon erkannt, sodass insgesamt 64MB zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Belegung des Ports der Sagem (Jolt)===&lt;br /&gt;
 01 gnd               51  gnd &lt;br /&gt;
 02 d15               52  d07 &lt;br /&gt;
 03 d14               53  d06 &lt;br /&gt;
 04 d13               54  d05 &lt;br /&gt;
 05 d12               55  d04 &lt;br /&gt;
 06 3v3               56  3v3 &lt;br /&gt;
 07 d11               57  d03 &lt;br /&gt;
 08 d10               58  d02 &lt;br /&gt;
 09 d09               59  d01 &lt;br /&gt;
 10 d08               60  d00 &lt;br /&gt;
 &lt;br /&gt;
 11 we1*              61  we0* &lt;br /&gt;
 12 gnd               62  gnd &lt;br /&gt;
 13 a29               63  a28 &lt;br /&gt;
 14 a27               64  a26 &lt;br /&gt;
 15 a25               65  a24 &lt;br /&gt;
 16 a23               66  a22 &lt;br /&gt;
 17 a21               67  a20 &lt;br /&gt;
 18 gpl_a0*           68  ba0 &lt;br /&gt;
 19 ba1               69  a18 &lt;br /&gt;
 20 a17               70  a19 &lt;br /&gt;
 &lt;br /&gt;
 21 3v3               71  3v3 &lt;br /&gt;
 22 a15               72  gpl_a2* &lt;br /&gt;
 23 cs0*              73  gpl_a3* &lt;br /&gt;
 24 reset_flash*      74  gpl_a4* &lt;br /&gt;
 25 clkout_mod        75 &lt;br /&gt;
 26 gnd               76  gnd &lt;br /&gt;
 27 gpl_a5*           77 &lt;br /&gt;
 28 oe*               78  a15 &lt;br /&gt;
 29 cs2*              79 &lt;br /&gt;
 30 cs2*              80 &lt;br /&gt;
 &lt;br /&gt;
 31 3v3               81  3v3 &lt;br /&gt;
 32 a13               82  a14 &lt;br /&gt;
 33 a11               83  a12 &lt;br /&gt;
 34 a09               84  a10 &lt;br /&gt;
 35 rsv1              85 &lt;br /&gt;
 36 gnd               86  gnd &lt;br /&gt;
 37 we3*              87  we2* &lt;br /&gt;
 38 d31               88  d23 &lt;br /&gt;
 39 d30               89  d22 &lt;br /&gt;
 40 d29               90  d21 &lt;br /&gt;
   &lt;br /&gt;
 41 d28               91  d20 &lt;br /&gt;
 42 3v3               92  3v3 &lt;br /&gt;
 43 d27               93  d19 &lt;br /&gt;
 44 d26               94  d18 &lt;br /&gt;
 45 d25               95  d17 &lt;br /&gt;
 46 d24               96  d16 &lt;br /&gt;
 47 gnd               97  gnd &lt;br /&gt;
 48                   98 &lt;br /&gt;
 49                   99 &lt;br /&gt;
 50 3v3              100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interrupts==&lt;br /&gt;
Eine Liste der verwendeten Interrupts:&lt;br /&gt;
&lt;br /&gt;
 IRQ0 - ??? &lt;br /&gt;
 IRQ1 - AViA 500/600 &lt;br /&gt;
 IRQ2 - Pre-Processor &lt;br /&gt;
 IRQ3 - Descrambler-Block &lt;br /&gt;
 IRQ4 - MPEG-Block &lt;br /&gt;
 IRQ5 - AViA 500/600 &lt;br /&gt;
 IRQ6 - ??? &lt;br /&gt;
 IRQ7 - Tuner&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Modem==&lt;br /&gt;
Die [[DBox2]] hat ein eingebautes Modem. Dieses Modem war ursprünglich dafür vorgesehen, Mehrwertdienste und Abrechnungen über den Telefonanschluss zu ermöglichen. Das Modem im eigentlichen Sinne wird von [[Neutrino]] nicht unterstützt. Das Modem arbeitet mit 3,3V-[[TTL]] Pegeln (High=3,3V). Für eigene Anwendungen (Einbau eines zweiten [[COM]] Ports) muss der Signalpegel an die [[RS232]] Spezifikation angepasst werden. Diesbezügliche Schaltungen (meist basierend auf dem [[IC]] [http://pdfserv.maxim-ic.com/en/ds/MAX220-MAX249.pdf MAX232]&amp;lt;-Datenblatt) findet man zuhauf im Internet.&lt;br /&gt;
 &lt;br /&gt;
'''Die Anschlussbelegung des Steckers (Modem abgezogen, Blick von oben auf das Board):'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nokia=== &lt;br /&gt;
 1  3  5  7  9  11 13 15 17 19&lt;br /&gt;
 *  *  *  *  *  *  *  *  *  *&lt;br /&gt;
                                 ---&amp;gt; dbox Frontblende&lt;br /&gt;
 *  *  *  *  *  *  *  *  *  *&lt;br /&gt;
 2  4  6  8  10 12 14 16 18 20&lt;br /&gt;
 &lt;br /&gt;
 1  GND&lt;br /&gt;
 2  RTS&lt;br /&gt;
 3&lt;br /&gt;
 4&lt;br /&gt;
 5&lt;br /&gt;
 6  DTR&lt;br /&gt;
 7&lt;br /&gt;
 8  VCC&lt;br /&gt;
 9&lt;br /&gt;
 10 GND&lt;br /&gt;
 11 TxD&lt;br /&gt;
 12 RxD&lt;br /&gt;
 13 CTS&lt;br /&gt;
 14&lt;br /&gt;
 15 GND&lt;br /&gt;
 16&lt;br /&gt;
 17&lt;br /&gt;
 18&lt;br /&gt;
 19 GND&lt;br /&gt;
 20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Philips=== &lt;br /&gt;
 2  4  6  8  10 12 &lt;br /&gt;
 *  *  *  *  *  *  &lt;br /&gt;
                       -----&amp;gt; Netzteil&lt;br /&gt;
 *  *  *  *  *  *  &lt;br /&gt;
 1  3  5  7  9  11  &lt;br /&gt;
 &lt;br /&gt;
 1  VCC 5V&lt;br /&gt;
 2  GND&lt;br /&gt;
 3&lt;br /&gt;
 4  GND&lt;br /&gt;
 5&lt;br /&gt;
 6  RESET (von FP)&lt;br /&gt;
 7  &lt;br /&gt;
 8  &lt;br /&gt;
 9&lt;br /&gt;
 10 TxD &lt;br /&gt;
 11 &lt;br /&gt;
 12 RxD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sagem=== &lt;br /&gt;
  1  2  3  4  5  6  7  8  9 10 11 12&lt;br /&gt;
  *  *  *  *  *  *  *  *  *  *  *  *&lt;br /&gt;
                                      -----&amp;gt; Netzteil&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 1  SMTXD2&lt;br /&gt;
 2  SMRXD2&lt;br /&gt;
 3  GND&lt;br /&gt;
 4  CTS (PC4)&lt;br /&gt;
 5  Vpp&lt;br /&gt;
 6  !DTR (PB16)&lt;br /&gt;
 7  GND&lt;br /&gt;
 8  !DCD (PC15) &lt;br /&gt;
 9  !Resetleitung (vom FP)&lt;br /&gt;
 10 !RTS (PB17) &lt;br /&gt;
 11 KR/RETRY/IRQ4/SPKROUT (Pin B7 vom MPC823)&lt;br /&gt;
 12 !Sleepmode (vom FP)&lt;br /&gt;
&lt;br /&gt;
derget hat sich vor einiger Zeit mit dem Thema befasst und auf seiner [http://www.noernet.de/dbox2/modem/ Website] einige Erläuterungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LC-Display (LCD)==&lt;br /&gt;
Das [[LCD]] hängt mit seinen Adressleitungen direkt an der [[Hardware#Hauptprozessor_.28CPU.29|CPU]]. Die Hintergrundbeleuchtung wird durch den so genannten [[Hardware#Frontprozessor|Frontprozessor]] gesteuert. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Debug.jpg|thumb|none|Das [[LCD]] im [[Debug-Mode]] beim Starten]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Netzteil==&lt;br /&gt;
Das Netzteil der [[DBox2]] entspricht einem Standard-Schaltnetzteil, wie es heute in nahezu jedem elektronischen Gerät eingesetzt wird und dessen Leistungsaufnahme nicht durch ein konventionelles Netzteil abgedeckt werden kann. Schaltnetzteile zeichnen sich vor allem durch einen deutlich höheren Wirkungsgrad (geringe Verlustleistung) bei kleinerer Baugröße -vor allem des Trafos- aus, was sich u.a. in einer niedrigeren Wärmeentwicklung bemerkbar macht.&lt;br /&gt;
&lt;br /&gt;
Bei einem Schaltnetzteil wird im Primärteil die Wechselspannung in der Regel durch einen Brückengleichrichter mit anschließender Glättung und Siebung der Primärwicklung des Transformators zugeführt. Eine Elektronik (inkl. Oszillator, Taktfrequenz liegt je nach Netzteil zwischen 30-100kHz.) sorgt nun dafür, dass der in Reihe zur Primärwicklung liegende Schalttransistor einen kurzen Stromfluss durch die Primarwicklung erzeugt. Dadurch wird eine Spannung in die Sekundärwicklung des Transformators induziert. Die Pulslänge zum Durchsteuern des Schalttransistors bestimmt dabei die Amplitude (Höhe) der am Ausgang der Sekundärwicklung erzeugten Spannung. &lt;br /&gt;
&lt;br /&gt;
Durch die galvanische Trennung werden Störungen auf der Primärseite deutlich schwächer auf der Sekundärseite wiedergegeben. Im Weiteren wird die hochfrequente Sekundärspannung nun wieder gleichgerichtet und geglättet/gesiebt. Geeignete Stabilisierungsschaltungen sorgen für eine möglichst stabile Gleichspannung. Diese Spannung kann höher als die gleichgerichtete Eingangsspannung sein. Im Normalfall werden durch mehrere Sekundärwicklungen eine ganze Reihe von unterschiedlich hohen Spannungen erzeugt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==IR-Sender/Empfänger==&lt;br /&gt;
Die [[DBox2]] verfügt über einen [[IR]]-Empfänger, der am [[Hardware#Frontprozessor|Frontprozessor]] angeschlossen ist. Dieser Empfänger ist für die [[Fernbedienung]] und die optional erhältliche [[Keyboard]]-/[[Mouse]]-Kombination zuständig. &lt;br /&gt;
&lt;br /&gt;
Eine [[IR]]-Sendediode ist am [[Hardware#MPEG-2_Transport_Demultiplexer_Chip|Demux]] angeschlossen. Sie ist zur Aufnahmesteuerung eines Videorekorders gedacht, welche durch [[LIRC]] realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Am [[Hardware#MPEG-2_Transport_Demultiplexer_Chip|Demux]] ist auserdem eine weitere [[IR]]-Empfangsdiode angeschlossen, wodurch er theoretisch auch die Möglichkeit besitzt, ein IR-Signal zu dekodieren. Die Empfangsdiode ist dafür aber nicht geeignet, da im Gegensatz zum Frontprozessor der Demodulator fehlt. Wird allerdings ein entsprechender [[IR]]-Demodulator nachgerüstet, kann über [[LIRC]] oder einen alternativen Input-Event-Treiber auch ein Fernbedienungssignal ausgewertet werden.&lt;br /&gt;
&lt;br /&gt;
==Optischer Ausgang (S/P-DIF)==&lt;br /&gt;
Die [[DBox2]] besitzt hinten einen optischen Ausgang für das AC3-Signal, was teilweise mitgesendet wird. Dieser wird über ein TOTX178a von Toshiba realisiert und ist direkt an dem [[Hardware#MPEG-2_Audio.2FVideo_Decoder_Chip|AViA]] angeschlossen.&lt;br /&gt;
Die Reichweite beträgt maximal 5 Meter und die Datenrate maximal 6 Mb/s.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DiSEqC==&lt;br /&gt;
siehe: [[DiSEqC]].&lt;br /&gt;
&lt;br /&gt;
===DiSEqC mit der DBox2===&lt;br /&gt;
22kHz. Signale, also auch [[DiSEqC]], werden bei den Boxen von [[Nokia]] und [[Sagem]] vom [[Hardware#Frontprozessor|Frontprozessor]] erzeugt. Bei [[Philips]] übernimmt das [[Hardware#Tuner_.28Frontend.29|Frontend]] diese Aufgabe.&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=11371</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=11371"/>
		<updated>2009-04-20T18:19:31Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Einige Inhalte ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Die Erstellung von [[Images]] und [[Yadd]]s erfolgt durch einen neuen bzw. überarbeiteten &amp;quot;[[Make|make]]&amp;quot; Prozesses, bisher auch als &amp;quot;Newmake&amp;quot; bekannt. Der inzwischen auch als [[Image erstellen|Oldmake]] bezeichnete Bulidvorgang wurde komplett abgelöst. Dieser existiert allerdings weiterhin als eigenständiger Zweig (Branch) im Tuxbox-CVS und kann auch weiter verwendet und gepflegt werden. Die entsprechenden Artikel, die Oldmake betreffen, kann man unter [[Development |Development (Oldmake)]] finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Neben einer strukturierteren Basis, hat man jetzt den Vorteil, dass es auch ohne ohne großes Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Es gibt inzwischen auch eine auf Konsole basierende Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicherweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziemlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im August 2003, wurde es für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war es, das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. Es wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newmake, bis Ende 2008 verfügbar als alternativer [[Branch]] und seit 2009 als HEAD im [[CVS|CVS]], versucht diese Schwächen zu beseitigen. &lt;br /&gt;
Ein spezieller Dank an jeden, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[Images#DietmarW-Images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist es, dem Leser grundlegendes Know-How zu vermitteln. Es ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist es? =&lt;br /&gt;
Die Antwort könnte lauten: ''Es ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte es kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
Es gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets, um [[Images]] oder [[Yadd]]'s zu bauen. Diese wären logischerweise entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] über den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das über einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
Diese Daten befinden sich in der Regel in &lt;br /&gt;
*.../tftpboot&lt;br /&gt;
*.../cdkroot ''oder'' .../yaddroot&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile.&lt;br /&gt;
&lt;br /&gt;
''Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]]&lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. &lt;br /&gt;
&lt;br /&gt;
Dies wären: &lt;br /&gt;
*[[cramfs]] (komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) &lt;br /&gt;
*[[squashfs]] (komprimiertes read-only-[[Dateisystem|Dateisystem]] (wird allgemnein leistungsfähiger als [[cramfs]] angesehen)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
&lt;br /&gt;
Ein &amp;quot;'''[[Cramfs|cramfs]] Komplett-[[Image|Image]]'''&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''', dem schreibbaren Bereich eines [[Images]], gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dies gilt auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] bereits beschreibbar (var) ist.&lt;br /&gt;
Welches Dateisystem man verwendet, hängt im Wesentlichem davon ab, was und wieviel man in das Image packen möchte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei [[Flash]]chips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [GUI]-[Filesystem].img[1, 2]x &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Neben einem modernen [[Unix|Unix]]/[[Linux|Linux]] System ist '''ordentlich''' freier Speicherplatz zu empfehlen. Mit Speicherplatz sollte man deshalb nicht geizen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, es dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht es mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erforderlichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser Werkzeuge fehlt, oder wenn die Version zu alt zu sein scheint, ist es in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Hinweis''':&lt;br /&gt;
&lt;br /&gt;
''In anderen Anleitungen zum Buildvorgang wird gefordert, dass Werkzeuge wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erforderlich, da einige entweder überhaupt nicht benötigt werden bzw. die Installation im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird es fast sicher nicht funktionieren, da die [[GNU|GNU]]-Spezifikationen uneingeschränkt verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da es höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt es auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukunft geplant. Als Normalbenutzer werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P .&lt;br /&gt;
&lt;br /&gt;
Für ein Update der Quellen, diesen Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox up -dP .&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Es ist durchaus sinnvoll wegen des Traffics möglichst nur ein Update zu machen, als jedesmal komplett auszuchecken!''&lt;br /&gt;
&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&lt;br /&gt;
Wenn man zum ersten Mal kompiliert, ist es aber ratsam, vorerst keine Veränderungen vorzunehmen. Wenn Probleme auftreten, ist es viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er es machen soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt sicher noch andere nützliche Optionen. Einige werden weiter unten aufgelistet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit älteren Beschreibungen (Oldmake) vergleicht,&lt;br /&gt;
bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war es notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 make [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
 make flash-enigma+neutrino-squashfs-all&lt;br /&gt;
&lt;br /&gt;
diese Kombination erzeugt ein [[Squashfs]] [[Flash-Image]], welche [[Enigma]] und [[Neutrino]] gleichzeitig enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist es nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
 ccache is not yet installed, but installation starts on first build of cdk environment or you can run make ccache&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Falls [[Ccache]] nicht auf dem Host-System installiert ist, wird es beim ersten Bauvorgang automatisch eingebunden bzw. passend zum CDK installiert. Nachtraglich kann das Tool auch mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] eingebaut werden. Ein Configure des CDK sollte dem möglichst vorausgegangen sein.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Wirkung von [[Ccache]] macht sich logischrweise erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. Es stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden es logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Make]]-Optionen ====&lt;br /&gt;
Aktuell besteht auch die Möglichkeit den Bauvorgang mit der Makeoption '''-j''' zu beschleunigen. Hierbei können von [[Make]] gleichzeitig mehrere '''J'''obs erledigt werden, sofern diese keine Abhängigkeiten untereinander haben. Die Wirkungen sind durchaus auch von der verwendeten Hardware abhängig. Ein Rechner mit Mehrkern-Prozessor hat hier sicher die besseren Karten. Die Übergabe dieser Option erfolgt in dieser Form:&lt;br /&gt;
&lt;br /&gt;
 make J=[n] [target]&lt;br /&gt;
&lt;br /&gt;
'''n''' ist die Anzahl der Jobs, '''Target''' das jeweilige Ziel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
==== Neutrigma-[[squashfs]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein kombiniertes Enigma, Neutrino (Neutrigma)-Squashfs-Image, jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] flash-enigma+neutrino-squashfs-all&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
= Kernel 2.6.x =&lt;br /&gt;
&lt;br /&gt;
{{Bulid_kernel_26}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] mit den [[Installation:Neutrino|Expertenfunktionen]] zu benutzen, oder der ''dboxflasher'' zu verwenden. Der ''dboxflasher'' wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt.&amp;lt;br&amp;gt; &lt;br /&gt;
Siehe auch [[Installation]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. Es ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird es, falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann es auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. Es gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
Es gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. Es säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 cvs up -r HEAD &amp;gt; cvs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. Es gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Ein &amp;quot;Schreckgespenst&amp;quot; für viele &amp;quot;[[Oldmake]]rs&amp;quot; ist anscheinend die so genannte [[Customization|Customization]]. Dies kann man immer wieder aus diversen Meinungen und Forumsbeiträgen diverser &amp;quot;Oldmaker&amp;quot; herauslesen. Ein Grund dafür dürfte wohl die scheinbare &amp;quot;gefühlte&amp;quot; Unmenge an Scripten sein, die damit in Verbindung gebracht wird. &lt;br /&gt;
Grundsätzlich ist es aber so, dass man zuerst einmal ein [[Image]] und/oder [[Yadd]] bauen sollte, ganz ohne Zusätze, um zumindest erst einmal zu sehen, was dabei herauskommt. Dies sind, also nichts weiter als beispielsweise völlig normale Images. Die flasht man sich auf die Box und kann man zweckentsprechend verwenden. Mehr erstmal nicht. Dies dürfte auch völlig ausreichend sein, aber wir sind ja Bastler und wollen ja mehr...und daraus ergibt sich der Bedarf an der Nutzung dieser [[Customization|Customization]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Will man z.B. ein Image für den Hausgebrauch bauen, mit dem man nach dem flashen sofort fernsehen will, kann man sich z.B. alle benötigten Firmawaredateien (Ucodes), Senderlisten usw. an Ort und Stelle im Image platzieren lassen, ohne dass es Änderungen an irgendeinem Makefile bedarf.  Das gleiche gilt auch, wenn man bespielsweise ein [[IDE-Interface]] betreiben möchte. Da das Tuxbox-Projekt hierfür enstprechende Möglichkeiten bereit hält, gibt es dafür auch entsprechende fertige Konfigurations-Optionen, die die entsprechende Funktionalität herstellen.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
Hier sollen zunächst einige verschiedene Möglichkeiten für die Konfigurations-Optionen vorgestellt werden.&lt;br /&gt;
Eine Komplettübersicht aller Optionen lässt sich mit&lt;br /&gt;
 ./configure --help&lt;br /&gt;
abrufen&lt;br /&gt;
&lt;br /&gt;
====--with-ucodesdir=[DIR]====&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes (Firmaredateien]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====--with-logosdir=[DIR]==== &lt;br /&gt;
Legt ein Verzeichniss fest, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&lt;br /&gt;
====--with-defaultlocale=[LOCALE]====&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
====--with-rootpartitionsize=[SIZE]====&lt;br /&gt;
Legt die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] fest. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls es wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
====--with-updatehttpprefix=[URL]====&lt;br /&gt;
Nützlich für das Verteilen von Onlineupdates oder auch nur um im eigenen Heimnetzwerk mit Hilfe eines Servers seine Boxen up-to-date zu halten, ist die Angabe einer Updateadresse (Update-URL). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Adresse wird in dieser Form angegeben:&lt;br /&gt;
 --with-updatehttpprefix=&amp;lt;nowiki&amp;gt;http://www.deine-updateseite.de&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Adresse erscheint beispielsweise in der Versionsdatei ''(.version)'', in den [[Neutrino:Service:Image_Informationen|Image-Informationen]] von [[Neutrino]] und sorgt dafür, dass Online-Updates über das [[Netzwerk]] abgerufen werden können (siehe: [[Neutrino:Service:Software-Aktualisierung]]).&lt;br /&gt;
Serverseitig muss natürlich auch eine entsprechende Informationsquelle für die entsprechenden Updates vorhandene sein. Dies übernehmen die sogenannten ''*.list''-Files, dessen Adresse in die Datei &lt;br /&gt;
 /etc/update.urls (siehe [[Neutrino:Service:Software-Aktualisierung#Experten-Funktionen|Experten-Funktionen]])&lt;br /&gt;
eingetragen werden muss.&lt;br /&gt;
Je nachdem was für ein Update abgerufen werden soll, werden dafür verschiedene ''*.list''-Files benötigt.&lt;br /&gt;
*img.list für Komplettimages&lt;br /&gt;
*cramfs.list für Root-cramfs Updates&lt;br /&gt;
*squashfs.list für Root-squashfs Updates&lt;br /&gt;
Diese ''*.list''-Files enthalten alle Informationen die für das Online-Update benötigt werden. Das Format sollte so aussehen:&lt;br /&gt;
 [URL zum Update-file] [md5-Prüfsumme] [Image-Versions-String] [Name für das Image]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://www.deine-homepage.de/downloads/Image-v2.0_neutrino_squashfs_1200200808281200_1x.img 06c30a36329d990194f249d3a3648aec 1200200808281200 Image-v2.0_1x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einträge in die ''*.list''-Files und ''update.urls'' lassen sich mit Hilfe von [[Newmake#Customization-Scripte|Customization-Scripte]]n erzeugen und anschließend ins Image einfügen (siehe auch: [[Newmake#.2F.version_anpassen|.version_anpassen]]). Die ''*.list''-Files können mit diversen Werkzeugen (z.B. ''ncftpput'') auf einen Server geladen werden.&lt;br /&gt;
Zu beachten wäre noch, das beim Update selbst zur Neutrino-Laufzeit eine Prüfung des Release-Zyklus erfolgt. Bei Neutrino ist derzeit 2.0 aktuell und sollte eingehalten werden. Ändern kann man dies in ''[[update.cpp]]'', zu finden im [[Neutrino]] CVS-Quellcode unter &lt;br /&gt;
 ./apps/tuxbox/neutrino/src/gui/[[update.cpp]]&lt;br /&gt;
&lt;br /&gt;
====--with-targetprefix=DIR==== &lt;br /&gt;
* standard: ''PREFIX/cdkroot''&lt;br /&gt;
Gibt an, wohin alle Targets gebaut werden sollen. Ein Target mit Namen ''make busybox'' baut also standardmäßig [[busybox]] genau dorthin. &lt;br /&gt;
*''PREFIX/cdkroot/bin''&lt;br /&gt;
&lt;br /&gt;
====--with-flashprefix=DIR==== &lt;br /&gt;
* standard: ''PREFIX/cdkflash''.&lt;br /&gt;
Gibt an, wohin alle Flash-Targets gebaut werden sollen.  Also ein Target mit Namen ''make flash-busybox'' baut also standardmäßig [[busybox]] genau dorthin: &lt;br /&gt;
*''PREFIX/cdkflash/root/bin''&lt;br /&gt;
Da beispielsweise das Flash-Target make ''flash-neutrino-squashfs'' gewisse Abhängigkeiten hat, die auch [[busybox]] betreffen, wird [[busybox]] auch hier hin gbaut.&lt;br /&gt;
*''PREFIX/cdkflash/root-neutrino-squashfs/bin''&lt;br /&gt;
&lt;br /&gt;
====--with-hostprefix=DIR====&lt;br /&gt;
* standard: *''PREFIX/cdk''&lt;br /&gt;
Gibt an wohin die Binaries für das [[Tuxbox-CDK]] optional gebaut werden&lt;br /&gt;
&lt;br /&gt;
====--with-bootprefix=DIR====&lt;br /&gt;
*standard: *''PREFIX/tftpboot''&lt;br /&gt;
Gibt optional an wohin die Bootfiles ([[Kernel]], [[U-boot]]) für das [[CDK]] bzw. [[Yadd]] gebaut werden&lt;br /&gt;
&lt;br /&gt;
====--with-serversupport=DIR====&lt;br /&gt;
* standard: *''PREFIX/serversupport''&lt;br /&gt;
Hier werden die Vorlagen der Konfigurationsdateien optional abgelegt, die für die Einrichtung eines bootfähigen [[CDK]] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
====--with-customizationsdir=DIR====&lt;br /&gt;
* standard: *''cvsdir/cdk''&lt;br /&gt;
Hier werden optional die Customization-Scripte abgelegt, um vom Makeprozess dort abgerufen werden zu können. &lt;br /&gt;
&lt;br /&gt;
====--with-checkImage=[none,rename,warn]====&lt;br /&gt;
Gibt an, wie die Prüfung von Imaages erfolgen soll&lt;br /&gt;
*''none''=nichts&lt;br /&gt;
*''rename''=umbenennen (Image erhält die Endung -bad)&lt;br /&gt;
*''warn''=selbstredend&lt;br /&gt;
&lt;br /&gt;
====--with-cvsdir=DIR====&lt;br /&gt;
Gibt an, wo sich optional das CVS-Verzeichnis befindet&lt;br /&gt;
&lt;br /&gt;
====--with-appsdir=DIR====&lt;br /&gt;
* standard: ./cvsdir/apps&lt;br /&gt;
Gibt an, wo sich optional das apps-Quellcodeverzeichnis befindet.&lt;br /&gt;
Nützlich um auch andere Repositories als die aus dem Tuxbox-CVS einzubinden. Eine Möglichkeit wäre es z.B. ein geklontes git-Repository einzubinden, die derzeit von einigen Tuxboxentwicklern parallel betreut werden. &lt;br /&gt;
siehe: http://gitorious.org/projects/tuxbox-apps &lt;br /&gt;
&lt;br /&gt;
====--with-bootdir=DIR====&lt;br /&gt;
* standard: ./cvsdir/boot&lt;br /&gt;
Gibt an wo sich optional das boot-Quellcodeverzeichnis befindet&lt;br /&gt;
&lt;br /&gt;
====--with-driverdir=DIR====&lt;br /&gt;
* standard: ./cvsdir/driver&lt;br /&gt;
Gibt an wo sich optional das driver-Quellcodeverzeichnis befindet&lt;br /&gt;
&lt;br /&gt;
====--with-hostappsdir=DIR====&lt;br /&gt;
* standard: ./cvsdir/hostapps&lt;br /&gt;
Gibt an wo sich optional das hostapps-Quellcodeverzeichnis befindet&lt;br /&gt;
&lt;br /&gt;
====--with-gnuserver=ADDRESS====&lt;br /&gt;
Optionale Serveradresse für GNU-Sourcen (ohne ftp://)&lt;br /&gt;
&lt;br /&gt;
====--with-defaultserver=ADDRESS====&lt;br /&gt;
Serveradresse die genommen wird falls ein Server nicht verfügbar ist (ohne http://)&lt;br /&gt;
&lt;br /&gt;
====--with-busybox-conf=M4-File====&lt;br /&gt;
* standard: ./cvsdir/cdk/Patches/busybox.config.m4&lt;br /&gt;
Hier kann optional eine eigene M4-Macro-Konfigurationsdatei angegeben werden&lt;br /&gt;
&lt;br /&gt;
====--with-yadd-kernel-conf=FILE   --with-flash-kernel-conf=FILE====&lt;br /&gt;
* standard: ./cvsdir/cdk/Patches&lt;br /&gt;
Hier kann optional eine Konfigurationsdatei jeweils für Flash oder Yadd angegeben werden&lt;br /&gt;
&lt;br /&gt;
====--with-filesystems=comma seperated list of filesystems====&lt;br /&gt;
Hier können durch Komma getrennte Filesysteme angegeben werden. (siehe --enable-xfs, --disable-ext3) &lt;br /&gt;
 --with-filesystems=extfs,xfs,nfs,cifs,vfat,smbfs,lufs&lt;br /&gt;
''extfs'' stellt ein Alias für ''ext2'' und ''ext3'' dar, kann aber auch einzeln verwendet werden.&lt;br /&gt;
Der erste Eintrag wird als Standard verwendet und in der ''/etc/[[fstab]]'' verwendet &lt;br /&gt;
&lt;br /&gt;
====--enable-uclibc====&lt;br /&gt;
Aktviert Makerules für uClibc verlinkte Targets (derzeit noch experimentell) '''Erfahrungswerte erwünscht'''!&lt;br /&gt;
&lt;br /&gt;
====--enable-maintainer-mode====&lt;br /&gt;
Ermöglicht den hergestellten [[Makefiles|Makefiles]], sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]]. &lt;br /&gt;
&lt;br /&gt;
====--enable-kernel26====&lt;br /&gt;
Es wird statt des üblichen 2.4.xer Kernel ein 2.6.xer Kernel gebaut (derzeit noch experimentell) '''Erfahrungswerte erwünscht'''!&lt;br /&gt;
'''Hinweis:''' ''Hierfür ist es notwendig die entsprechenden Treiber im Kernel2.6er CVS-Branch auszuchecken!'' Siehe auch: [[Images_und_Yadd%27s_mit_Kernel_2.6|Images_und_Yadd's_mit_Kernel_2.6]]&lt;br /&gt;
&lt;br /&gt;
====--enable-lzma====&lt;br /&gt;
Images/Kernel werden mit [[Squashfs]]-[[Lzma]]-Unterstützung gebaut. Bootzeiten können dadurch länger werden, aber [[Images]] sind aufnahmefähiger.  &lt;br /&gt;
&lt;br /&gt;
====--enable-flashrules====&lt;br /&gt;
Targets für das bauen von [[Flash]]-[[Images]] werden aktiviert.&lt;br /&gt;
&lt;br /&gt;
====--enable-lirc====&lt;br /&gt;
Erzeugt Images/Yadds mit [[Lirc]]-Support&lt;br /&gt;
&lt;br /&gt;
====--enable-cdkVcInfo====&lt;br /&gt;
Das Tool [[cdkVcInfo]] wird automatisch mitgebaut. Diese Tool ist wie einige Andere auch ein Zusatz.&lt;br /&gt;
&lt;br /&gt;
====--enable-german-keymaps====&lt;br /&gt;
Tastatursupport&lt;br /&gt;
&lt;br /&gt;
====--enable-ide====&lt;br /&gt;
Ermöglicht das Bauen von Images/Yadds mit support für [[IDE-Interface]]s. Es werden hierfür die passenden Treiber und Kernel-Module gebaut.&lt;br /&gt;
&lt;br /&gt;
====--enable-mmc====&lt;br /&gt;
Ermöglicht das Bauen von Images/Yadds mit support für [[MMC]]s. Es werden hierfür die passenden Treiber und Kernel-Module gebaut.&lt;br /&gt;
&lt;br /&gt;
====--enable-sqlite====&lt;br /&gt;
Aktiviert SQL-Lite Support&lt;br /&gt;
&lt;br /&gt;
====--disable-ext3====&lt;br /&gt;
Deaktiviert Treiber für ext2/ext3 Dateisysteme (siehe --with-filesystems=)&lt;br /&gt;
Diese Option ist weiterhin gültig, kann aber weggelassen werden, wenn --with-filesystems aktiviert ist und wird nicht berücksichtigt, wenn --with-filesystems angegeben ist. &lt;br /&gt;
&lt;br /&gt;
====--enable-xfs====&lt;br /&gt;
Aktiviert Treiber für XFS und baut xfsprogs (siehe --with-filesystems=&amp;quot;xfs&amp;quot;)&lt;br /&gt;
Diese Option ist weiterhin gültig, kann aber weggelassen werden, wenn --with-filesystems aktiviert ist und wird nicht berücksichtigt, wenn --with-filesystems angegeben ist.&lt;br /&gt;
&lt;br /&gt;
====--enable-nfsserver====&lt;br /&gt;
Ermöglicht das Bauen eines NFS-Servers&lt;br /&gt;
&lt;br /&gt;
====--enable-sambaserver====&lt;br /&gt;
Ermöglicht das Bauen eines Samba-Servers&lt;br /&gt;
&lt;br /&gt;
====--enable-dosfstools====&lt;br /&gt;
Es werden dos Filesystem Werkzeuge gebaut&lt;br /&gt;
&lt;br /&gt;
====--enable-upnp====&lt;br /&gt;
Es wird Unterstützung fur upnp eingebaut, ermöglicht die Box als upnp-Client zu benutzen&lt;br /&gt;
&lt;br /&gt;
====--enable-flac====&lt;br /&gt;
Support für flac-Files im Audioplayer&lt;br /&gt;
&lt;br /&gt;
====--enable-ccache====&lt;br /&gt;
Aktiviert [[Kompiler]]-Unterstützung durch [[ccache]]&lt;br /&gt;
&lt;br /&gt;
====--enable-movieplayer2====&lt;br /&gt;
Aktiviert den MP2 für Neutrino (derzeit noch experimentell) '''Erfahrungswerte erwünscht'''!&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
Es sind noch weitere Benutzeranpassungen möglich. Dafür ist es aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hiermit ist es möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== für andere Targets ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden (siehe auch [[Newmake#.2F.version_anpassen|Anpassung .version-File]]):&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beispiele für Customization ====&lt;br /&gt;
Das Customizationscripting soll hier durch einige Beispiele noch mehr veranschaulicht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
''Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, es sei denn es ist ungefährlich und Ihr versteht, wie sie funktionieren. Es ist grundlegende Script-Erfahrung erfordelich.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Lirc Komponenten einbauen =====&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== procps-Varianten von ps und top einbauen =====&lt;br /&gt;
Im Image werden die procps-Varianten von [[WP:Ps_%28Unix%29|ps]] und [[WP:Unix-Kommando#Prozessmanagement|top]] anstelle der [[WP:busybox|Busybox]]-Version gewünscht.&lt;br /&gt;
&lt;br /&gt;
In root-local.sh&lt;br /&gt;
&lt;br /&gt;
  make procps&lt;br /&gt;
&lt;br /&gt;
hinzufügen.&lt;br /&gt;
&lt;br /&gt;
In root-neutrino-local.sh&lt;br /&gt;
&lt;br /&gt;
  for i in top ps; do&lt;br /&gt;
    cp -va $flashprefix/../cdkroot/bin/$i $flashprefix/root-neutrino/bin/&lt;br /&gt;
    rm -v $flashprefix/root/bin/$i&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Games und Languages nuker ===== &lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== /.version anpassen =====&lt;br /&gt;
&lt;br /&gt;
{{edit_version_file}}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Eine eigene ''/.version''-File herzustellen (angezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und [[cdkVcInfo]] beim Booten) ist daher sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== mkversion ===== &lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Archivierung der [[Images|Images]] =====&lt;br /&gt;
Es ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. Es benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
Es ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird es auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist es durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
Es gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. Es wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann es die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man es''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;es funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß es nicht. Wir [[Wissen|wissen]] es nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, es ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox es zurückweisen wird, weil es einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). Es ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Diskussion:Neutrino:Einstellungen:Video&amp;diff=11324</id>
		<title>Diskussion:Neutrino:Einstellungen:Video</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Diskussion:Neutrino:Einstellungen:Video&amp;diff=11324"/>
		<updated>2009-04-01T06:18:23Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: RGB-Justierung -- ~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== RGB-Justierung -- [[Benutzer:Dixidix|Dixidix]] 08:18, 1. Apr. 2009 (CEST) ==&lt;br /&gt;
&lt;br /&gt;
Zitat: &lt;br /&gt;
''ACHTUNG: Wird hier ein anderer Wert als &amp;quot;0&amp;quot; eingestellt, dann wird an den Composite-Ausgängen (sowohl am TV- als auch am VCR-SCART) kein Bildsignal mehr ausgegeben, d. h. eine Aufnahme des Videosignals durch einen an VCR-SCART angeschlossenen Videorekorder funktioniert nicht mehr und der Fernseher an TV-SCART zeigt kein Bild mehr, falls er das nur das Composite-Signal (und nicht das RGB-Signal) verwendet oder falls das SCART-Kabel nicht voll belegt ist.''&lt;br /&gt;
Ist das wirklich so, ist mir noch nie aufgefallen?&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Bootlog&amp;diff=11304</id>
		<title>Bootlog</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Bootlog&amp;diff=11304"/>
		<updated>2009-03-10T19:02:46Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Bootlogaktivierung für GUI hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Das [[Bootlog]] (= serielles Log) wird benötigt, um z.B. Ausgaben über den Startvorgang oder  allgemeine Ausgaben während des Betriebes der [[DBox2]]-Software analysieren zu können.&lt;br /&gt;
 &lt;br /&gt;
=Vorraussetzungen=&lt;br /&gt;
Um das [[Bootlog]] zu bekommen, benötigt man Folgendes: &lt;br /&gt;
&lt;br /&gt;
* in der GUI muss die Logausgabe entsprechend aktiviert sein siehe z.B: [[Neutrino:Einstellungen:Treiber-_%26_Bootoptionen#EXPERT.21_Boot-Konsole|Neutrino-Einstellungen]]&lt;br /&gt;
* Terminal-Programm (z.B. Hyperterminal) oder [[DBox2]]-[[Bootmanager]] oder [[Minicom]] unter Linux&lt;br /&gt;
* [[Nullmodem|Null-Modemkabel]]&lt;br /&gt;
&lt;br /&gt;
alternativ, wenn kein Nullmodemkabel verwendet wird:&lt;br /&gt;
* mit  ''[[setconsole]]'' (über [[BusyBox]] aktiviert)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
''[[Setconsole]] ist nicht in jedem [[Image]] enthalten.'' &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Wenn Ihr nicht wisst, was ein [[Nullmodem|Null-Modemkabel]] oder Terminal-Programm ist, solltet Ihr besser nicht versuchen eine [[DBox2]] mit [[Linux]] zu [[flashen]]. Wer trotzdem unerschrocken und lernwillig ist, möge [http://www.google.de Google] für weitere Informationen bemühen. Für die Nutzung des [[DBox2]]-[[Bootmanager]]s lest bitte die entsprechende Anleitung, welche im Readme des Bootmanagers zu finden sein sollte! &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Einstellungen=&lt;br /&gt;
* [[Nullmodem]]kabel mit [[DBox2]] und [[PC]] (Com1 od. Com2) verbinden &lt;br /&gt;
&lt;br /&gt;
* Schnittstelle am [[PC]] entsprechend konfigurieren. Stellt die benutzte [[COM]]-Schnittstelle auf 9600 Baud, 8bit, no parity &lt;br /&gt;
 &lt;br /&gt;
* [[DBox2]] starten und gucken, ob eine Ausgabe im Terminalprogramm erfolgt. Wenn nein (oder nur unleserliche Zeichen), Schnittstelle auf 57600 Baud, 8 bit, no parity konfigurieren und [[DBox2]] wieder neu booten. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Im Terminal-Programm sollten eine lange Liste der von der [[DBox2]] durchgeführten Aktionen stehen. Dies ist das Bootlog... &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Beispiel (extrem gekürzt): &lt;br /&gt;
 &lt;br /&gt;
 debug: DDF: Calibrating delay loop... debug: DDF: 67.79 BogoMIPS &lt;br /&gt;
 debug: BMon V1.2 mID 01 &lt;br /&gt;
 debug: feID dd gtxID 0b &lt;br /&gt;
 debug: fpID 5a dsID 01-8b[....] &lt;br /&gt;
 debug: HWrev 09 FPrev 0.81 &lt;br /&gt;
 debug: B/Ex/Fl(MB) 32/00/08 &lt;br /&gt;
 WATCHDOG reset enabled &lt;br /&gt;
 dbox2:root&amp;gt; debug: &lt;br /&gt;
 BOOTP/TFTP bootstrap loader (v0.3) &lt;br /&gt;
 debug: &lt;br /&gt;
 debug: Transmitting BOOTP request via broadcast &lt;br /&gt;
 debug: Given up BOOTP/TFTP boot &lt;br /&gt;
 boot net failed &lt;br /&gt;
  &lt;br /&gt;
 Flash-FS bootstrap loader (v1.5) &lt;br /&gt;
 &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
 Initializing... &lt;br /&gt;
 CPU: PPC823ZTnnB2 at 67 MHz: 2 kB I-Cache 1 kB D-Cache &lt;br /&gt;
 Board: ### No HW ID - assuming TQM8xxL &lt;br /&gt;
 DRAM: (faked) 32 MB &lt;br /&gt;
 Ethernet: ..... &lt;br /&gt;
 FLASH: 8 MB &lt;br /&gt;
 LCD driver (KS0713) initialized &lt;br /&gt;
 LCD logo at: 0x84A7E (0x1E00 bytes) &lt;br /&gt;
 FB logo at: 0x868A6 (0x31C1 bytes) &lt;br /&gt;
 AVIA Frambuffer &lt;br /&gt;
 Input: serial &lt;br /&gt;
 Output: serial &lt;br /&gt;
 &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
 events are old 60min after their end time &lt;br /&gt;
 [sectionsd ] checking timerd &lt;br /&gt;
 [sectionsd ] timerd available &lt;br /&gt;
 dmxdev: set buffer size 40000 -&amp;gt; 60000 &lt;br /&gt;
 $Id: zapit.cpp,v 1.163 2002/04/24 18:51:18 field Exp $ &lt;br /&gt;
 &lt;br /&gt;
 /var/tuxbox/config/zapit/zapit.conf: No such file or directory &lt;br /&gt;
 [getservices.cpp] /var/tuxbox/config/zapit/services.xml: No such file or directory &lt;br /&gt;
 [zapit] /var/tuxbox/config/zapit/bouquets.xml: No such file or directory &lt;br /&gt;
 [zapit] channels have been loaded succesfully &lt;br /&gt;
 Controld $Id: controld.cpp,v 1.57 2002/03/29 15:47:18 obi Exp $ &lt;br /&gt;
 &lt;br /&gt;
 [controld] Boxtype detected: (01, 1, 1, Nokia) &lt;br /&gt;
 set event: 00000009 &lt;br /&gt;
 SWITCH LETTER BOX &lt;br /&gt;
 [nhttpd] [[Neutrino]] HTTP-Server starting.. &lt;br /&gt;
 &lt;br /&gt;
 httpd gestartet &lt;br /&gt;
 dmxdev: set buffer size 40000 -&amp;gt; 60000 &lt;br /&gt;
 NeutrinoNG $Id: neutrino.cpp,v 1.243 2002/04/24 13:06:58 field Exp $ &lt;br /&gt;
 &lt;br /&gt;
 [neutrino] frameBuffer Instance created &lt;br /&gt;
 [...] &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=Hinweis=&lt;br /&gt;
Bricht das [[Bootlog]] nach &lt;br /&gt;
&lt;br /&gt;
 Image Type: PowerPC Linux Kernel Image (gzip compressed) &lt;br /&gt;
 Data Size: 576993 Bytes = 563 kB = 0 MB &lt;br /&gt;
 Load Address: 00000000 &lt;br /&gt;
 Entry Point: 00000000 &lt;br /&gt;
 Verifying Checksum ... OK &lt;br /&gt;
 Uncompressing Kernel Image ... OK &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
ab, dann startet die [[DBox2]] nochmal und drückt die &amp;quot;2&amp;quot; (auf der [[Fernbedienung]]) an dieser Stelle: &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Options: &lt;br /&gt;
 1: Console on null &lt;br /&gt;
 2: Console on ttyS0 &lt;br /&gt;
 3: Console on framebuffer &lt;br /&gt;
 Select (1-3), other keys to stop autoboot: 0 &lt;br /&gt;
&lt;br /&gt;
=Bootlog über Netzwerk=&lt;br /&gt;
Es besteht die Möglichkeit, über den Befehl ''[[setconsole]]'', ein Log über [[Telnet]] über das [[Netzwerk]] aufzuzeichnen. Vorraussetzung dafür ist, dass Dbox-Taste -&amp;gt; Einstellungen -&amp;gt; Treiber- und Bootoptionen -&amp;gt; Expert! Bootconsole auf seriell steht. Die Ausgaben über das Netzwerk sind unter Umständen nicht so ausführlich wie ein serielles Bootlog. Man sollte daher immer ein Bootlog über die serielle Schnittstelle vorziehen. Das erleichtert in der Regel immer die Suche nach Fehlern.&lt;br /&gt;
&lt;br /&gt;
=Kernel-Log ausgeben=&lt;br /&gt;
Mit dem Befehl &amp;quot;dmesg&amp;quot; (alternativ mit &amp;quot;cat /proc/kmsg&amp;quot;) kann man sich mittels [[Telnet]] den [[Kernel]]-Log ausgeben lassen. Auch hier sollte immer ein Bootlog über die serielle Schnittstelle vorgezogen werden. Die dmesg-Ausgaben sind bei weitem nicht so üppig wie es über die serielle Schnittstelle möglich wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Senderlisten&amp;diff=11043</id>
		<title>Neutrino:Senderlisten</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Senderlisten&amp;diff=11043"/>
		<updated>2008-11-13T07:33:45Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
{{MissingText}}&lt;br /&gt;
&lt;br /&gt;
=satellites.xml=&lt;br /&gt;
In dieser Datei sind die verschiedenen Satelliten und die Transponder beschrieben, die bei einem Sendersuchlauf abgescannt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die Datei aktuell zu halten am besten öfter mal auf [http://www.lyngsat.com Lyngsat.com] nachsehen: [http://www.lyngsat.com/astra19.shtml Astra], [http://www.lyngsat.com/hotbird.shtml Eutelsat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man die Datei ersetzten kann, zunächst den symbolischen Link per telnet löschen: rm var/tuxbox/config/satellites.xml.&lt;br /&gt;
Danach an die selbe Stelle die eigene satellites.xml aufspielen (gilt ebenso für cables.xml).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;satellites&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Astra 19.2E&amp;quot; flags=&amp;quot;9&amp;quot; position=&amp;quot;192&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;10876000&amp;quot; symbol_rate=&amp;quot;22000000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12187500&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12551000&amp;quot; symbol_rate=&amp;quot;22000000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Eutelsat 13.0E&amp;quot; flags=&amp;quot;5&amp;quot; position=&amp;quot;130&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12692000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       ....&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12539000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12111000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
 &amp;lt;/satellites&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 150px;&amp;quot;|&amp;lt;satellites&amp;gt;  &amp;lt;/satellites&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;sat...&amp;gt;  &amp;lt;/sat&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf den selben Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=“Astra 19.2E“&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Name des Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|flags=“9“&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|1 = Network Scan&lt;br /&gt;
Bei der Netzwerksuche werden die Werte aus den Transpondern ausgewertet. In vielen Transpondern ist eine Liste mit weiteren Transpondern enthalten, so dass beim Suchlauf automatisch weitere Transponder mit einbezogen werden, wenn die satellites.xml nicht vollständig ist. Leider sind die Daten oft fehlerhaft, so dass es wichtig ist die satellites.xml immer auf den neuesten Stand zu halten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 = use BAT -- BAT=Bouquet Association Table. &lt;br /&gt;
&lt;br /&gt;
Informationen im Datenstrom über die Zugehörigkeit von Programmpaketen zu einem bestimmten Bouquet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4 = use ONIT -- NIT=Network Information Table. &lt;br /&gt;
&lt;br /&gt;
In der Netzwerks-Informations-Tabelle im Datenstrom eines Satelliten sind Transponder angegeben, auf der weitere Sender zu finden sind. -&amp;gt; Kanalnummer und Frequenz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8 = skip NITs of known networks -- NIT=Network Information Table. &lt;br /&gt;
&lt;br /&gt;
In der Netzwerks-Informations-Tabelle im Datenstrom eines Transponders sind die Daten anderer Transponder angegeben, auf denen weitere Sender zu finden sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; 9=8+1 Kombination aus verschiedenen Flags durch Addition der Werte möglich. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|position=&amp;quot;192&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Position des Satelliten im Orbit -&amp;gt; 19,2°&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;transponder ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Transponder&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|frequency=&amp;quot;10876000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponderfrequenz des Satelliten 10,876 GHz&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|symbol_rate=&amp;quot;22000000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Symbolrate 22000&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|polarization=&amp;quot;1&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 0=horizontal, 1=vertikal (2=linksdrehend, 3=rechtsdrehend)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|fec_inner=&amp;quot;4&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|FEC=Forward Error Correction:&lt;br /&gt;
Mit dem Nutzsignal werden zusätzliche Daten übertragen, mit deren Hilfe bei einer Übertragunsstörung das Nutzsignal rekonstruiert werden kann. Der Wert der FEC zeigt das Verhältnis zwischen Daten für Fehlerkorrektur zu den Daten des Nutzsignals an. Ein Wert von 5/6 bedeutet: 5 Bytes werden für die Datenübertragung benutzt und 1 Byte für die Fehlerkorrektur. Das bedeutet auch, das 1/6 der Bandbreite für die Fehlerkorrektur &amp;quot;verschwendet&amp;quot; wird. Bei einem Wert von 1/2 wird die Hälfte der Bandbreite zur Fehlerkorrektur verwendet.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe der Symbolrate und der FEC kann man Datenrate errechnen:&lt;br /&gt;
Nettodatenrate = Symbolrate (2 * FEC) (188/204)&lt;br /&gt;
&lt;br /&gt;
Beispiel: Symbolrate=27500, FEC=3/4&lt;br /&gt;
&lt;br /&gt;
Nettodatenrate = 27500 (2 * 3/4) (188/204) = 38014,71 Mbps&lt;br /&gt;
&lt;br /&gt;
Neues Format:&lt;br /&gt;
*FEC 1/2 =&amp;gt; fec_inner=1&lt;br /&gt;
*FEC 2/3 =&amp;gt; fec_inner=2&lt;br /&gt;
*FEC 3/4 =&amp;gt; fec_inner=3&lt;br /&gt;
*FEC 4/5 =&amp;gt; fec_inner=4&lt;br /&gt;
*FEC 5/6 =&amp;gt; fec_inner=5&lt;br /&gt;
*FEC 6/7 =&amp;gt; fec_inner=6&lt;br /&gt;
*FEC 7/8 =&amp;gt; fec_inner=7&lt;br /&gt;
*FEC 8/9 =&amp;gt; fec_inner=8&lt;br /&gt;
*AutoFEC =&amp;gt; fec_inner=9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Früheres Format:&lt;br /&gt;
*FEC 1/2 =&amp;gt; fec_inner=1&lt;br /&gt;
*FEC 2/3 =&amp;gt; fec_inner=2&lt;br /&gt;
*FEC 3/4 =&amp;gt; fec_inner=3&lt;br /&gt;
*FEC 5/6 =&amp;gt; fec_inner=4&lt;br /&gt;
*FEC 7/8 =&amp;gt; fec_inner=5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei meiner Box funktioniert das neue Format jedoch nicht (cramfs v. 18.02.03). Bei einem Sendersuchlauf wird die FEC, bei meiner Box, im alten Format in die services.xml geschrieben. Deshalb hab ich hier jetzt beide Möglichkeiten dargestellt. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=cables.xml=&lt;br /&gt;
{{MissingText}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=services.xml=&lt;br /&gt;
Senderliste. Die Datei Services.xml wird bei der Sendersuche automatisch angelegt. Hier werden die gefundenen Sender/Services zu den Transpondern zugeordnet abgelegt. Man kann diese Liste von Hand bearbeiten und erweitern, ohne dass ein Sendersuchlauf notwendig ist.&lt;br /&gt;
Die services.xml liegt im Verzeichnis /var/tuxbox/config/zapit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;zapit&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Astra 19.2E&amp;quot; diseqc=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder id=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; frequency=&amp;quot;11836500&amp;quot;  inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; fec_inner=&amp;quot;3&amp;quot; polarization=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dca&amp;quot; name=&amp;quot;Das Erste&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcb&amp;quot; name=&amp;quot;Bayerisches FS&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcc&amp;quot; name=&amp;quot;hessen fernsehen&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcd&amp;quot; name=&amp;quot;arte&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dce&amp;quot; name=&amp;quot;SR Fernsehen Suedwest&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcf&amp;quot; name=&amp;quot;WDR FERNSEHEN&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dd0&amp;quot; name=&amp;quot;BR-alpha&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;/transponder&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
 &amp;lt;/zapit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 160px;&amp;quot;|&amp;lt;zapit&amp;gt;  &amp;lt;/zapit&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;sat...&amp;gt;  &amp;lt;/sat&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf den selben Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Astra 19.2E&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Name des Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|diseqc=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|[[DiSEqC]] = Digital Satellite Equipment Control. Ermöglicht das Anwählen verschiedener Satellitenpositionen mit Hilfe der Umschaltung durch digitale Impulse.&lt;br /&gt;
Dabei steht &amp;quot;0&amp;quot; für LNB 1 (Astra) u. &amp;quot;1&amp;quot; für LNB 2 (Eutelsat).&lt;br /&gt;
&lt;br /&gt;
Zusammen mit dem Wert für diseqcType in der zapit.conf werden die DiSEqC-Einstellungen bestimmt. Die DiSEqC-Einstellungen in den Neutrino-Menüs gelten nur für den Sendersuchlauf und haben bei Änderungen keine Auswirkungen auf die bereits vorhandene Senderliste.&lt;br /&gt;
&lt;br /&gt;
Wenn DiSEqC nicht funktioniert, liegt es häufig daran, dass der Wert für den diseqcType in der zapit.conf nicht stimmt. Dieser muss meistens auf &amp;quot;2&amp;quot; stehen, bei Astra/Hotbird-Anlagen meistens auf &amp;quot;3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
DisEqC diseqcType&lt;br /&gt;
*kein 0?&lt;br /&gt;
*Mini 1?&lt;br /&gt;
*1.0 2&lt;br /&gt;
*1.1 3?&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;transponder......&amp;gt; &amp;lt;/transponder&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesem Bereich bezieht sich auf einen bestimmten Transponder&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponder_id=&amp;quot;044d&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|ID-Nummer des Transponders (TSID o. TID). Identifiziert einen Transponder/Multiplex innerhalb eines Netzwerks. Jede Transponder-ID existiert pro zugehöriger NID/ONID nur ein mal, kann jedoch pro Satellit öfter vorkommen.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 044d (hex) = 1101 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|onid=&amp;quot;0001&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|OriginalNetworkIdentifikation (ONID, NID). Identifiziert einen Netzwerkprovider. Die Kombination von ONID und TID identifiziert einen Transponder/Multiplex eindeutig. Die ONID ist nicht die Bezeichnung des Satelliten.&lt;br /&gt;
Wert ist hexadezimal anzugeben: onid=&amp;quot;0001&amp;quot; =&amp;gt; 0x0001 (hex) = 0001 (dez)&lt;br /&gt;
Bei [http://www.lyngsat.com/ Lyngsat] werden NID und TID zusammen als Dezimalwerte angegeben: 1-1101&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
*0x0001 Astra Satellite Network 19,2°E&lt;br /&gt;
*0x0035 Nethold Main Mux System&lt;br /&gt;
*0x0085 Beta Technik&lt;br /&gt;
*0x013e Eutelsat Satellite System 13°E&lt;br /&gt;
*0xF001 Deutsche Telekom&lt;br /&gt;
*0xfbff Stream Spa.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|frequency=&amp;quot;11836500&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponderfrequenz des Satelliten 10,876 GHz&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|inversion=&amp;quot;2&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Wert nur für Kabelboxen erforderlich. Aus Kompatiblitätsgründen auch bei den SAT-Boxen vorhanden.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|symbol_rate=&amp;quot;27500000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Symbolrate 27500&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|fec_inner=&amp;quot;3&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|FEC: 2=2/3, 3=3/4, 4=5/6, 5=7/8&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|polarization=&amp;quot;0&amp;quot; (bei Sat)&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 0=horizontal, 1=vertikal&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|modulation=&amp;quot;6&amp;quot; (bei Kabel)&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 3=QAM64, 5=QAM256, 6=Auto&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;channel ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Sender&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|service_id=&amp;quot;6dca&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Die Service ID bzw. SID (Service Identifikation) ermöglicht die eindeutige Markierung eines einzelnen Video- und Audioprogrammes innerhalb eines Transponderdatentstroms. Durch die Service ID können Set-Top-Boxen jeweils das gewünschte Programm aus einem Bouquet konkret lokalisieren. Dabei kann ein Service auch aus Teilen verschiedener Programme bestehen, die zu bestimmten Zeitpunkten unter einer Service Identifikatin angeboten werden und praktisch ein neues Programmangebot bilden (z.B bei den Fensterprogrammen des NDR und MDR, bei denen die Fensterprogramme über 1Festival bzw. 1Muxx übertragen werden).&lt;br /&gt;
Jede SID existiert pro Transponder nur einmal. Der Wert ist hexadezimal anzugeben:&lt;br /&gt;
6dca (hex) = 28106 (dez)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Das Erste&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Sendername&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|service_type=&amp;quot;01&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|  	&lt;br /&gt;
Art des übertragenen Services:&lt;br /&gt;
*00=RESERVED&lt;br /&gt;
*01=DIGITAL_TELEVISION_SERVICE&lt;br /&gt;
*02=DIGITAL_RADIO_SOUND_SERVICE&lt;br /&gt;
*03=TELETEXT_SERVICE&lt;br /&gt;
*04=NVOD_REFERENCE_SERVICE (NVOD=Near Video On Demand)&lt;br /&gt;
*05=NVOD_TIME_SHIFTED_SERVICE&lt;br /&gt;
*06=MOSAIC_SERVICE&lt;br /&gt;
*07=PAL_CODED_SIGNAL&lt;br /&gt;
*08=SECAM_CODED_SIGNAL&lt;br /&gt;
*09=D_D2_MAC&lt;br /&gt;
*0a=FM_RADIO&lt;br /&gt;
*0b=NTSC_CODED_SIGNAL&lt;br /&gt;
*0c=DATA_BROADCAST_SERVICE&lt;br /&gt;
*0e=COMMON_INTERFACE_RESERVED&lt;br /&gt;
*0f=RCS_MAP&lt;br /&gt;
*10=RCS_FLS&lt;br /&gt;
*11=DVB_MHP_SERVICE&lt;br /&gt;
&lt;br /&gt;
viele, viele weitere u.a.: 0c 80 81 82 aa ab=Download b1=ZDF Digitext b2=Data b3=Premiere Sport Interactive c1=Data c3=Kiosque c5 c6=Radios&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem Radiosender statt einer &amp;quot;02&amp;quot; eine &amp;quot;01&amp;quot; einträgt, kann man mit dem Werbeblocker oder mit der Taste &amp;quot;0&amp;quot; zwischen dem TV-Programm und dem Radiosender wechseln. Bei dem so veränderten Radiosender wird dann kein Bildsignal übertragen, dadurch können sich evt angeschlossene Fernseher/Displays ausschalten!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|channel_nr=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|???? mittlerweile entfallen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=myservices.xml=&lt;br /&gt;
Sender, die den Sendern aus der services.xml zugefügt werden. Vorteil, die hier enthaltenen Sender werden durch keinen Suchlauf verändert. Man muss diese Liste von Hand bearbeiten und bei Änderungen entsprechend selbst anpassen. Das Format entspricht der [[Neutrino:Senderlisten#services.xml|services.xml]].&lt;br /&gt;
&lt;br /&gt;
Folgende Aktionen werden von Myservices.xml unterstützt:&lt;br /&gt;
&lt;br /&gt;
==Add==&lt;br /&gt;
Durch diese Aktion können Kanäle, die beim Suchlauf nicht gefunden werden (z.B. Premiere Subchannels), in die Kanalliste hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Replace== &lt;br /&gt;
Durch diese Aktion können Kanäle umbenannt werden. Z.B. &amp;quot;Das Erste&amp;quot; in &amp;quot;ARD&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Remove==  &lt;br /&gt;
Durch diese Aktion können unerwünschte Kanäle aus der Kanalliste entfernt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt; &lt;br /&gt;
 &amp;lt;zapit&amp;gt;&lt;br /&gt;
   &amp;lt;cable name=&amp;quot;Kabelcom Rheinhessen&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0001&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;386000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d4&amp;quot; service_id=&amp;quot;00d4&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0003&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;362000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt da&amp;quot; service_id=&amp;quot;00da&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt db&amp;quot; service_id=&amp;quot;00db&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt dc&amp;quot; service_id=&amp;quot;00dc&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt de&amp;quot; service_id=&amp;quot;00de&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f0&amp;quot; service_id=&amp;quot;00f0&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f1&amp;quot; service_id=&amp;quot;00f1&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f2&amp;quot; service_id=&amp;quot;00f2&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f3&amp;quot; service_id=&amp;quot;00f3&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f4&amp;quot; service_id=&amp;quot;00f4&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f5&amp;quot; service_id=&amp;quot;00f5&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0004&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;378000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d0&amp;quot; service_id=&amp;quot;00d0&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d1&amp;quot; service_id=&amp;quot;00d1&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d2&amp;quot; service_id=&amp;quot;00d2&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0011&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;354000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d3&amp;quot; service_id=&amp;quot;00d3&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt dd&amp;quot; service_id=&amp;quot;00dd&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0003&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;362000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;0011&amp;quot; name=&amp;quot;Premiere Sportportal&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;2716&amp;quot; onid=&amp;quot;f001&amp;quot; frequency=&amp;quot;450000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;remove&amp;quot; service_id=&amp;quot;2261&amp;quot; name=&amp;quot;FRANCE 2&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;remove&amp;quot; service_id=&amp;quot;2262&amp;quot; name=&amp;quot;FRANCE 3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0445&amp;quot; onid=&amp;quot;0001&amp;quot; frequency=&amp;quot;12265500&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; fec_inner=&amp;quot;3&amp;quot; polarization=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6ef2&amp;quot; name=&amp;quot;Bayern 3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6ef6&amp;quot; name=&amp;quot;DAS MODUL&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f18&amp;quot; name=&amp;quot;N-JOY&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f05&amp;quot; name=&amp;quot;hr3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f3b&amp;quot; name=&amp;quot;Eins Live&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f3c&amp;quot; name=&amp;quot;WDR 2&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f41&amp;quot; name=&amp;quot;Eins Live diggi&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f07&amp;quot; name=&amp;quot;YOU FM&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
   &amp;lt;/cable&amp;gt;&lt;br /&gt;
 &amp;lt;/zapit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Beispiel zeigt nicht nur &lt;br /&gt;
&lt;br /&gt;
- dass man Sender, Unterkanäle als Hauptkanäle eintragen kann, &lt;br /&gt;
&lt;br /&gt;
- sondern auch dass die Radiosender die 01 für TV bekommen können und dann gehen sie als TV-Sender durch, mit schwarzem Bild. &lt;br /&gt;
&lt;br /&gt;
Nicht besonders schön, aber der Werbetimer und die &amp;quot;0&amp;quot; als lezter Kanal funktioniert dann auch beim Radio-Sender.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=antiservices.xml=&lt;br /&gt;
{{Box_Achtung||Diese Funktion sollte nicht mehr verwendet werden, da das Entfernen von unerwünschten Kanälen jetzt durch myservices.xml erledigt wird!}}&lt;br /&gt;
&lt;br /&gt;
Sender, die im laufenden Betrieb in der Senderliste aus der services.xml nicht angezeigt werden. Vorteil, die hier enthaltenen Sender werden durch keinen Suchlauf verändert. Man muss diese Liste von Hand bearbeiten und bei Änderungen entsprechend selbst anpassen. Das Format entspricht der [[Neutrino:Senderlisten#services.xml|services.xml]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=epgfilter.xml=&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe dieser Datei lassen sich diverse EPG-Daten filtern.&lt;br /&gt;
&lt;br /&gt;
==Blacklist==&lt;br /&gt;
In diesem Beispiel wird die Möglichkeit gezeigt, eine Blacklist für Sender zu erstellen, für die keine EPG-Daten verwendet werden sollen. &lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
 &amp;lt;filter serviceID=&amp;quot;445d&amp;quot; name=&amp;quot;ProSieben&amp;quot; tsid=&amp;quot;0453&amp;quot; onid=&amp;quot;0001&amp;quot; blacklist=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''In diesem konkreten Fall handelt es sich mehr oder weniger um einen Workaround, da es beim derzeitigen Entwicklungsstand einige Probleme beim Verarbeiten der EPG-Daten gibt. Hierbei wird der [[sectionsd]] praktisch &amp;quot;schlafen gelegt&amp;quot; solange man auf diesen Sender geschaltet hat. Dies kann dann sinnvoll sein, falls ein Sender fehlerhafte Daten liefert und [[Neutrino]] dadurch evtl. nicht mehr bedienbar ist. Siehe auch [http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=361261#p361261 hier]'' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=bouquets.xml=&lt;br /&gt;
In der Datei bouquets.xml werden die einzelnen Sender einem bestimmten Bouquet zugeordnet. Dies erfolgt automatisch bei der Kanalsuche. Man kann dann auch eigene Bouquets erstellen und aus den anderen Bouquets Sender übernehmen.&lt;br /&gt;
Die bouquets.xml liegt im Verzeichnis /var/tuxbox/config/zapit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Zuordnung der Sender erfolgt über onid und ServiceID zu der Senderliste in der Datei services.xml. Dabei entsteht das Problem, das es möglich ist, das serviceID und onid mehrfach vorhanden sind. So ist eine eindeutige Zuordnung nicht mehr möglich. Die Wahrscheinlichkeit wird höher, je größer die Anzahl der Sender in services.xml ist, insbesondere wenn mehr als eine Satellitenposition verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein bestimmter Service (=Sender) wird gemäß ETSI (European Telecommunications Standards Institute) eindeutig über folgende Parameter identifiziert werden:&lt;br /&gt;
&lt;br /&gt;
original_network_id/transport_stream_id/service_id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;ZAPIT&amp;gt;&lt;br /&gt;
    &amp;lt;Bouquet name=&amp;quot;Meine Favoriten&amp;quot; hidden=&amp;quot;0&amp;quot; locked=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6dca&amp;quot; name=&amp;quot;Das Erste&amp;quot; tsid=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6d66&amp;quot; name=&amp;quot;ZDF&amp;quot; tsid=&amp;quot;0437&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e96&amp;quot; name=&amp;quot;WDR MÃ¼nster&amp;quot; tsid=&amp;quot;04b1&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;2ee3&amp;quot; name=&amp;quot;RTL Television&amp;quot; tsid=&amp;quot;0441&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;002e&amp;quot; name=&amp;quot;SAT.1&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;2f1c&amp;quot; name=&amp;quot;VOX&amp;quot; tsid=&amp;quot;0441&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0382&amp;quot; name=&amp;quot;ProSieben&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0383&amp;quot; name=&amp;quot;KABEL1&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6d67&amp;quot; name=&amp;quot;3sat&amp;quot; tsid=&amp;quot;0437&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6dcd&amp;quot; name=&amp;quot;arte&amp;quot; tsid=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;c49f&amp;quot; name=&amp;quot;Motors TV&amp;quot; tsid=&amp;quot;0964&amp;quot; onid=&amp;quot;0002&amp;quot; sat_position=&amp;quot;282&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0384&amp;quot; name=&amp;quot;DSF&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
    &amp;lt;Bouquet name=&amp;quot;ARD&amp;quot; hidden=&amp;quot;0&amp;quot; locked=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e3a&amp;quot; name=&amp;quot;ARD-Online-Kanal&amp;quot; onid=&amp;quot;0001&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e29&amp;quot; name=&amp;quot;EinsExtra&amp;quot; onid=&amp;quot;0001&amp;quot;/&amp;gt;&lt;br /&gt;
       .......usw.&lt;br /&gt;
    &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
 &amp;lt;/ZAPIT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| valign=top width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 150px;&amp;quot; valign=&amp;quot;top&amp;quot;|encoding=&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zeichensatz, derzeit wird UTF-8 gesetzt.&lt;br /&gt;
Bei älteren Images wird encoding=&amp;quot;iso-8859-1&amp;quot; benutzt.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;zapit&amp;gt;  &amp;lt;/zapit&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Bouquets&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;Bouquet...&amp;gt;  &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf ein bestimmtes Bouquet&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Meine Favoriten&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Bezeichnung des Bouquets&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|hidden=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|hidden (engl. für versteckt). Bei einem Wert von 1 wird das Bouquet versteckt und nicht angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|locked=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|locked (engl. für gesichert, verriegelt). Bei einem Wert von 1 erfolgt eine Pinabfrage, wenn man auf einen Sender innerhalb dieses Bouquets umschalten möchte.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;channel ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Sender&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|serviceID=&amp;quot;6dca&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Service Identifikation (SID). Identifiziert einen bestimmten Sender innerhalb eines Transponders.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 6dca (hex) = 28106 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Das Erste&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Sendername&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|tsid=&amp;quot;044d&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transport Stream ID (TSID, TID). Identifiziert einen Transponder/Multiplex innerhalb eines Netzwerks. Jede Transponder-ID existiert pro zugehöriger NID/ONID nur ein mal, kann jedoch pro Satellit öfter vorkommen.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 044d (hex) = 1101 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|Onid=&amp;quot;0001&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|OriginalNetworkIdentifikation (ONID, NID). Identifiziert ein Netzwerk bzw. einen Netzwerkprovider. Ist für alle Services eines Transponders gleich. Die gleiche ONID wird jedoch für diverse Transponder vergeben, so dass ein Service nur durch die Kombination von (T)SID und (O)NID eindeutig unterschieden werden kann.&lt;br /&gt;
Wert ist hexadezimal anzugeben: 0001 (hex) = 0001 (dez)&lt;br /&gt;
Bei [http://www.lyngsat.com/ Lyngsat] werden NID und TID zusammen als Dezimalwerte angegeben: 1-1101&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|sat_position=&amp;quot;192&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Position des Satelliten (entfällt bei Kabel-Empfang).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispiel für Datenübernahme von Lyngsat=&lt;br /&gt;
{{MissingBild}}&lt;br /&gt;
[[Bild:neutrino_senderlisten_lyngsat01.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Service Information: (DVB-Standard)=&lt;br /&gt;
{| valign=top width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 50px;&amp;quot; valign=&amp;quot;top&amp;quot;|PAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Program Association Table. Data appearing in packets having PID code of zero that the MPEG decoder uses to determine which programs exist in a transport stream. PAT points to PMT, which in turn points to the video, audio and data content of each program.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|PMT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Program Map Table. The tables in PAT that point to video, audio and data content of a transport stream.&lt;br /&gt;
*0x01 ISO/IEC 11172 Video&lt;br /&gt;
*0x02 ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream&lt;br /&gt;
*0x03 ISO/IEC 11172 Audio&lt;br /&gt;
*0x04 ISO/IEC 13818-3 Audio&lt;br /&gt;
*0x05 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections, e.g. MHP Application signalling stream&lt;br /&gt;
*0x06 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data, e.g. teletext or ac3&lt;br /&gt;
*0x0b ISO/IEC 13818-6 type B&lt;br /&gt;
*0x81 User Private (MTV)&lt;br /&gt;
*0x90 User Private (Premiere Mail, BD_DVB&lt;br /&gt;
*0xc0 User Private (Canal+)&lt;br /&gt;
*0xc1 User Private (Canal+)&lt;br /&gt;
*0xc6 User Private (Canal+)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|NIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Network Information Table. Information in one transport stream that describes many transport streams&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|NID&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Network Identifikation. Netzwerk-ID oder Programm-Kennummer. Wert liegt zwischen 0 und 8191 (dez) bzw. 0000 und 1fff (hex).&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|BAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Bouquet Association Table. The BAT is an optional table vor DVB taht provides details of bouquets, which are collections of services marketed as a single produkt&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|SDT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Service Description Table. Each service in a DVB transport stream can have a service descriptor and these descriptors are assembled into the service description table. a service may be television, radio or teletext. The service descriptor includes the name of the service provider.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|EIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Event Information Table. EIT is an optional table for DVB which contains program names, start times, durations and so on.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|TDT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Time And Date Table. The TDT is an option that embeds a UTC time and date stamp in the transport stream.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|AIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Application Information Table. AIT has to be transmitted either within or alongside an object carousel carrying MHP content. The AIT provides information to the decoder about the data services and the state of each MHP application.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|CAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Conditional Access Table. Packets having PID codes of 1 and that contain information about the scrambling system.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|PID&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Packet IDentifiers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Satelliten verfügen über mehrere Transponder, die bei analoger Übertragung jeweils mit einem TV-Programm belegt sind. Bei digitaler Übertragung wird auf jedem Transponder ein sogenannter Multiplex übertragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Multiplex enthält mehrere Services (Fernseh- bzw. Radioprogramme, aber auch Datendienste), die wiederum aus mehreren Komponenten (Video, Audio, eventuell auch mehrere davon für mehrsprachige Übertragung) bestehen. Außerdem sieht der DVB-Standard vor, dass man auch mehrere Services (von verschiedenen Multiplexen) zu einem Bouquet zusammenfassen kann. Ein Beispiel wäre ein Sportbouquet mit allen Sportprogrammanbietern. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gerdschweizer.homepage.t-online.de Homepage] / *[http://www.gerdschweizer.homepage.t-online.de/faqsat.htm FAQ] von Gerd Schweizer&lt;br /&gt;
&lt;br /&gt;
*[http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=361261#p361261 Workaround für EPG-Blackliste]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Senderlisten&amp;diff=11042</id>
		<title>Neutrino:Senderlisten</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Senderlisten&amp;diff=11042"/>
		<updated>2008-11-13T07:19:58Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Blacklist hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
__TOC__&lt;br /&gt;
[[&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
{{MissingText}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
=satellites.xml=&lt;br /&gt;
In dieser Datei sind die verschiedenen Satelliten und die Transponder beschrieben, die bei einem Sendersuchlauf abgescannt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die Datei aktuell zu halten am besten öfter mal auf [http://www.lyngsat.com Lyngsat.com] nachsehen: [http://www.lyngsat.com/astra19.shtml Astra], [http://www.lyngsat.com/hotbird.shtml Eutelsat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit man die Datei ersetzten kann, zunächst den symbolischen Link per telnet löschen: rm var/tuxbox/config/satellites.xml.&lt;br /&gt;
Danach an die selbe Stelle die eigene satellites.xml aufspielen (gilt ebenso für cables.xml).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;satellites&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Astra 19.2E&amp;quot; flags=&amp;quot;9&amp;quot; position=&amp;quot;192&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;10876000&amp;quot; symbol_rate=&amp;quot;22000000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12187500&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12551000&amp;quot; symbol_rate=&amp;quot;22000000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Eutelsat 13.0E&amp;quot; flags=&amp;quot;5&amp;quot; position=&amp;quot;130&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12692000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       ....&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12539000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;0&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;transponder frequency=&amp;quot;12111000&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; polarization=&amp;quot;1&amp;quot; fec_inner=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
 &amp;lt;/satellites&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 150px;&amp;quot;|&amp;lt;satellites&amp;gt;  &amp;lt;/satellites&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;sat...&amp;gt;  &amp;lt;/sat&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf den selben Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=“Astra 19.2E“&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Name des Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|flags=“9“&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|1 = Network Scan&lt;br /&gt;
Bei der Netzwerksuche werden die Werte aus den Transpondern ausgewertet. In vielen Transpondern ist eine Liste mit weiteren Transpondern enthalten, so dass beim Suchlauf automatisch weitere Transponder mit einbezogen werden, wenn die satellites.xml nicht vollständig ist. Leider sind die Daten oft fehlerhaft, so dass es wichtig ist die satellites.xml immer auf den neuesten Stand zu halten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 = use BAT -- BAT=Bouquet Association Table. &lt;br /&gt;
&lt;br /&gt;
Informationen im Datenstrom über die Zugehörigkeit von Programmpaketen zu einem bestimmten Bouquet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4 = use ONIT -- NIT=Network Information Table. &lt;br /&gt;
&lt;br /&gt;
In der Netzwerks-Informations-Tabelle im Datenstrom eines Satelliten sind Transponder angegeben, auf der weitere Sender zu finden sind. -&amp;gt; Kanalnummer und Frequenz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8 = skip NITs of known networks -- NIT=Network Information Table. &lt;br /&gt;
&lt;br /&gt;
In der Netzwerks-Informations-Tabelle im Datenstrom eines Transponders sind die Daten anderer Transponder angegeben, auf denen weitere Sender zu finden sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; 9=8+1 Kombination aus verschiedenen Flags durch Addition der Werte möglich. &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|position=&amp;quot;192&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Position des Satelliten im Orbit -&amp;gt; 19,2°&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;transponder ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Transponder&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|frequency=&amp;quot;10876000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponderfrequenz des Satelliten 10,876 GHz&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|symbol_rate=&amp;quot;22000000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Symbolrate 22000&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|polarization=&amp;quot;1&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 0=horizontal, 1=vertikal (2=linksdrehend, 3=rechtsdrehend)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|fec_inner=&amp;quot;4&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|FEC=Forward Error Correction:&lt;br /&gt;
Mit dem Nutzsignal werden zusätzliche Daten übertragen, mit deren Hilfe bei einer Übertragunsstörung das Nutzsignal rekonstruiert werden kann. Der Wert der FEC zeigt das Verhältnis zwischen Daten für Fehlerkorrektur zu den Daten des Nutzsignals an. Ein Wert von 5/6 bedeutet: 5 Bytes werden für die Datenübertragung benutzt und 1 Byte für die Fehlerkorrektur. Das bedeutet auch, das 1/6 der Bandbreite für die Fehlerkorrektur &amp;quot;verschwendet&amp;quot; wird. Bei einem Wert von 1/2 wird die Hälfte der Bandbreite zur Fehlerkorrektur verwendet.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe der Symbolrate und der FEC kann man Datenrate errechnen:&lt;br /&gt;
Nettodatenrate = Symbolrate (2 * FEC) (188/204)&lt;br /&gt;
&lt;br /&gt;
Beispiel: Symbolrate=27500, FEC=3/4&lt;br /&gt;
&lt;br /&gt;
Nettodatenrate = 27500 (2 * 3/4) (188/204) = 38014,71 Mbps&lt;br /&gt;
&lt;br /&gt;
Neues Format:&lt;br /&gt;
*FEC 1/2 =&amp;gt; fec_inner=1&lt;br /&gt;
*FEC 2/3 =&amp;gt; fec_inner=2&lt;br /&gt;
*FEC 3/4 =&amp;gt; fec_inner=3&lt;br /&gt;
*FEC 4/5 =&amp;gt; fec_inner=4&lt;br /&gt;
*FEC 5/6 =&amp;gt; fec_inner=5&lt;br /&gt;
*FEC 6/7 =&amp;gt; fec_inner=6&lt;br /&gt;
*FEC 7/8 =&amp;gt; fec_inner=7&lt;br /&gt;
*FEC 8/9 =&amp;gt; fec_inner=8&lt;br /&gt;
*AutoFEC =&amp;gt; fec_inner=9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Früheres Format:&lt;br /&gt;
*FEC 1/2 =&amp;gt; fec_inner=1&lt;br /&gt;
*FEC 2/3 =&amp;gt; fec_inner=2&lt;br /&gt;
*FEC 3/4 =&amp;gt; fec_inner=3&lt;br /&gt;
*FEC 5/6 =&amp;gt; fec_inner=4&lt;br /&gt;
*FEC 7/8 =&amp;gt; fec_inner=5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei meiner Box funktioniert das neue Format jedoch nicht (cramfs v. 18.02.03). Bei einem Sendersuchlauf wird die FEC, bei meiner Box, im alten Format in die services.xml geschrieben. Deshalb hab ich hier jetzt beide Möglichkeiten dargestellt. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=cables.xml=&lt;br /&gt;
{{MissingText}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=services.xml=&lt;br /&gt;
Senderliste. Die Datei Services.xml wird bei der Sendersuche automatisch angelegt. Hier werden die gefundenen Sender/Services zu den Transpondern zugeordnet abgelegt. Man kann diese Liste von Hand bearbeiten und erweitern, ohne dass ein Sendersuchlauf notwendig ist.&lt;br /&gt;
Die services.xml liegt im Verzeichnis /var/tuxbox/config/zapit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;zapit&amp;gt;&lt;br /&gt;
    &amp;lt;sat name=&amp;quot;Astra 19.2E&amp;quot; diseqc=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;transponder id=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; frequency=&amp;quot;11836500&amp;quot;  inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; fec_inner=&amp;quot;3&amp;quot; polarization=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dca&amp;quot; name=&amp;quot;Das Erste&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcb&amp;quot; name=&amp;quot;Bayerisches FS&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcc&amp;quot; name=&amp;quot;hessen fernsehen&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcd&amp;quot; name=&amp;quot;arte&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dce&amp;quot; name=&amp;quot;SR Fernsehen Suedwest&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dcf&amp;quot; name=&amp;quot;WDR FERNSEHEN&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;channel service_id=&amp;quot;6dd0&amp;quot; name=&amp;quot;BR-alpha&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;/transponder&amp;gt;&lt;br /&gt;
    &amp;lt;/sat&amp;gt;&lt;br /&gt;
 &amp;lt;/zapit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 160px;&amp;quot;|&amp;lt;zapit&amp;gt;  &amp;lt;/zapit&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;sat...&amp;gt;  &amp;lt;/sat&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf den selben Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Astra 19.2E&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Name des Satelliten&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|diseqc=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|[[DiSEqC]] = Digital Satellite Equipment Control. Ermöglicht das Anwählen verschiedener Satellitenpositionen mit Hilfe der Umschaltung durch digitale Impulse.&lt;br /&gt;
Dabei steht &amp;quot;0&amp;quot; für LNB 1 (Astra) u. &amp;quot;1&amp;quot; für LNB 2 (Eutelsat).&lt;br /&gt;
&lt;br /&gt;
Zusammen mit dem Wert für diseqcType in der zapit.conf werden die DiSEqC-Einstellungen bestimmt. Die DiSEqC-Einstellungen in den Neutrino-Menüs gelten nur für den Sendersuchlauf und haben bei Änderungen keine Auswirkungen auf die bereits vorhandene Senderliste.&lt;br /&gt;
&lt;br /&gt;
Wenn DiSEqC nicht funktioniert, liegt es häufig daran, dass der Wert für den diseqcType in der zapit.conf nicht stimmt. Dieser muss meistens auf &amp;quot;2&amp;quot; stehen, bei Astra/Hotbird-Anlagen meistens auf &amp;quot;3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
DisEqC diseqcType&lt;br /&gt;
*kein 0?&lt;br /&gt;
*Mini 1?&lt;br /&gt;
*1.0 2&lt;br /&gt;
*1.1 3?&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;transponder......&amp;gt; &amp;lt;/transponder&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesem Bereich bezieht sich auf einen bestimmten Transponder&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponder_id=&amp;quot;044d&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|ID-Nummer des Transponders (TSID o. TID). Identifiziert einen Transponder/Multiplex innerhalb eines Netzwerks. Jede Transponder-ID existiert pro zugehöriger NID/ONID nur ein mal, kann jedoch pro Satellit öfter vorkommen.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 044d (hex) = 1101 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|onid=&amp;quot;0001&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|OriginalNetworkIdentifikation (ONID, NID). Identifiziert einen Netzwerkprovider. Die Kombination von ONID und TID identifiziert einen Transponder/Multiplex eindeutig. Die ONID ist nicht die Bezeichnung des Satelliten.&lt;br /&gt;
Wert ist hexadezimal anzugeben: onid=&amp;quot;0001&amp;quot; =&amp;gt; 0x0001 (hex) = 0001 (dez)&lt;br /&gt;
Bei [http://www.lyngsat.com/ Lyngsat] werden NID und TID zusammen als Dezimalwerte angegeben: 1-1101&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
*0x0001 Astra Satellite Network 19,2°E&lt;br /&gt;
*0x0035 Nethold Main Mux System&lt;br /&gt;
*0x0085 Beta Technik&lt;br /&gt;
*0x013e Eutelsat Satellite System 13°E&lt;br /&gt;
*0xF001 Deutsche Telekom&lt;br /&gt;
*0xfbff Stream Spa.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|frequency=&amp;quot;11836500&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transponderfrequenz des Satelliten 10,876 GHz&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|inversion=&amp;quot;2&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Wert nur für Kabelboxen erforderlich. Aus Kompatiblitätsgründen auch bei den SAT-Boxen vorhanden.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|symbol_rate=&amp;quot;27500000&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Symbolrate 27500&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|fec_inner=&amp;quot;3&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|FEC: 2=2/3, 3=3/4, 4=5/6, 5=7/8&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|polarization=&amp;quot;0&amp;quot; (bei Sat)&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 0=horizontal, 1=vertikal&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|modulation=&amp;quot;6&amp;quot; (bei Kabel)&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Polarisation: 3=QAM64, 5=QAM256, 6=Auto&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;channel ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Sender&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|service_id=&amp;quot;6dca&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Die Service ID bzw. SID (Service Identifikation) ermöglicht die eindeutige Markierung eines einzelnen Video- und Audioprogrammes innerhalb eines Transponderdatentstroms. Durch die Service ID können Set-Top-Boxen jeweils das gewünschte Programm aus einem Bouquet konkret lokalisieren. Dabei kann ein Service auch aus Teilen verschiedener Programme bestehen, die zu bestimmten Zeitpunkten unter einer Service Identifikatin angeboten werden und praktisch ein neues Programmangebot bilden (z.B bei den Fensterprogrammen des NDR und MDR, bei denen die Fensterprogramme über 1Festival bzw. 1Muxx übertragen werden).&lt;br /&gt;
Jede SID existiert pro Transponder nur einmal. Der Wert ist hexadezimal anzugeben:&lt;br /&gt;
6dca (hex) = 28106 (dez)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Das Erste&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Sendername&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|service_type=&amp;quot;01&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|  	&lt;br /&gt;
Art des übertragenen Services:&lt;br /&gt;
*00=RESERVED&lt;br /&gt;
*01=DIGITAL_TELEVISION_SERVICE&lt;br /&gt;
*02=DIGITAL_RADIO_SOUND_SERVICE&lt;br /&gt;
*03=TELETEXT_SERVICE&lt;br /&gt;
*04=NVOD_REFERENCE_SERVICE (NVOD=Near Video On Demand)&lt;br /&gt;
*05=NVOD_TIME_SHIFTED_SERVICE&lt;br /&gt;
*06=MOSAIC_SERVICE&lt;br /&gt;
*07=PAL_CODED_SIGNAL&lt;br /&gt;
*08=SECAM_CODED_SIGNAL&lt;br /&gt;
*09=D_D2_MAC&lt;br /&gt;
*0a=FM_RADIO&lt;br /&gt;
*0b=NTSC_CODED_SIGNAL&lt;br /&gt;
*0c=DATA_BROADCAST_SERVICE&lt;br /&gt;
*0e=COMMON_INTERFACE_RESERVED&lt;br /&gt;
*0f=RCS_MAP&lt;br /&gt;
*10=RCS_FLS&lt;br /&gt;
*11=DVB_MHP_SERVICE&lt;br /&gt;
&lt;br /&gt;
viele, viele weitere u.a.: 0c 80 81 82 aa ab=Download b1=ZDF Digitext b2=Data b3=Premiere Sport Interactive c1=Data c3=Kiosque c5 c6=Radios&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem Radiosender statt einer &amp;quot;02&amp;quot; eine &amp;quot;01&amp;quot; einträgt, kann man mit dem Werbeblocker oder mit der Taste &amp;quot;0&amp;quot; zwischen dem TV-Programm und dem Radiosender wechseln. Bei dem so veränderten Radiosender wird dann kein Bildsignal übertragen, dadurch können sich evt angeschlossene Fernseher/Displays ausschalten!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|channel_nr=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|???? mittlerweile entfallen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=myservices.xml=&lt;br /&gt;
Sender, die den Sendern aus der services.xml zugefügt werden. Vorteil, die hier enthaltenen Sender werden durch keinen Suchlauf verändert. Man muss diese Liste von Hand bearbeiten und bei Änderungen entsprechend selbst anpassen. Das Format entspricht der [[Neutrino:Senderlisten#services.xml|services.xml]].&lt;br /&gt;
&lt;br /&gt;
Folgende Aktionen werden von Myservices.xml unterstützt:&lt;br /&gt;
&lt;br /&gt;
==Add==&lt;br /&gt;
Durch diese Aktion können Kanäle, die beim Suchlauf nicht gefunden werden (z.B. Premiere Subchannels), in die Kanalliste hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Replace== &lt;br /&gt;
Durch diese Aktion können Kanäle umbenannt werden. Z.B. &amp;quot;Das Erste&amp;quot; in &amp;quot;ARD&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Remove==  &lt;br /&gt;
Durch diese Aktion können unerwünschte Kanäle aus der Kanalliste entfernt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt; &lt;br /&gt;
 &amp;lt;zapit&amp;gt;&lt;br /&gt;
   &amp;lt;cable name=&amp;quot;Kabelcom Rheinhessen&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0001&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;386000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d4&amp;quot; service_id=&amp;quot;00d4&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0003&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;362000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt da&amp;quot; service_id=&amp;quot;00da&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt db&amp;quot; service_id=&amp;quot;00db&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt dc&amp;quot; service_id=&amp;quot;00dc&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt de&amp;quot; service_id=&amp;quot;00de&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f0&amp;quot; service_id=&amp;quot;00f0&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f1&amp;quot; service_id=&amp;quot;00f1&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f2&amp;quot; service_id=&amp;quot;00f2&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f3&amp;quot; service_id=&amp;quot;00f3&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f4&amp;quot; service_id=&amp;quot;00f4&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt f5&amp;quot; service_id=&amp;quot;00f5&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0004&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;378000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d0&amp;quot; service_id=&amp;quot;00d0&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d1&amp;quot; service_id=&amp;quot;00d1&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d2&amp;quot; service_id=&amp;quot;00d2&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0011&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;354000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt d3&amp;quot; service_id=&amp;quot;00d3&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;add&amp;quot; name=&amp;quot;Premiere Direkt dd&amp;quot; service_id=&amp;quot;00dd&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0003&amp;quot; onid=&amp;quot;0085&amp;quot; frequency=&amp;quot;362000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;0011&amp;quot; name=&amp;quot;Premiere Sportportal&amp;quot; service_type=&amp;quot;01&amp;quot; /&amp;gt; &lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;2716&amp;quot; onid=&amp;quot;f001&amp;quot; frequency=&amp;quot;450000000&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;6900000&amp;quot; fec_inner=&amp;quot;0&amp;quot; modulation=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;remove&amp;quot; service_id=&amp;quot;2261&amp;quot; name=&amp;quot;FRANCE 2&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;remove&amp;quot; service_id=&amp;quot;2262&amp;quot; name=&amp;quot;FRANCE 3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
      &amp;lt;transponder id=&amp;quot;0445&amp;quot; onid=&amp;quot;0001&amp;quot; frequency=&amp;quot;12265500&amp;quot; inversion=&amp;quot;2&amp;quot; symbol_rate=&amp;quot;27500000&amp;quot; fec_inner=&amp;quot;3&amp;quot; polarization=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6ef2&amp;quot; name=&amp;quot;Bayern 3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6ef6&amp;quot; name=&amp;quot;DAS MODUL&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f18&amp;quot; name=&amp;quot;N-JOY&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f05&amp;quot; name=&amp;quot;hr3&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f3b&amp;quot; name=&amp;quot;Eins Live&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f3c&amp;quot; name=&amp;quot;WDR 2&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f41&amp;quot; name=&amp;quot;Eins Live diggi&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt; &lt;br /&gt;
         &amp;lt;channel action=&amp;quot;replace&amp;quot; service_id=&amp;quot;6f07&amp;quot; name=&amp;quot;YOU FM&amp;quot; service_type=&amp;quot;01&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/transponder&amp;gt;&lt;br /&gt;
   &amp;lt;/cable&amp;gt;&lt;br /&gt;
 &amp;lt;/zapit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Beispiel zeigt nicht nur &lt;br /&gt;
&lt;br /&gt;
- dass man Sender, Unterkanäle als Hauptkanäle eintragen kann, &lt;br /&gt;
&lt;br /&gt;
- sondern auch dass die Radiosender die 01 für TV bekommen können und dann gehen sie als TV-Sender durch, mit schwarzem Bild. &lt;br /&gt;
&lt;br /&gt;
Nicht besonders schön, aber der Werbetimer und die &amp;quot;0&amp;quot; als lezter Kanal funktioniert dann auch beim Radio-Sender.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=antiservices.xml=&lt;br /&gt;
{{Box_Achtung||Diese Funktion sollte nicht mehr verwendet werden, da das Entfernen von unerwünschten Kanälen jetzt durch myservices.xml erledigt wird!}}&lt;br /&gt;
&lt;br /&gt;
Sender, die im laufenden Betrieb in der Senderliste aus der services.xml nicht angezeigt werden. Vorteil, die hier enthaltenen Sender werden durch keinen Suchlauf verändert. Man muss diese Liste von Hand bearbeiten und bei Änderungen entsprechend selbst anpassen. Das Format entspricht der [[Neutrino:Senderlisten#services.xml|services.xml]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=epgfilter.xml=&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe dieser Datei lassen sich diverse EPG-Daten filtern.&lt;br /&gt;
&lt;br /&gt;
==Blacklist==&lt;br /&gt;
In diesem Beispiel wird die Möglichkeit gezeigt, eine Blacklist für Sender zu erstellen, für die keine EPG-Daten verwendet werden sollen. &lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
 &amp;lt;filter serviceID=&amp;quot;445d&amp;quot; name=&amp;quot;ProSieben&amp;quot; tsid=&amp;quot;0453&amp;quot; onid=&amp;quot;0001&amp;quot; blacklist=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''In diesem konkreten Fall handelt es sich mehr oder weniger um einen Workaround, da es beim derzeitigen Entwicklungsstand einige Probleme beim Verarbeiten der EPG-Daten gibt. Hierbei wird der [[sectionsd]] praktisch &amp;quot;schlafen gelegt&amp;quot; solange man auf diesen Sender geschaltet hat. Dies kann dann sinnvoll sein, falls ein Sender fehlerhafte Daten liefert und [[Neutrino]] dadurch evtl. nicht mehr bedienbar ist. Siehe auch [http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=361261#p361261 hier]'' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=bouquets.xml=&lt;br /&gt;
In der Datei bouquets.xml werden die einzelnen Sender einem bestimmten Bouquet zugeordnet. Dies erfolgt automatisch bei der Kanalsuche. Man kann dann auch eigene Bouquets erstellen und aus den anderen Bouquets Sender übernehmen.&lt;br /&gt;
Die bouquets.xml liegt im Verzeichnis /var/tuxbox/config/zapit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Zuordnung der Sender erfolgt über onid und ServiceID zu der Senderliste in der Datei services.xml. Dabei entsteht das Problem, das es möglich ist, das serviceID und onid mehrfach vorhanden sind. So ist eine eindeutige Zuordnung nicht mehr möglich. Die Wahrscheinlichkeit wird höher, je größer die Anzahl der Sender in services.xml ist, insbesondere wenn mehr als eine Satellitenposition verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein bestimmter Service (=Sender) wird gemäß ETSI (European Telecommunications Standards Institute) eindeutig über folgende Parameter identifiziert werden:&lt;br /&gt;
&lt;br /&gt;
original_network_id/transport_stream_id/service_id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;ZAPIT&amp;gt;&lt;br /&gt;
    &amp;lt;Bouquet name=&amp;quot;Meine Favoriten&amp;quot; hidden=&amp;quot;0&amp;quot; locked=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6dca&amp;quot; name=&amp;quot;Das Erste&amp;quot; tsid=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6d66&amp;quot; name=&amp;quot;ZDF&amp;quot; tsid=&amp;quot;0437&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e96&amp;quot; name=&amp;quot;WDR MÃ¼nster&amp;quot; tsid=&amp;quot;04b1&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;2ee3&amp;quot; name=&amp;quot;RTL Television&amp;quot; tsid=&amp;quot;0441&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;002e&amp;quot; name=&amp;quot;SAT.1&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;2f1c&amp;quot; name=&amp;quot;VOX&amp;quot; tsid=&amp;quot;0441&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0382&amp;quot; name=&amp;quot;ProSieben&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0383&amp;quot; name=&amp;quot;KABEL1&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6d67&amp;quot; name=&amp;quot;3sat&amp;quot; tsid=&amp;quot;0437&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6dcd&amp;quot; name=&amp;quot;arte&amp;quot; tsid=&amp;quot;044d&amp;quot; onid=&amp;quot;0001&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;c49f&amp;quot; name=&amp;quot;Motors TV&amp;quot; tsid=&amp;quot;0964&amp;quot; onid=&amp;quot;0002&amp;quot; sat_position=&amp;quot;282&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;0384&amp;quot; name=&amp;quot;DSF&amp;quot; tsid=&amp;quot;0021&amp;quot; onid=&amp;quot;0085&amp;quot; sat_position=&amp;quot;192&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
    &amp;lt;Bouquet name=&amp;quot;ARD&amp;quot; hidden=&amp;quot;0&amp;quot; locked=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e3a&amp;quot; name=&amp;quot;ARD-Online-Kanal&amp;quot; onid=&amp;quot;0001&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;channel serviceID=&amp;quot;6e29&amp;quot; name=&amp;quot;EinsExtra&amp;quot; onid=&amp;quot;0001&amp;quot;/&amp;gt;&lt;br /&gt;
       .......usw.&lt;br /&gt;
    &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
 &amp;lt;/ZAPIT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| valign=top width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 150px;&amp;quot; valign=&amp;quot;top&amp;quot;|encoding=&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zeichensatz, derzeit wird UTF-8 gesetzt.&lt;br /&gt;
Bei älteren Images wird encoding=&amp;quot;iso-8859-1&amp;quot; benutzt.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;zapit&amp;gt;  &amp;lt;/zapit&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Zwischen diesen beiden Tags befinden sich die Daten aller Bouquets&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;Bouquet...&amp;gt;  &amp;lt;/Bouquet&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles zwischen diesen beiden Tags bezieht sich auf ein bestimmtes Bouquet&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Meine Favoriten&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Bezeichnung des Bouquets&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|hidden=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|hidden (engl. für versteckt). Bei einem Wert von 1 wird das Bouquet versteckt und nicht angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|locked=&amp;quot;0&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|locked (engl. für gesichert, verriegelt). Bei einem Wert von 1 erfolgt eine Pinabfrage, wenn man auf einen Sender innerhalb dieses Bouquets umschalten möchte.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;lt;channel ...... /&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Alles in dieser Zeile bezieht sich auf einen bestimmten Sender&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|serviceID=&amp;quot;6dca&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Service Identifikation (SID). Identifiziert einen bestimmten Sender innerhalb eines Transponders.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 6dca (hex) = 28106 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|name=&amp;quot;Das Erste&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Sendername&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|tsid=&amp;quot;044d&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Transport Stream ID (TSID, TID). Identifiziert einen Transponder/Multiplex innerhalb eines Netzwerks. Jede Transponder-ID existiert pro zugehöriger NID/ONID nur ein mal, kann jedoch pro Satellit öfter vorkommen.&lt;br /&gt;
Der Wert ist hexadezimal anzugeben: 044d (hex) = 1101 (dez)&lt;br /&gt;
In den Listen auf [http://www.lyngsat.com/ Lyngsat] oder [http://www.satcodx.com/ SatcoDX] werden die Werte als Dezimalwerte angegeben!!!!&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|Onid=&amp;quot;0001&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|OriginalNetworkIdentifikation (ONID, NID). Identifiziert ein Netzwerk bzw. einen Netzwerkprovider. Ist für alle Services eines Transponders gleich. Die gleiche ONID wird jedoch für diverse Transponder vergeben, so dass ein Service nur durch die Kombination von (T)SID und (O)NID eindeutig unterschieden werden kann.&lt;br /&gt;
Wert ist hexadezimal anzugeben: 0001 (hex) = 0001 (dez)&lt;br /&gt;
Bei [http://www.lyngsat.com/ Lyngsat] werden NID und TID zusammen als Dezimalwerte angegeben: 1-1101&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|sat_position=&amp;quot;192&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Position des Satelliten (entfällt bei Kabel-Empfang).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beispiel für Datenübernahme von Lyngsat=&lt;br /&gt;
{{MissingBild}}&lt;br /&gt;
[[Bild:neutrino_senderlisten_lyngsat01.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Service Information: (DVB-Standard)=&lt;br /&gt;
{| valign=top width=800 style=&amp;quot;background-color:white; font-size:small;  margin:3px 3px 3px 10px&amp;quot;&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD; width: 50px;&amp;quot; valign=&amp;quot;top&amp;quot;|PAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Program Association Table. Data appearing in packets having PID code of zero that the MPEG decoder uses to determine which programs exist in a transport stream. PAT points to PMT, which in turn points to the video, audio and data content of each program.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|PMT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Program Map Table. The tables in PAT that point to video, audio and data content of a transport stream.&lt;br /&gt;
*0x01 ISO/IEC 11172 Video&lt;br /&gt;
*0x02 ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream&lt;br /&gt;
*0x03 ISO/IEC 11172 Audio&lt;br /&gt;
*0x04 ISO/IEC 13818-3 Audio&lt;br /&gt;
*0x05 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections, e.g. MHP Application signalling stream&lt;br /&gt;
*0x06 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data, e.g. teletext or ac3&lt;br /&gt;
*0x0b ISO/IEC 13818-6 type B&lt;br /&gt;
*0x81 User Private (MTV)&lt;br /&gt;
*0x90 User Private (Premiere Mail, BD_DVB&lt;br /&gt;
*0xc0 User Private (Canal+)&lt;br /&gt;
*0xc1 User Private (Canal+)&lt;br /&gt;
*0xc6 User Private (Canal+)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|NIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Network Information Table. Information in one transport stream that describes many transport streams&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|NID&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Network Identifikation. Netzwerk-ID oder Programm-Kennummer. Wert liegt zwischen 0 und 8191 (dez) bzw. 0000 und 1fff (hex).&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|BAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Bouquet Association Table. The BAT is an optional table vor DVB taht provides details of bouquets, which are collections of services marketed as a single produkt&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|SDT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Service Description Table. Each service in a DVB transport stream can have a service descriptor and these descriptors are assembled into the service description table. a service may be television, radio or teletext. The service descriptor includes the name of the service provider.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|EIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Event Information Table. EIT is an optional table for DVB which contains program names, start times, durations and so on.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|TDT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Time And Date Table. The TDT is an option that embeds a UTC time and date stamp in the transport stream.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|AIT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Application Information Table. AIT has to be transmitted either within or alongside an object carousel carrying MHP content. The AIT provides information to the decoder about the data services and the state of each MHP application.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|CAT&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Conditional Access Table. Packets having PID codes of 1 and that contain information about the scrambling system.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#8DB6CD;&amp;quot; valign=&amp;quot;top&amp;quot;|PID&lt;br /&gt;
|style=&amp;quot;background-color:#B9D3EE;&amp;quot; valign=&amp;quot;top&amp;quot;|Packet IDentifiers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Satelliten verfügen über mehrere Transponder, die bei analoger Übertragung jeweils mit einem TV-Programm belegt sind. Bei digitaler Übertragung wird auf jedem Transponder ein sogenannter Multiplex übertragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Multiplex enthält mehrere Services (Fernseh- bzw. Radioprogramme, aber auch Datendienste), die wiederum aus mehreren Komponenten (Video, Audio, eventuell auch mehrere davon für mehrsprachige Übertragung) bestehen. Außerdem sieht der DVB-Standard vor, dass man auch mehrere Services (von verschiedenen Multiplexen) zu einem Bouquet zusammenfassen kann. Ein Beispiel wäre ein Sportbouquet mit allen Sportprogrammanbietern. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gerdschweizer.homepage.t-online.de Homepage] / *[http://www.gerdschweizer.homepage.t-online.de/faqsat.htm FAQ] von Gerd Schweizer&lt;br /&gt;
&lt;br /&gt;
*[http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=361261#p361261 Workaround für EPG-Blackliste]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=EPG&amp;diff=11041</id>
		<title>EPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=EPG&amp;diff=11041"/>
		<updated>2008-11-11T14:07:02Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
{{Infos}}&lt;br /&gt;
&lt;br /&gt;
*[[wikipedia:EPG]]&lt;br /&gt;
*[[sectionsd]]&lt;br /&gt;
*[[Neutrino:Senderlisten#epgfilter.xml|EPG-Filter]]&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Senderlogos&amp;diff=11040</id>
		<title>Senderlogos</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Senderlogos&amp;diff=11040"/>
		<updated>2008-11-11T14:02:35Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach Neutrino:Customizing#Senderlogos erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Neutrino:Customizing#Senderlogos|Senderlogos]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=MMC-Karte&amp;diff=11033</id>
		<title>MMC-Karte</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=MMC-Karte&amp;diff=11033"/>
		<updated>2008-11-02T17:30:47Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach SD-Karte erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SD-Karte]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Mirco-SD-Karte&amp;diff=11032</id>
		<title>Mirco-SD-Karte</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Mirco-SD-Karte&amp;diff=11032"/>
		<updated>2008-11-02T17:30:37Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Weiterleitung nach SD-Karte erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SD-Karte]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Mini-SD-Karte&amp;diff=11031</id>
		<title>Mini-SD-Karte</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Mini-SD-Karte&amp;diff=11031"/>
		<updated>2008-11-02T17:30:27Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: redirect sd-karte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SD-Karte]]&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=SD-Karte&amp;diff=11030</id>
		<title>SD-Karte</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=SD-Karte&amp;diff=11030"/>
		<updated>2008-11-02T17:27:45Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: SD-Karte verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
{{Infos}}&lt;br /&gt;
&lt;br /&gt;
*[[Wikipedia:SD-Karte]]&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:dbox2:Erweiterungen:IDE-Interface&amp;diff=11029</id>
		<title>Hardware:dbox2:Erweiterungen:IDE-Interface</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Hardware:dbox2:Erweiterungen:IDE-Interface&amp;diff=11029"/>
		<updated>2008-11-02T17:17:48Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: SD-Karte vorgemerkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
&lt;br /&gt;
'''Stand 22.7.2006'''&lt;br /&gt;
&lt;br /&gt;
Dieses Projekt verfolgt zurzeit ebenfalls die Realisierung einer [[IDE]]-Schnittstelle, jedoch mittels eines [[CPLD]] (Complex Programmable Logic Device). Dies hat u.a. den Vorteil, gegenüber der Lösung mit diskretem Schaltungsaufbau, dass die Schaltung selbst &amp;quot;übersichtlich&amp;quot; ist, da nur wenige Komponenten auf dem eigentlichen [[IDE]]-Modul bzw. auf der Platine aufgebracht werden müssen. &lt;br /&gt;
&lt;br /&gt;
Des Weiteren gestattet die Programmierung des [[CPLD]] einen flexibleren Funktionsumfang, da davon ausgegangen wird, dass alle Anschlüsse des Speichermodul-Steckplatz der [[DBox2]] an das [[CPLD]] angeschlossen werden. Änderungen und Erweiterungen können allein durch eine geeignete Programmierung vorgenommen werden, ein nachträglicher Eingriff in den Schaltungsaufbau ist daher nicht nötig.&lt;br /&gt;
&lt;br /&gt;
Das [[CPLD]] wird wie bereits erwähnt -analog zur ersten [[IDE]]-Variante- an den Speichermodul-Steckplatz der [[DBox2]] und dem Modemstecker angeschlossen. Außerdem muss natürlich an einer geeigneten Stelle noch die Betriebsspannung für das [[IDE]]-Modul abgegriffen werden. &lt;br /&gt;
&lt;br /&gt;
Aus [[CPU]] Sicht wird das [[CPLD]] wie das normale [[RAM]] angesprochen, d.h. via UPM (User Programmable Machine). Dabei werden die Daten in den Adressraum für die erweiterten 32MB Hauptspeicher eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Die Grund-Idee für einen Zugriff war &amp;quot;Write before Read&amp;quot;. Die [[CPU]] muss dem Chip vor einem [[IDE]]-Register Lesezugriff sagen, dass der Chip das jetzt mal bitte machen soll, zum Beispiel per Schreibzugriff auf eine bestimmte Adresse.&lt;br /&gt;
Der zweite Zugriff liefert dann die gelesenen Daten. Performance gibt's trotzdem, weil der zweite Lesezugriff wieder den nächsten [[IDE]]-Zugriff auslösen kann (durch die Wahl der Adresse) usw.&lt;br /&gt;
Und ganz nebenbei können so zur [[CPU]] auch gleich 32 Bit transportiert werden, weil der Chip gleich 2 [[IDE]]-Lesezugriffe durchführt. &lt;br /&gt;
&lt;br /&gt;
Die Software Xilinx ISE 7.1i zur Programmierung des [[CPLD]] ist frei erhältlich.&lt;br /&gt;
&lt;br /&gt;
Da Nokia, Phillips und Sagem unterschiedliche Speichermodul-Steckplätze verwenden war die Entwicklung von drei verschiedenen Platinenlayouts notwendig. Die Layouts und die Software sind mittlerweile fertig gestellt. Die fertigbestückte Platine wird von Hallenberg.com vertrieben und kann für 50 Euro + Versand vorbestellt werden. Mit dabei sind ein Einbaurahmen für 2,5&amp;quot;- und 3,5&amp;quot;-Festplatten, ein IDE-Kabel, ein Kabel zum Modemport sowie ein Netzteil als Spannungsversorgung für die Festplatte. Die Veröffentlichung und der Beginn des Versands sind auf den 1.August 2006 festgesetzt.&lt;br /&gt;
&lt;br /&gt;
An einer Anpassung des [[Kernel]]s usw. wird ebenfalls noch gearbeitet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
==Rund um das Interface==&lt;br /&gt;
'''Wird das IDE-Interface Timeshift beherrschen?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Eine Timeshift-Funktion ist bis jetzt nicht vorgesehen. Aber eventuell werden sich ja ein paar Entwickler auf dieses Themengebiet stürzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Können wir User die Firmware updaten?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ja.&lt;br /&gt;
Es gab den Vorschlag, das direkt in der Box über Pins vom Modemport zu machen. &lt;br /&gt;
Ob dies bei den einzelnen Layouts vorgesehen ist, ist noch nicht bekannt. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren birgt allerdings ein Risiko: Da der CPLD direkt am Prozessorbus hängt, kann eine falsche Firmware dazu führen das die Box sich aufhängt und nicht einmal mehr bootet. Die Platine kann man dann immernoch updaten, muss sie aber aus dem Connector ziehen und irgendwie mit Strom (3.3V) versorgen. Am Modem-Connector ist aber auch dafür alles vorhanden. &lt;br /&gt;
&lt;br /&gt;
Alternative ist ein relativ einfaches Kabel am Parallelport eines PCs. Die 3.3V können dann aus der Box kommen, und ob die sich nach dem Update aufhängt oder nicht ist dann ja egal. Sollte sich die Box aufhängen spielt man einfach das alte Image wieder auf den Chip.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wo bekomme ich ein Kabel her um den CPLD zu programmieren?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Hier ist der Schaltplan um sich ein Kabel für den Parallel-Port bauen zu können.&lt;br /&gt;
[http://toolbox.xilinx.com/docsan/3_1i/data/common/jtg/dppb/appb.htm] [http://www.xilinx.com/xlnx/xil_ans_display.jsp?iLanguageID=1&amp;amp;iCountryID=1&amp;amp;getPagePath=3418]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wird es eine Variante des IDE-Interfaces mit Speichereweiterung geben?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Eher unwahrscheinlich. Der Grund ist das man sich aus Timinggründen keinen Multiplexer am RAM leisten kann. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Auf der Platine sind noch acht unbestückte Lötpads. Wozu dienen diese?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Lötpads sind für eine RealTimeClock bestimmt. Sie können mit einem DS1307Z (SMD), ein Standarduhrenquarz und ein Knopfzellenhalter (KZH-1) bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Imageprobleme==&lt;br /&gt;
&lt;br /&gt;
'''Wann werden die Sourcen veröffentlicht?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die Sourcen werden veröffentlicht, sobald das Interface verfügbar ist. Die Sourcen kommen ins CVS, sodass man sich sein eigenes Image mit HDD-Unterstützung bauen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wird es möglich sein Images mit HDD-Unterstützung und ohne HDD-Unterstützung zu bauen? Oder haben die Images dann standardmäßig HDD-Unterstützung?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Default ändert sich nichts, man muss nur die IDE-Patches zusätzlich aktivieren. Man verwende hierfür die [[Vorlage:Newmake_Build_Optionen|configure-Option]]:&lt;br /&gt;
 &lt;br /&gt;
 --enable-ide&lt;br /&gt;
&lt;br /&gt;
'''Hinweis!'''&amp;lt;br&amp;gt;&lt;br /&gt;
''Im gegenwärtigen CVS-Stand wird das in einigen [[Images]] verwendete HDD-Menü nicht eingebaut. Hierfür ist ein spezieller Patch notwendig, der sicher irgendwann im CVS zu finden sein wird.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nehmen die Erweiterungen die für das IDE Interface benötigt werden viel Platz im Image weg?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Das Image wächst um ungefähr 300 kB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rund um die HD==&lt;br /&gt;
'''Kann ich die Energie für die Platte vom internen Netzteil beziehen?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die Leistungsreserven des dboxinternen Netzteils sind begrenzt. Ein Betrieb einer 2,5&amp;quot;-Platte ist mit Hilfe einer kleinen Schaltung (Schaltregler) an der 27 V- Spannungsversorgung für die Displaybeleuchtung und das LNB möglich. Für 3,5&amp;quot;-Platten muss ein externes Netzteil verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Schaltung:  [http://foto.arcor-online.net/palb/alben/16/849616/1280_3237636664653165.jpg]  [http://foto.arcor-online.net/palb/alben/89/689889/1280_3466343933633531.jpg]  [http://foto.arcor-online.net/palb/alben/89/689889/1280_3065633939363232.jpg]  [http://foto.arcor-online.net/palb/alben/89/689889/1280_6466393530653565.jpg]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ich habe eine Kabelbox. Kann ich trotzdem obige Schaltung verwenden oder haben die Kabelboxen keine 27 V-Spannung?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Alle Boxen haben diese 27 V-Spannung, auch Kabelboxen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Kann ich eine SATA-Platte an das IDE-Interface anschließen? /'''&lt;br /&gt;
'''Wird es eine SATA-Version dieses IDE-Interfaces geben?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Der Einsatz einer SATA-Platte an diesem Interface ist noch nicht getestet worden.&lt;br /&gt;
Laut DBoxBear sollte es aber theoretisch möglich sein eine SATA-Platte mit Hilfe eines PATA-SATA-Adapters zu betreiben. DboxBear wird laut Posting keine Schaltung für SATA entwickeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wird die Festplatte bei Nichtbenutzung in den Standby geschickt?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die Festplatte wird nach 5 Minuten in Standby geschickt. Dieser Wert ist mit hdparm frei zu definieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wird es HD-Tools geben?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Im aktuell in Entwicklung befindlichen Yadi und JtG-Image sind bereits Tools zum Partitionieren und Formatieren der Festplatte sowie die benötigten Treiber enthalten. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Welches IDE-Kabel soll ich verwenden?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Bitte benutze ein 80-poliges IDE-Kabel. Die zusätzlichen Masseleitungen helfen die Signale vor Störeinflüssen zu schützen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gibt es eine Kapazitätsgrenze für die Festplatte?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Da Linux LBA48 unterstützt und den Treiber/Chip das nicht interessiert: &lt;br /&gt;
Alles was es an IDE Platten gibt. (zur Zeit 500GB?) &lt;br /&gt;
Und davon bis zu zwei Stück -&amp;gt; 1TB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wieviel Platten kann ich anschließen?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei. Eine Master- und eine Slave-Platte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''In welchem Modus wird die Platte laufen?'''&amp;lt;br&amp;gt;&lt;br /&gt;
PIO-Mode 4 (max. 16 MByte/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Wie hoch wird die Datenübertragungsrate sein?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die Platte erreicht zur Zeit zwischen 2 und 4 MByte/s. Das ist mehr als das&lt;br /&gt;
10 MBit-LAN der DBox zu leisten vermag.&lt;br /&gt;
Das ist mehr als genug um ZDF mit allen Audiokanälen ohne Unterbrechungen aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Was ist der Unterschied zwischen Mbit/s und MByte/s?'''&amp;lt;br&amp;gt;&lt;br /&gt;
8 Bit entsprechen 1 Byte. 10 MBit/s entsprechen unter realen Bedingungen etwas weniger als 1 MByte/s.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Welches Format wird die Partition auf der Festplatte haben?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die Festplatte wird in ext3 formatiert. Es gibt aber Tools um ext2/3 unter Windows lesen und schreiben zu können. [http://www.fs-driver.org/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MultiCam / MC das unbekannte Wesen?==&lt;br /&gt;
&lt;br /&gt;
'''Wofür dient das Kabel zum Modemport?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Über den Modemport bezieht das IDE-Interface seinen Interrupt. Das Kabel ist für die Funktion unbedingt notwendig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Funktioniert das IDE-Interface auch mit einem MultiCam?'''&amp;lt;br&amp;gt;&lt;br /&gt;
Der parallele Einsatz von einem MultiCam und vom IDE-Interface ist von den Entwicklern nicht vorgesehen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Warum berücksichtigen die Entwickler keine MultiCams'''&amp;lt;br&amp;gt;&lt;br /&gt;
Vom Projekt wird das nicht unterstützt, da auch andere Crypt-Verfahren möglich sind/wären, für die die dbox2 keine Lizenz mitbringt.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis!'''&lt;br /&gt;
&lt;br /&gt;
{{cam_note}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Schaltungen=&lt;br /&gt;
==Hallenberg.com==&lt;br /&gt;
Das IDE-Interface von Hallenberg kann [http://www.Hallenberg.com hier] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
'''Produkteigenschaften:'''&lt;br /&gt;
* 40poliger IDE-Anschluß für 3,5&amp;quot; Festplatten oder 2,5&amp;quot; Festplatten (Adapter 40&amp;lt;&amp;gt;44polig erforderlich)&lt;br /&gt;
* Erweiterung mit einer RealTimeClock (RTC) möglich (als Option bestellbar)&lt;br /&gt;
* Netzteil (extern) 5V-2A (Spitzenlast) extern für die Versorgung von zwei Festplatten 2,5&amp;quot; oder 3,5“ und Lüftern   &lt;br /&gt;
* 5V-Anschluss über Modemport für 2,5“-Festplatten (optional mit Anschlusskabel bestellbar)   &lt;br /&gt;
* LED-Anschluss für die Festplattenaktivität   &lt;br /&gt;
* Lötpunkt für alternativen IRQ 6    &lt;br /&gt;
* Unterstützt Compactflash-Karten über IDE-Adapter    &lt;br /&gt;
* Freie und nicht belegte IO-Pins vom XC95144XL für zukünftige Applikationen.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Nokia===&lt;br /&gt;
====Version 1====&lt;br /&gt;
[[Bild:IDE Nokia.jpg|400px|Bild1: Nokia IDE-Interface von Hallenberg.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Version 2====&lt;br /&gt;
[[Bild:IDE Hallenberg nokia r2 a.jpg|400px|Bild1: Nokia IDE-Interface von Hallenberg.com]]&lt;br /&gt;
[[Bild:IDE Hallenberg nokia r2 b.jpg|400px|Bild2: Nokia IDE-Interface von Hallenberg.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Sagem===&lt;br /&gt;
[[Bild:IDE Hallenberg Sagem.jpg|400px|Bild1: Nokia IDE-Interface von Hallenberg.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Philips===&lt;br /&gt;
[[Bild:IDE Philips.jpg|400px|Bild1: Philips IDE-Interface von Hallenberg.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dbox2.com (IDE-Interface)==&lt;br /&gt;
Das IDE-Interface von Dbox2.com kann [http://www.Dbox2.com hier] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
'''Produkteigenschaften:'''&lt;br /&gt;
* 40poliger IDE-Anschluß für 3,5&amp;quot; Festplatten oder 2,5&amp;quot; Festplatten (Adapter 40&amp;lt;&amp;gt;44polig erforderlich)&lt;br /&gt;
* SD-/MMC-Kartenleser / Lesen und Schreiben auf [[SD-Karte]], [[Mini-SD-Karte]], [[Mirco-SD-Karte]] oder [[MMC-Karte]]&lt;br /&gt;
* Vorbereitet für RTC (Realtimeclock) / Echtzeituhr für die DBox2. &lt;br /&gt;
* Netzteil 5V - 2A (Spitzenlast) onboard für die Versorgung von zwei 2,5&amp;quot; Festplatten und der RTC&lt;br /&gt;
* 5V-Anschluss über Modemport für 2,5“-Festplatten&lt;br /&gt;
* 3x zusätzlich Anschlüsse für Lüfter (5V)&lt;br /&gt;
* LED für HDD-Aktivität onboard / Der Anschluss einer externen LED ist auch möglich.&lt;br /&gt;
* Lötpunkt oder Jumper für alternativen IRQ 6&lt;br /&gt;
* Unterstützt Compactflash-Karten über Adapter&lt;br /&gt;
* Freie und nicht belegte IO-Pins vom XC95144XL für zukünftige Applikationen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Nokia===&lt;br /&gt;
[[Bild:IDE_DBOX2-COM Nokia1.jpg|400px|Bild1: Nokia IDE-Interface von Dbox2.com]]&lt;br /&gt;
[[Bild:IDE_DBOX2-COM_Nokia2.jpg|300px|Bild2: Nokia IDE-Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Sagem===&lt;br /&gt;
[[Bild:IDE_DBOX2-COM_Sagem1.jpg|400px|Bild1: Sagem IDE-Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-Interface Philips===&lt;br /&gt;
[[Bild:IDE_DBOX2-COM_Philips1.jpg|400px|Bild1: Philips-IDE Interface von Dbox2.com]]&lt;br /&gt;
[[Bild:IDE_DBOX2-COM_Philips2.jpg|400px|Bild2: Philips-IDE Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dbox2.com (IDE-SATA-Interface)==&lt;br /&gt;
Das IDE-SATA-Interface von Dbox2.com kann [http://www.Dbox2.com hier] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
'''Produkteigenschaften:'''&lt;br /&gt;
* 40poliger IDE-Anschluß für 3,5&amp;quot; Festplatten oder 2,5&amp;quot; Festplatten (Adapter 40&amp;lt;&amp;gt;44polig erforderlich)&lt;br /&gt;
* 7poliger SATA-Anschluß für 3,5&amp;quot; Festplatten oder 2,5&amp;quot; Festplatten&lt;br /&gt;
* MircoSD-Kartenleser / Lesen und Schreiben auf [[Mirco-SD-Karte]] &lt;br /&gt;
* Vorbereitet für RTC (Realtimeclock) / Echtzeituhr für die DBox2. &lt;br /&gt;
* Netzteil 5V - 2A (Spitzenlast) onboard für die Versorgung von zwei 2,5&amp;quot; Festplatten und der RTC&lt;br /&gt;
* 5V-Anschluss über Modemport für 2,5“-Festplatten&lt;br /&gt;
* 3x zusätzlich Anschlüsse für Lüfter (5V)&lt;br /&gt;
* LED für HDD-Aktivität onboard / Der Anschluss einer externen LED ist auch möglich.&lt;br /&gt;
* Lötpunkt oder Jumper für alternativen IRQ 6&lt;br /&gt;
* Unterstützt Compactflash-Karten über Adapter&lt;br /&gt;
* Freie und nicht belegte IO-Pins vom XC95144XL für zukünftige Applikationen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-SATA-Interface Nokia===&lt;br /&gt;
[[Bild:IDE_SATA_DBOX2-COM Nokia3.jpg|400px|Bild1: Nokia IDE-SATA-Interface von Dbox2.com]]&lt;br /&gt;
[[Bild:IDE_SATA_DBOX2-COM_Nokia4.jpg|300px|Bild2: Nokia IDE-SATA-Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-SATA-Interface Sagem===&lt;br /&gt;
[[Bild:IDE_SATA_DBOX2-COM_Sagem2.jpg|400px|Bild1: Sagem IDE-SATA-Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IDE-SATA-Interface Philips===&lt;br /&gt;
[[Bild:IDE_SATA_DBOX2-COM_Philips3.jpg|400px|Bild1: Philips-SATA-IDE Interface von Dbox2.com]]&lt;br /&gt;
[[Bild:IDE_SATA_DBOX2-COM_Philips4.jpg|300px|Bild2: Philips-SATA-IDE Interface von Dbox2.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Alternative IRQ´s=&lt;br /&gt;
&lt;br /&gt;
==Nokia==&lt;br /&gt;
Der Pin14 muss abgeloetet oder die Leiterbahn unterbrochen werden, ansonsten kann es zu Problemen kommen wenn man die serielle Schnittstelle verwendet!&lt;br /&gt;
&lt;br /&gt;
[[Bild:IRQ6 Nokia1.jpg|400px|Bild1: IRQ6 Nokia]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6 Nokia2.jpg|400px|Bild2: IRQ6 Nokia]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6 Nokia3.jpg|400px|Bild3: IRQ6 Nokia]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6 Nokia4.jpg|400px|Bild4: IRQ6 Nokia]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sagem==&lt;br /&gt;
Der Pin15 muss abgeloetet oder die Leiterbahn unterbrochen werden, ansonsten kann es zu Problemen kommen wenn man die serielle Schnittstelle verwendet!&lt;br /&gt;
&lt;br /&gt;
[[Bild:IRQ6_Sagem1.jpg|400px|Bild1: IRQ6 Sagem]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6_Sagem2.jpg|400px|Bild2: IRQ6 Sagem]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6_Sagem3.jpg|400px|Bild3: IRQ6 Sagem]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6_Sagem4.jpg|400px|Bild4: IRQ6 Sagem]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Philips==&lt;br /&gt;
[[Bild:IRQ6_Philips1.jpg|400px|Bild1: IRQ6 Philips]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:IRQ6_Philips2.jpg|400px|Bild2: IRQ6 Philips]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Schaltregler=&lt;br /&gt;
Ein Schaltregler ermöglicht den Betrieb von 2,5&amp;quot; Festplatten ohne zusätliches Netzteil. Die hierzu benötigte Spannung wird vom internen Netzteil der [[dbox2]] abgegriffen und auf 5Volt gewandelt.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Schaltregler Platine.jpg|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Nokia==&lt;br /&gt;
[[Bild:Spannung Schaltregler Nokia1.jpg|400px|Spannung (27Volt/GND/Schaltspannung) Nokia]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sagem==&lt;br /&gt;
[[Bild:Spannung Schaltregler Sagem1.jpg|400px|Spannung (27Volt/GND/Schaltspannung) Sagem(Netzteil braun)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Spannung Schaltregler Sagem2.jpg|400px|Spannung (27Volt/GND/Schaltspannung) Sagem(Netzteil weiss)]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Philips==&lt;br /&gt;
[[Bild:Spannung Schaltregler Philips1.jpg|400px|Spannung (22Volt/GND) Philips]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Spannung Schaltregler Philips2.jpg|400px|Einschaltspannung (3,3Volt) Philips]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Downloads=&lt;br /&gt;
* [[Download:IDE-CPLD-Sourcen.zip|CPLD-Sourcen für das IDE-Interface]]&lt;br /&gt;
* [[Download:DBoxNokiaIDE.zip|Eagle-Schaltbilder des Prototypen von DBoxBaer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* [http://www.dboxservice-hallenberg.de/ Hallenberg.com Vertrieb]&lt;br /&gt;
* [http://www.dbox2.com/ Dbox2.com Vertrieb]&lt;br /&gt;
* [http://tuxbox-forum.mine.nu/forum/viewtopic.php?t=39462 Detailinfos zum Projekt im Tuxbox-Forum]&lt;br /&gt;
* [http://www.xilinx.com/ise/logic_design_prod/webpack.htm Softwaredownload für die Entwicklungsumgebung]&lt;br /&gt;
  www.digchip.com/datasheets/parts/datasheet/534/XC95144XL-5.php CPLD-Spezifikation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Customizing&amp;diff=11028</id>
		<title>Neutrino:Customizing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Neutrino:Customizing&amp;diff=11028"/>
		<updated>2008-11-02T16:59:00Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Pfad zu Senderlogos ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Neutrino]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
{{Howto_sidebar}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Unter [[Neutrino]] gibt es einige Möglichkeiten die Benutzeroberfläche ([[GUI]]) nach seinen eigenen Wünschen anzupassen und da [[Neutrino]] nach dem Client-Server Prinzip funktioniert, lässt sich [[Neutrino]] über einige Befehle mittels [[API]] auch ohne [[GUI]] in gewissem Umfang bedienen. Desweiteren besteht auch die Möglichkeit, einzelne Ereignisse wie z.B. Aufnahmestop, Bildformatumschaltung etc. abzufangen und diese bei Bedarf mittels [[WP:Unix-Shell|Shell-]][[WP:Bash|Script]] für bestimmte zusätzliche Funktionen zu nutzen. Es wäre auch möglich, ein eigenes Webinterface zu benutzen. &lt;br /&gt;
&lt;br /&gt;
=Benutzeroberfläche anpassen=&lt;br /&gt;
==Alternative Sprachen (custom locale)==&lt;br /&gt;
Die [[locale]] ist eine Datei, welche für die Ausgabe der Sprache auf der [[GUI]] verantwortlich ist. Eigene oder geänderte locales können bei [[squashFS]] [[Images]] im /var Verzeichnis gespeichert werden:&lt;br /&gt;
&lt;br /&gt;
 format: UTF-8 encoded &lt;br /&gt;
 directory: /var/tuxbox/config/locale or /share/tuxbox/neutrino/locale &lt;br /&gt;
 filenames: *.locale&lt;br /&gt;
&lt;br /&gt;
Die Sprache kann nach Neustart unter [[Neutrino:Einstellungen:Sprache|Einstellungen:Sprache]] ausgewählt werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Plugins hinzufügen/entfernen==&lt;br /&gt;
Eigene [[Plugins]] können gespeichert werden unter:&lt;br /&gt;
&lt;br /&gt;
 directory: /var/tuxbox/plugins or /lib/tuxbox/plugins &lt;br /&gt;
 Disabling plugin X (X.cfg, X.so) available in /lib/tuxbox/plugins: touch /var/tuxbox/plugins/X.cfg&lt;br /&gt;
&lt;br /&gt;
==eigene Icons==&lt;br /&gt;
Für alle Icons, also Symbole, die in den Menüs und Fenstern zu sehen sind, können ersatzweise eigene Icons verwendet werden. Es werden dafür entsprechende Dateien im Raw-Format benötigt. Auch die Größe sollte man dabei beachten, damit es zu keinen unschönen Abbildungen in den jeweiligen Fenstern kommt. &lt;br /&gt;
Mgck hat auch ein kleines Programm ([http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?f=27&amp;amp;t=45435 RawIconEditor] )zum editieren solcher Icons geschrieben, womit man relativ einfach solche Icons bearbeiten kann.&lt;br /&gt;
Die entsprechenden Icons werden hier abgelegt:&lt;br /&gt;
&lt;br /&gt;
 var/share/tuxbox/neutrino/icons/&lt;br /&gt;
&lt;br /&gt;
==eigene Radiomode-, Shutdown- und Scanbilder==&lt;br /&gt;
Ebenso wie Icons lassen sich auch die Hintergrundbilder austauschen. Dies erfolgt auf die gleiche Weise wie bei eigenen Icons. Der Unterschied ist nur, dass auch die dazugehörigen .pal-Dateien nicht vergessen werden dürfen. Diese Hintergrundbilder sind relativ groß und schlucken einiges vom ohnehin knappen Speicherplatz in der Box. Man sollte daher eigentlich davon absehen diese Logos zu tauschen, aber wenn man es dennoch haben möchte, sei hier der Hinweis angebracht, dass das Risiko, sein Image &amp;quot;platzen&amp;quot; zu lassen ungemein größer wird. Alternativ besteht auch die Möglichkeit Symlinks auf die Dateien zu setzen. Diese können dann auf ein Ausgelagertes Verzeichnis zeigen, welche sich z.B. auf MMC oder HDD befinden. &lt;br /&gt;
&lt;br /&gt;
==Senderlogos==&lt;br /&gt;
ab CVS-Stand 17.07.2008 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Infobar besteht die Möglichkeit, Senderlogos einzublenden. Es werden dafür entsprechende Dateien vom gleichen Raw-Format wie Icons benötigt und werden standardmäßig im gleichen Ordner wie die alternativen Icons abgelegt.&lt;br /&gt;
 /var/share/tuxbox/neutrino/icons/&lt;br /&gt;
Der Speicherort ist entsprechend den eigenen Bedürfnissen anpassbar. Zu berücksichtigen ist auch das bei [[jffs2]]-Images kein ''/var'' Ordner vorhanden ist. Hier muss das Verzeichnis entweder entsprechend ohne das ''/var'' in den Infobareinstellungen geändert werden.&lt;br /&gt;
 /share/tuxbox/neutrino/icons/ &lt;br /&gt;
oder man legt gleich einen anderen Pfad an.&lt;br /&gt;
Empfehlenswert ist auch, eine Auslagerung auf ein [[SD-Medium]], sofern man ein entsprechendes [[IDE-Interface]] nutzen kann&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je nachdem wo man die Logos angezeigt haben möchte, ist auch die Größe der Grafikdateien variabel. Erfahrungsgemäß sind Logos mit der Größe 120x34px zu empfehlen, damit sie optisch am besten eingepasst werden können. Sollte es Probleme bei der Größe geben, wird dies auch im Bootlog entsprechend angezeigt. Die Position der Logos lässt sich im Menü &lt;br /&gt;
'''''Diverse Einstellungen&amp;gt;Infobar&amp;gt;Anzeige''''' einstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es besteht auch die Möglichkeit den Hintergrund der Logos gerahmt oder schattiert darzustellen. Dies kann unter Umständen bei bestimmten Themes sinnvoll sein.&lt;br /&gt;
*[[Bild:infobar_channellogo_gerahmt.png|300px]]&lt;br /&gt;
*[[Bild:infobar_channellogo_schattiert.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die Darstellung der Logos lässt sich im Menü &lt;br /&gt;
'''''Diverse Einstellungen&amp;gt;Infobar&amp;gt;Hintergrund''''' einstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Bild:Diverse einstellungen infobar.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Dateiname für ein Logo setzt sich aus der '''ChannelID''' '''oder''' dem '''Realnamen des Kanals''' wie er in den EPG-Informationen angezeigt wird und der Dateiendung &amp;quot;'''.raw'''&amp;quot; zusammen.&lt;br /&gt;
Beispiel hier für 3Sat:&lt;br /&gt;
 43700016d67.raw&lt;br /&gt;
oder&lt;br /&gt;
 3sat.raw&lt;br /&gt;
&lt;br /&gt;
Die ChannelID ist eine Kombination einiger Daten, die man beispielsweise aus den [[Neutrino#Technische_Information|Streaminfos]] abrufen kann. &lt;br /&gt;
*[[Bild:Technische_informationen.png|400px]]&lt;br /&gt;
Diese setzt sich zusammen aus &lt;br /&gt;
*tsid 0x0'''437'''&lt;br /&gt;
*onid 0x'''0001'''&lt;br /&gt;
*sid  0x'''6d67'''&lt;br /&gt;
Wie man sieht, ist das angezeigte Format in den Informationen etwas anders. Es werden nur die fett abgebildeten Daten benötigt.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit, die ChannelID zu gewinnen besteht darin, diese über den Webbrowser abzurufen. Dafür muss die dBox natürlich mit dem PC verbunden sein. Im Browser gibt man hierfür diese Daten ein:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://&amp;lt;dBoxIP&amp;gt;/control/getonidsid&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Als Rückgabe erscheint dann die gewünschte ID vom aktuell eingeschaltetem Sender.&lt;br /&gt;
&lt;br /&gt;
Die Datei &lt;br /&gt;
 /var/tuxbox/config/zapit/services.xml&lt;br /&gt;
enthält ebenfalls diese Daten.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:''' ''Die ChannelID's sind je nach Empfangsmöglichkeiten (Kabel-Provider, Satellit  usw.) unterschiedlich. Wenn es denn möglich sein sollte, könnte man evtl. auf vorgefertigte Logo-Packs zurückgreifen.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird solch eine Raw-Datei anhand der ChannelID bzw. dem Sendernamen erkannt, wird sie automatisch zum passenden Kanal angezeigt.&lt;br /&gt;
&lt;br /&gt;
Hier einige Beipiele:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Bild:Infobar chlogo number.jpg|300px]] anstelle Kanalnummer 120x64px&lt;br /&gt;
*[[Bild:Infobar chlogo ersatz.jpg|300px]] anstelle Sendername  [max]x64px&lt;br /&gt;
*[[Bild:Infobar chlogo beside.jpg|300px]] neben Sendername     [max]x64px&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:''' [max] ''gibt die Breite an, die verwendet werden kann. Die Breite für das Logo kann je nach Länge des Programmnames, der je nach Einstellung bis zur Zeitanzeige reichen kann, variieren. Dies ist somit auch davon abhängig, welche Einstellungen für den OSD-Bereich gemacht wurden. Sollte ein Logo nicht passen, kann das [[Bootlog]] mehr Informationen über die maximal mögliche Größe Aufschluß geben&amp;lt;br&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Nach dem Einspielen sind die Logos sofort verfügbar sobald sie durch den Infobar aufgerufen werden. Ein Neustart von Neutrino ist nicht erforderlich.&lt;br /&gt;
&lt;br /&gt;
Sollte jemand Logos zur Verfügung stellen wollen, besteht [http://www.dbox2-tuning.net/ulc hier] die Möglichkeit, Logos zu sammeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==eigene LCD-Vorlagen==&lt;br /&gt;
Neben dem [[Bootlogo austauschen|LCD-Bootlogo]] lassen sich auch die während des Betriebs der Box vom LC-Displays abgebildeten Hintergründe nach eigenen Wünschen austauschen. Hierfür werden Bilder im png-Format mit einer Auflösung von 120x64 Pixel 1bit-Modus, horizontale und vertikale Auflösung jeweils 96 dpi benötigt.&lt;br /&gt;
Speicherort:&lt;br /&gt;
&lt;br /&gt;
 var/share/tuxbox/neutrino/lcdd/&lt;br /&gt;
&lt;br /&gt;
Diese Dateien können hierbei ersetzt werden:&lt;br /&gt;
*lcd.png&lt;br /&gt;
*lcd2.png&lt;br /&gt;
*lcd3.png&lt;br /&gt;
*power.png&lt;br /&gt;
*setup.png&lt;br /&gt;
&lt;br /&gt;
=eigene Bootlogos verwenden=&lt;br /&gt;
&lt;br /&gt;
siehe [[Bootlogo austauschen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ereignisse abfangen=&lt;br /&gt;
Angenommen man möchte eine nächtliche Timeraufname machen und diese aber möglicht bald auf seinem Rechner wiederfinden. Hier kann es beispielsweise nützlich sein, nachdem die Aufnahme beendet wurde, sich diese von einer evtl. vorhandenen Festplatte über das Netzwerk auf seinen Rechner kopieren zu lassen. Genau hierfür bietet Neutrino die Möglichkeit, eine entsprechende Aktion auszuführen. In diesem Fall wäre es das Script '''recording.end''' dass, sofern es vorhanden und ausführbar ist, nach jedem Ende einer Aufnahme ausgeführt wird. Dieses und noch einige weitere Ereignisse lassen sich damit abfangen und nutzen...   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufnahme Ankündigung==&lt;br /&gt;
Wenn eine Aufnahme angekündigt wird, wird zunächst (wenn vorhanden) dieses Skript ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.timer   (Rechte auf 755)&lt;br /&gt;
Dieses Script kann benutzt werden um eine evtl. im Standby/ Spindown befindliche Platte im Server/ NAS zu &amp;quot;wecken&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufnahme Start==&lt;br /&gt;
Wenn eine Aufnahme gestartet wird, wird zunächst (wenn vorhanden) dieses Skript ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufnahme Ende==&lt;br /&gt;
Seit [[Yadi]] 1.9.0.2 ist im folgenden Pfad eine Beispielkonfiguration für ein Skript, was bei Aufnahmeende ausgeführt wird. Damit es ausgeführt wird, muss es in record.end umbenannt werden. Rechte müssen auf 755 stehen.&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/recording.end''.dist''&lt;br /&gt;
&lt;br /&gt;
Wenn ihr das Beispielskript /var/tuxbox/config/recording.end.dist umbenennt in recording.end werden die aufgenommenen ts-files mit dbox2genpsi gepatcht, sodass sie auch unter [[Enigma]] abspielbar sind.&lt;br /&gt;
&lt;br /&gt;
und so sieht es aus:&lt;br /&gt;
 &lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 # $Id: recording.end,v 1.5 2004/08/07 21:11:31 essu Exp $ &lt;br /&gt;
 FOUND=`grep network_nfs_recordingdir /var/tuxbox/config/neutrino.conf` || exit &lt;br /&gt;
 RECDIR=`expr substr $FOUND 26 154` &lt;br /&gt;
 cd $RECDIR &amp;amp;&amp;amp; FILES=`ls -c *.ts` || exit &lt;br /&gt;
 for FILE in $FILES; do &lt;br /&gt;
 break; &lt;br /&gt;
 done &lt;br /&gt;
 dbox2genpsi $RECDIR/$FILE&lt;br /&gt;
&lt;br /&gt;
Natürlich können an dieser Stelle auch andere Skripte ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Standby ON==&lt;br /&gt;
Wenn die Box in den Standby geschickt wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/standby.on   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Standby OFF==&lt;br /&gt;
Wenn die Box aus dem Standby geholt wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/standby.off   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
==Audioplayer Start==&lt;br /&gt;
Wenn der Audioplayer gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/audioplayer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Audioplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Audioplayer Stop==&lt;br /&gt;
Wenn der Audioplayer beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/audioplayer.end   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 sectionsd&lt;br /&gt;
Das startet den [[sectionsd]] nach Beendung des [[Audioplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bildbetrachter Start==&lt;br /&gt;
(ab Pictureviewer Version 1.63)&lt;br /&gt;
Wenn der [[Neutrino:Bildbetrachter|Bildbetrachter]] gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/pictureviewer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Neutrino:Bildbetrachter|Bildbetrachter]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bildbetrachter Stop==&lt;br /&gt;
Wenn der [[Neutrino:Bildbetrachter|Bildbetrachter]] beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/pictureviewer.end   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Movieplayer Start==&lt;br /&gt;
Wenn der Movieplayer gestartet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/movieplayer.start   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 killall -9 sectionsd&lt;br /&gt;
Das beendet den [[sectionsd]] beim Starten des [[Movieplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Movieplayer Stop==&lt;br /&gt;
Wenn der Movieplayer beendet wird, wird dieses Skript (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/movieplayer.end   (Rechte auf 755)&lt;br /&gt;
Beispiel:&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 sectionsd&lt;br /&gt;
Das startet den [[sectionsd]] nach Beendung des [[Movieplayer]]s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bei Bildformatumschaltung==&lt;br /&gt;
Wenn das jeweilige Bildformat umgeschaltet wird, werden diese Skripte (wenn vorhanden) ausgeführt:&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/16:9.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
 /var/tuxbox/config/4:3.start   (Rechte auf 755)&lt;br /&gt;
&lt;br /&gt;
Ausserdem gibt es noch die Alternativen für [[Lirc]], welche ebenfalls genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
 16:9.lirc&lt;br /&gt;
&lt;br /&gt;
 4:3.lirc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=custom Webinterface=&lt;br /&gt;
Das [[Webinterface]] von [[Neutrino]] liegt im Verzeichnis:&lt;br /&gt;
 /share/tuxbox/neutrino/httpd&lt;br /&gt;
&lt;br /&gt;
Bei [[squashFS]] [[Images]] ([[Yadi]]) ist dieses Verzeichnis schreibgeschützt. Das heißt, dass Änderungen dort nicht so einfach möglich sind. Es gibt jedoch einen Eintrag in der nhttpd.conf, der einen alternativen Pfad beinhaltet. Man erstellt unter /var das Verzeichnis &amp;quot;httpd&amp;quot;:&lt;br /&gt;
 /var/httpd&lt;br /&gt;
In diesen Pfad kann man das alternative Webinterface ablegen. Bei Aufruf im Browser&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://&amp;lt;dboxIP&amp;gt;/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
erscheint die in diesem Verzeichnis abgelegte &amp;quot;index.html&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=nhttpd /control api doku=&lt;br /&gt;
Diese Dokumentation ist auch im [[CVS]] [http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/apps/tuxbox/neutrino/daemons/nhttpd/api_doku.txt?view=markup hier] zu finden. Bei Aufrufen vom Browser ist im Handler &amp;quot;dbox&amp;quot; durch die IP Adresse der Dbox zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Die Kanalliste==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/channellist&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die gesamte Kanalliste von [[Neutrino]] zurückgegeben. Jede Zeile wird von einem Enter (\n) von der Nächsten getrennt. Eine Zeile enthält ein Programm.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' channel_id Programmname&lt;br /&gt;
&lt;br /&gt;
Die channel_id dient als Handle für andere Operationen wie Zappen oder [[EPG]].&lt;br /&gt;
Die channel_id ist eine 64 bit Hexadezimalzahl.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/channellist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 16dca Das Erste&lt;br /&gt;
 16e29 EinsExtra&lt;br /&gt;
 16e2a EinsFestival&lt;br /&gt;
 16e2b EinsMuXx&lt;br /&gt;
 16d66 ZDF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EPG-Abfrage==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/epg&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden alle verfügbaren EPGs aller Programme zur aktuellen Zeit zurückgegeben. Jede Zeile wird von einem Enter (\n) von der Nächsten getrennt. Eine Zeile enthält die Information über die aktuell laufende Sendung.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' channel_id EVENTID Titel der Sendung&lt;br /&gt;
&lt;br /&gt;
Die EVENTID dient als Handle um genauere Informationen abzufragen.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/epg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 8716804 571264467523 Wasserloch Nr. 3&lt;br /&gt;
 8716304 571231699926 Ein Käfig voller Helden&lt;br /&gt;
 8716311 571232198133 Cop Rock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' channel_id (64 bit, hexadezimal)&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Als Rückgabe wird die Eventliste des durch die channel_id identifizierten Senders gesendet, d.h. eine Liste, welche Filme auf diesem Sender kommen. Jede Zeile wird von einem Enter (\n) von der Nächsten getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' EVENTID Startzeit Dauer Titel der Sendung&lt;br /&gt;
&lt;br /&gt;
Die EVENTID dient als Handle um genauere EPG-Informationen abzufragen.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/epg?8716304&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 571231699925 1021322700 1500 Shooting Stars&lt;br /&gt;
 571231699926 1021324200 1500 Ein Kaefig voller Helden&lt;br /&gt;
 571231699927 1021325700 1500 The Hitchhiker&lt;br /&gt;
 571231699928 1021327200 1500 The Hitchhiker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' id=channel_id&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Als Rückgabe wird die Eventliste des durch die channel_id identifizierten Senders gesendet, das heißt eine Liste, was für Filme auf einem Sender kommen. Jeder Datensatz wird von einem EnterEnter (\n\n) vom  Nächsten getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' &lt;br /&gt;
EVENTID Startzeit DURATION&lt;br /&gt;
TITLE&lt;br /&gt;
INFO1&lt;br /&gt;
INFO2&lt;br /&gt;
&lt;br /&gt;
Die EVENTID dient als Handle um genauere EPG-Informationen abzufragen.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/epg?id=16dcb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 6143198520 1067754600 1800&lt;br /&gt;
 Daten der Woche&lt;br /&gt;
 Moderation: Andrea Müller&lt;br /&gt;
 Themen:Š* Kandidatenkür: Maas wird SpitzenkandidatŠ* ......&lt;br /&gt;
 &lt;br /&gt;
 6143198521 1067756400 1800&lt;br /&gt;
 Abendschau&lt;br /&gt;
 Themen:Š* Protestmarsch &amp;quot;Es reicht&amp;quot;Š* ..........&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' eventid=EVENTID&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die ausführliche Beschreibung eines Films zurückgegeben. Diese besteht aus einem Titel, einer allgemeinen Info und der Beschreibung. Titel Info und Beschreibung werden mit einem Enter (\n) voneinander getrennt. Es muss beachtet werden, dass in der Beschreibung weitere Enter vorkommen können.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Titel&amp;lt;br&amp;gt;&lt;br /&gt;
Info&amp;lt;br&amp;gt;&lt;br /&gt;
Beschreibung&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/epg?eventid=571231699926&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Ein Käfig voller Helden&lt;br /&gt;
 Operation 'Tiger' &lt;br /&gt;
 blablabla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' ext&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden alle verfügbaren EPGs aller Programme zur aktuellen Zeit zurückgegeben. Jede Zeile wird von einem Enter (\n) von der Nächsten getrennt.&lt;br /&gt;
Eine Zeile enthält die Information über die aktuell laufende Sendung.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' channel_id Startzeit Dauer EVENTID Titel der Sendung&lt;br /&gt;
&lt;br /&gt;
Die EVENTID dient als Handle um genauere Informationen abzufragen.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/epg?ext&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 8716330 1025382300 6900 571233417784 Rocky 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Die DBox herunterfahren==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/shutdown&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird der Text &amp;quot;ok&amp;quot; bei Erfolg oder &amp;quot;error&amp;quot; im Fehlerfall zurückgegeben. Die Dbox schaltet sich bei &amp;quot;ok&amp;quot; sofort ab.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/shutdown&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Standby Mode==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/standby&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' on&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Schaltet in den Standby Mode&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok /error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/standby?on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' off&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Schaltet den Standby Mode aus&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok /error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/standby?off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lautstärke-Steuerung==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/volume&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die aktuell eingestellte Lautstärke zurückgegeben - die Werte bewegen sich zwischen 0 (leise) und 100 (laut).&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' Lautstärke&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/volume&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 80&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' &amp;lt;Lautstärke als ganze Zahl in 5er Schritten&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es kann die Lautstärke eingestellt werden - die Werte müssen sich zwischen 0 (leise) und 100 (laut) bewegen. Es sollten nur Werte in 5er-Schritten gesetzt werden (5,10,...).&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/volume?40&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' mute&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Die Audio-Ausgabe wird abgeschaltet. Es kommt als Bestätigung der String &amp;quot;mute&amp;quot; zurück.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/volume?mute&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 mute&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' unmute&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Die Audio-Ausgabe wird wieder eingeschaltet. Es kommt als Bestätigung der String &amp;quot;unmute&amp;quot; zurück.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/volume?mute&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 unmute&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' status&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird der Status (ob gerade mute aktiv ist) zurückgegeben. (0 - unmuted, 1 - mute)&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' 0 oder 1&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/volume?status&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Programm umschalten / Playback==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/zapto&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die channel_id (hex-value, 64 bit, kein 0x-prefix) des aktuell laufenden Senders zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 16dcb&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getpids&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden die VPID und die APID des laufenden Senders angezeigt. Die beiden Werte sind durch ein Enter voneinander getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' VPID, APID&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?getpids&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 305&lt;br /&gt;
 306&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getallpids&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden die VTXT PID, VPID und alle APIDs des laufenden Senders angezeigt. Die Werte sind durch ein Enter voneinander getrennt. Hinter jeder APID wird eine kurze Beschreibung angegeben, bei [[AC3]] Streams zusätzlich (AC3).&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:'''&amp;lt;br&amp;gt;&lt;br /&gt;
VPID&amp;lt;br&amp;gt;&lt;br /&gt;
APID &amp;lt;description&amp;gt; [(AC3)]&amp;lt;br&amp;gt;&lt;br /&gt;
[APID...]&amp;lt;br&amp;gt;&lt;br /&gt;
[VTXT PID]&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?getallpids&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 00511&lt;br /&gt;
 00512 deutsch&lt;br /&gt;
 00513 englisch&lt;br /&gt;
 00515 Dolby Digital 2.0&lt;br /&gt;
 00032 vtxt&lt;br /&gt;
 00101 pmt&lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
 00101&lt;br /&gt;
 00102 German  &lt;br /&gt;
 00104 vtxt&lt;br /&gt;
 00100 pmt&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' stopplayback&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Stoppt die Decodierung, um grabben zu können. Zusätzlich wird der Sectionsd gestoppt. Rückgabewert sollte ok für Erfolg sein.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?stopplayback&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' startplayback&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Startet die Decodierung nach dem Grabben wieder, [[Sectionsd]] wird auch wieder gestartet. Rückgabewert sollte ok für Erfolg sein.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?startplayback&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' statusplayback&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
'1': Playback aktiv, '0': kein Playback aktiv&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' 0/1&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?statusplayback&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' stopsectionsd&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Stoppt den [[Sectionsd]] zum Grabben. Rückgabewert sollte ok für Erfolg sein.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?stopsectionsd&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' startsectionsd&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Startet [[Sectionsd]] nach dem Grabben wieder. Rückgabewert sollte &amp;quot;ok&amp;quot; für Erfolg sein.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?startsectionsd&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' statussectionsd&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
gibt den Status des [[Sectionsd]] zurück. (Scanning, bzw, kein Scanning)&lt;br /&gt;
&lt;br /&gt;
'''Rückgabe-Format:''' '1': sectionsd scanning an, '0': sectionsd scanning aus&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?statussectionsd&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' channel_id (64 bit, hexidecimal value)&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Zappt auf den angegebenen Kanal. Als Rückgabe ist im Erfolgsfall &amp;quot;ok&amp;quot; zu erwarten.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/zapto?16dcb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio/TV, Record Mode==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/setmode&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' status&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird der aktuelle record mode Status zurückgegeben&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' on / off&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?status&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 on&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' radio&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Schaltet in den radio mode&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' tv&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Schaltet in den TV mode&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?tv&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' record&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Schaltet in den record mode&lt;br /&gt;
Dies beinhaltet auch das Stoppen, bzw. das Starten des [[sectionsd]] Scanning, das Starten des Playbacks(immer) und Stoppen des Playbacks (nur bei stopplayback=true).&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?record=start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?record=start&amp;amp;stopplayback=true&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/setmode?record=stop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio/TV Mode Abfrage==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getmode&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:'''&amp;lt;br&amp;gt; &lt;br /&gt;
'''Rückgabe:''' &amp;quot;tv&amp;quot;, &amp;quot;radio&amp;quot;, &amp;quot;unkown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Es wird der aktuelle mode zurückgegeben tv / radio / unknown (shouldn't happen)&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getmode&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 tv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Datum von der Box abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getdate&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird das Datum zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' dd.mm.yyyy&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getdate&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 25.02.2005&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Uhrzeit von der Box abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/gettime&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' keine&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die Uhrzeit zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' hh:mm:ss&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/gettime&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 20:34:24&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' rawtime&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die Uhrzeit im [[time_t]] Format zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' [[time_t]]&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/gettime?rawtime&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1046804654&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Allgemeine Informationen abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/info&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' streaminfo&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden Streaminfos zurückgegeben. Die Werte sind durch Enter (\n) getrennt&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' X_res Y_res [[Bitrate]] Videoformat [[Framerate]] Audioformat&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/info?streaminfo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 480&lt;br /&gt;
 576&lt;br /&gt;
 997500&lt;br /&gt;
 4:3&lt;br /&gt;
 25&lt;br /&gt;
 joint stereo&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' version&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Aktuelle [[cramfs]] - Version. Es wird der Inhalt der Datei /.version zurückgegeben. &lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/info?version&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 version: 1.1.27032002-21.8&lt;br /&gt;
 md5sum: f1d7d47578bb9040a82085182934ce0e&lt;br /&gt;
 Erstellt von alexW&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' settings&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' &lt;br /&gt;
Aktuelle Settings und DBox Typ&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/info?settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Boxtype Nokia&lt;br /&gt;
 videooutput RGB&lt;br /&gt;
 videoformat 4:3&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' httpdversion&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' &amp;lt;br&amp;gt;&lt;br /&gt;
Version des httpd&amp;lt;br&amp;gt; &lt;br /&gt;
1 : nhttpd (legacy api)&amp;lt;br&amp;gt;&lt;br /&gt;
2 : thttpd&amp;lt;br&amp;gt;&lt;br /&gt;
3 : nhttpd&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/info?httpdversion&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aktuellen Kanal abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getonidsid&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Parameter:'''&amp;lt;br&amp;gt; &lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird die TSIDONIDSID des aktuellen Kanals zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
''Diese Funktion sollte NICHT mehr verwendet werden und ist durch folgenden Aufruf ersetzt:'' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://dbox/control/zapto&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' TSIDONIDSID&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getonidsid&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 44d00016dca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==services.xml lesen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getservicesxml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird der Inhalt der Datei /var/tuxbox/config/zapit/[[services.xml]] zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getservicesxml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;ZAPIT&amp;gt;&lt;br /&gt;
 &amp;lt;cable&amp;gt;&lt;br /&gt;
 &amp;lt;transponder transportID=&amp;quot;00001&amp;quot; networkID=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;cable frequency=&amp;quot;04020&amp;quot; symbolRate=&amp;quot;06900&amp;quot; fec=&amp;quot;0&amp;quot; polarity=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==bouquets.xml auslesen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getbouquetsxml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es wird der Inhalt der Datei /var/tuxbox/config/zapit/[[bouquets.xml]] zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getbouquetsxml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;ZAPIT&amp;gt;&lt;br /&gt;
         &amp;lt;Bouquet name=&amp;quot;beispielbouquet&amp;quot; hidden=&amp;quot;0&amp;quot; locked=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;channel serviceID=&amp;quot;6d67&amp;quot; name=&amp;quot;3sat&amp;quot; onid=&amp;quot;0001&amp;quot;/&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bouquetlist abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getbouquets&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Es werden alle [[Bouquets]] zurückgeliefert&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getbouquets&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1 ARD&lt;br /&gt;
 3 Premiere World&lt;br /&gt;
 4 VisionProgramme&lt;br /&gt;
 5 ZDFvision&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bouquet abfragen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/getbouquet&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' [[Bouquet]] Nr. und TV|RADIO&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rueckgabe:'''&lt;br /&gt;
Es werden alle Sender des Bouquets zurückgeliefert&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' [Nummer_des_Kanals] [channel_id] [Name_des_Senders]&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/getbouquet?bouquet=2&amp;amp;mode=TV&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 20 12ee3 RTL Television&lt;br /&gt;
 21 85002e SAT.1&lt;br /&gt;
 22 850382 ProSieben&lt;br /&gt;
 23 12ef4 RTL2&lt;br /&gt;
 24 12f1c VOX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fenster in Neutrino==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/message&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' popup=text oder nmsg=text&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok&lt;br /&gt;
&lt;br /&gt;
'''Character encoding:''' [[UTF-8]], Leerzeichen werden mit ''%20'' dargestellt&lt;br /&gt;
&lt;br /&gt;
[[Neutrino]] öffnet ein Popup (popup) oder Message (nmsg) Window, in dem der Textteil des Parameter angezeigt wird. Ein Popup Fenster schließt sich nach einiger Zeit von selbst, während ein Message Window vom Benutzer geschlossen werden muss.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/message?popup=Hello%20World&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Popup Window auf dem Bildschirm &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/message?nmsg=Hello%20Welt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Message Window auf dem Bildschirm &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Timerd Interface==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/timer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:'''&amp;lt;br&amp;gt; &lt;br /&gt;
'''Rückgabe:'''&lt;br /&gt;
Zeigt die Liste aller Timer&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' [eventID] [eventType] [eventRepeat] [repcount] [announceTime] [alarmTime] [stopTime] [data]&lt;br /&gt;
&lt;br /&gt;
''eventID'' ist der Timerplatz. &amp;lt;br&amp;gt;&lt;br /&gt;
''eventType'' ist die Art des Timers, die kann sein:&lt;br /&gt;
&lt;br /&gt;
 1 = SHUTDOWN&lt;br /&gt;
 2 = NEXTPROGRAM&lt;br /&gt;
 3 = ZAPTO&lt;br /&gt;
 4 = STANDBY&lt;br /&gt;
 5 = RECORD&lt;br /&gt;
 6 = REMIND&lt;br /&gt;
 7 = SLEEPTIMER&lt;br /&gt;
 8 = EXEC_PLUGIN&lt;br /&gt;
&lt;br /&gt;
siehe dazu auch: [http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/*checkout*/tuxbox/apps/tuxbox/neutrino/daemons/timerd/doku.html?rev=1.3&amp;amp;content-type=text/plain [[Neutrino]] Timer Doku]&lt;br /&gt;
&lt;br /&gt;
''eventRepeat'' ist die Angabe der Timerwiederholung. Die kann sein:&lt;br /&gt;
&lt;br /&gt;
 0 = ONCE (Einmal)&lt;br /&gt;
 1 = DAILY (Täglich)&lt;br /&gt;
 2 = WEEKLY (Wöchentlich)&lt;br /&gt;
 3 = BIWEEKLY (Alle 2 Wochen)&lt;br /&gt;
 4 = FOURWEEKLY (Alle 4 Wochen)&lt;br /&gt;
 5 = MONTHLY (Monatlich)&lt;br /&gt;
 6 = BYEVENTDESCRIPTION (noch nicht implementiert)&lt;br /&gt;
&lt;br /&gt;
Es gibt auch noch eine Möglichkeit WEEKDAYS also auch Wochentage festzulegen, an denen die Aufnahme stattfinden soll. Dies wird über einen Bitschlüssel angegeben, der Bit 9-15 als die Wochentage ansieht. &amp;lt;br&amp;gt;&lt;br /&gt;
Das heißt:&lt;br /&gt;
&lt;br /&gt;
 0000000100000000 = 256    = Montag&lt;br /&gt;
 0000001000000000 = 512    = Dinstag&lt;br /&gt;
 0000010000000000 = 1024   = Mittwoch&lt;br /&gt;
 0000100000000000 = 2048   = Donerstag&lt;br /&gt;
 0001000000000000 = 4096   = Freitag&lt;br /&gt;
 0010000000000000 = 8192   = Samstag&lt;br /&gt;
 0100000000000000 = 16384  = Sontag&lt;br /&gt;
&lt;br /&gt;
Demzufolge ist Montag+ Mittwoch+ Samstag &lt;br /&gt;
&lt;br /&gt;
 0000000100000000 =  256&lt;br /&gt;
 0000010000000000 = 1024&lt;br /&gt;
 0010000000000000 = 8192&lt;br /&gt;
 ----------------   ----&lt;br /&gt;
 0010010100000000 = 9472&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: [http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/apps/tuxbox/neutrino/lib/timerdclient/timerdtypes.h?rev=1.10&amp;amp;content-type=text/vnd.viewcvs-markup timerdtypes.h]&lt;br /&gt;
&lt;br /&gt;
''repcount'' bestimmt die Anzahl der Timeraufrufe, nach der der Timer automatisch gelöscht wird. 0 bedeutet, dass es keine Beschränkung gibt. Bei eventRepeat=ONCE hat diese Einstellung keine Auswirkungen.&amp;lt;br&amp;gt; &lt;br /&gt;
''announceTime'' ist die Zeit, an der die Warnung vor dem Timer auf dem Bildschirm erscheint.&amp;lt;br&amp;gt;&lt;br /&gt;
''alarmTime'' ist die Zeit des Timer-Starts&amp;lt;br&amp;gt;&lt;br /&gt;
''stopTime'' ist die Stoppzeit für den Timer&amp;lt;br&amp;gt;&lt;br /&gt;
''data'' ist der Name des Senders.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/timer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1 1 1 4 1034309516 1034309576 1034284376 555089&lt;br /&gt;
&lt;br /&gt;
d.h. event 1, SHUTDOWN, DAILY, nach 4 Timerausführungen wird der Timer gelöscht, announcezeit, alarm/startzeit, stoppzeit, kanal/daten&lt;br /&gt;
''die zeiten sind time_t (Unix Zeitstempel)''&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' action,[id],&amp;lt;alarm|ad,amo,ay,ah,ami&amp;gt;,&amp;lt;stop|sd,smo,sy,sh,smi&amp;gt;,announce,type,rep,repcount,channel_id,msg,rs&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok / error&lt;br /&gt;
&lt;br /&gt;
''announce'', ''type'', ''rep'' und ''repcount'' analog zu oben.&lt;br /&gt;
&lt;br /&gt;
''action'' kann entweder new oder modify sein. Bei ''modify'' muss noch ein Parameter id angegeben werden, um festzulegen, welcher Timer modifiziert wird. &lt;br /&gt;
&lt;br /&gt;
Man kann entweder ''alarm'' und ''stop'' mit einer [[time_t]] Zeit verwenden oder die anderen Variablen mit den Daten füttern:&lt;br /&gt;
&lt;br /&gt;
 a/sd  = Tag&lt;br /&gt;
 a/smo = Monat&lt;br /&gt;
 a/sy  = Jahr&lt;br /&gt;
 a/sh  = Stunde&lt;br /&gt;
 a/smi = Minute&lt;br /&gt;
&lt;br /&gt;
''channel_id'' ist die Kennung des Senders (als Hexadezimalzahl ohne '0x'-Prefix).&amp;lt;br&amp;gt;&lt;br /&gt;
''msg'' ist die Message die bei REMIND gesendet wird&lt;br /&gt;
&lt;br /&gt;
Ist der Parameter &amp;quot;rs&amp;quot; auf &amp;quot;1&amp;quot; gesetzt, so wird bei Aufnahmetimern, die in [[Neutrino]] konfigurierte &amp;quot;Aufnahmestart/stop-Korrektur&amp;quot; berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
siehe dazu auch: [http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/apps/tuxbox/neutrino/daemons/nhttpd/webapi.cpp?rev=HEAD&amp;amp;content-type=text/vnd.viewcvs-markup webapi.cpp]&lt;br /&gt;
&lt;br /&gt;
'''Rückgabeformat:''' ok / error&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&amp;lt;nowiki&amp;gt;http://dbox/control/timer?action=new&amp;amp;alarm=1034309576&amp;amp;stop=1034284376&amp;amp;announce=1034309576&amp;amp;type=1&amp;amp;rep=1&amp;amp;channel_id=16dcb&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Shellscript ausführen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/cgi-bin/exec&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;http://dbox/control/exec&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' &amp;lt;Scriptname&amp;gt; (ohne .sh!)&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' &lt;br /&gt;
Führt das Shellscript aus und liefert die Ausgabe an den Client zurück. 404 Bei Nicht-Auffinden.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
buli.sh gibt einen RSS-Feed zurück, der vom Newsticker angezeigt wird. In newsticker.list muss dann der Aufruf folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/cgi-bin/exec?buli&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Shellscript muss im richtigen Verzeichnis liegen. Ansonsten 404. (siehe oben unter Custom Plugins)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==System-/Treiberfunktionen==&lt;br /&gt;
'''Handler:''' &amp;lt;nowiki&amp;gt;http://dbox/control/system&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getAViAExtIec&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' Status des Iec (optischer Ausgang)&lt;br /&gt;
&lt;br /&gt;
0 = Iec deaktiviert&amp;lt;br&amp;gt;&lt;br /&gt;
1 = Iec aktiviert&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?getAViAExtIec&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' setAViAExtIec=on&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok&lt;br /&gt;
&lt;br /&gt;
Aktiviert den Iec&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?setAViAExtIec=on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' setAViAExtIec=off&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok&lt;br /&gt;
&lt;br /&gt;
Deaktiviert den Iec&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?setAViAExtIec=off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getAViAExtPlayBack&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' Gibt zurück, in welchem Dekoder-Modus der Avia läuft&lt;br /&gt;
&lt;br /&gt;
0 = PES&amp;lt;br&amp;gt;&lt;br /&gt;
1 = SPTS&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?getAViAExtPlayBack&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getAViAExtPlayBack=pes&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok&lt;br /&gt;
&lt;br /&gt;
Aktiviert den DualPES-Modus&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?setAViAExtPlayBack=pes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Parameter:''' getAViAExtPlayBack=spts&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rückgabe:''' ok&lt;br /&gt;
&lt;br /&gt;
Aktiviert den SPTS-Modus&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://dbox/control/system?setAViAExtPlayBack=spts&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ok&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Development:README.3rdparty.en_(Oldmake)_obsolete&amp;diff=10930</id>
		<title>Dbox2:Development:README.3rdparty.en (Oldmake) obsolete</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Development:README.3rdparty.en_(Oldmake)_obsolete&amp;diff=10930"/>
		<updated>2008-08-11T15:28:19Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Verweise hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Deutsch|Development:README.3rdparty.de}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
==And this is how you add new tools to the cdk==&lt;br /&gt;
First of all start thinking if whatever you intend to add really is a useful&lt;br /&gt;
addition to the project. If you still think your idea is great you can start&lt;br /&gt;
integrating it.&lt;br /&gt;
&lt;br /&gt;
The audience of this document is neither developers wanting to add their own software&lt;br /&gt;
nor people who deeply integrated some 3rd party software into their projects.&lt;br /&gt;
&lt;br /&gt;
It is meant for people wanting to add someone's else's code in more or less its original&lt;br /&gt;
form. Please be very careful to check that the code's license is suitable for the project.&lt;br /&gt;
&lt;br /&gt;
Often you will need to make some small changes to the source code to make it build properly.&lt;br /&gt;
In that case you must NOT create a new archive but simply take the original version, &lt;br /&gt;
copy it, add your changes and create a diff between the two. &lt;br /&gt;
&lt;br /&gt;
You do this with the command:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;diff -Naur packet.orig packet &amp;gt; packet.diff&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The created patch goes to &amp;quot;$HOME/tuxbox-cvs/cdk/Patches&amp;quot;. Do not add any version information&lt;br /&gt;
to the filename.&lt;br /&gt;
&lt;br /&gt;
The next step is to make some additions to the following files:&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/Makefile.am&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/configure.ac&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-archive&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-make&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Let's start with rules-archive=&lt;br /&gt;
This file describes the packets' download source(s). Since most packets are hosted on public&lt;br /&gt;
servers we simply download them when needed. Both the http and ftp protocol is supported.&lt;br /&gt;
Format is one line per packet, first the name then URL(s), all separated by semicolons.&lt;br /&gt;
&lt;br /&gt;
 packetname;URL1[;URL2...;URLN]&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 paket-1.0.tar.gz;&amp;lt;nowiki&amp;gt;khttp://www.packethome.com/download&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Next we deal with rules-make=&lt;br /&gt;
This file describes the steps necessary to 'make' the packet. &lt;br /&gt;
&lt;br /&gt;
Again we have one line per packet with several entries separated by semicolons.&lt;br /&gt;
The entries are as follows:&lt;br /&gt;
&lt;br /&gt;
 identifier;version;directory;archive[:patch1...:patchN];rule1[;rule2...;ruleN]&lt;br /&gt;
&lt;br /&gt;
==identifier== &lt;br /&gt;
Must be a unique name. It will be used again in the files &lt;br /&gt;
rules-install, configure.ac and Makefile.am. It can be any name but &lt;br /&gt;
it's best to use part of the packet name to avoid namespace clashes.&lt;br /&gt;
&lt;br /&gt;
==version== &lt;br /&gt;
Versionnumber of the packet. Even though most packets have this as part&lt;br /&gt;
of their archive name you might find one that doesn't so it's provided as&lt;br /&gt;
an additional separate entry.&lt;br /&gt;
&lt;br /&gt;
==directory==&lt;br /&gt;
This is the name of the directory that results from unpacking the&lt;br /&gt;
archive. Even though most archives will contain just one directory&lt;br /&gt;
which will in turn contain all the necessary files and subdirectories&lt;br /&gt;
there might be some exceptions. In this case choose a suitable name here&lt;br /&gt;
and use &amp;quot;dirextract&amp;quot; as a rule (see below).&lt;br /&gt;
           &lt;br /&gt;
==archive==&lt;br /&gt;
The name of the packet archive itself. If there are additional files&lt;br /&gt;
necessary (diffs or additional archives) you add the names without path and&lt;br /&gt;
separate them by colons.&lt;br /&gt;
&lt;br /&gt;
==rules==&lt;br /&gt;
You state rules that need to be applied to the packet and its files&lt;br /&gt;
 extract    - extracts a packet&lt;br /&gt;
 dirextract - creates a directory and extracts the packet inside it&lt;br /&gt;
 patch      - applies a diff-file to patch the packet&lt;br /&gt;
&lt;br /&gt;
Take a look at rules-make for additional rules.&lt;br /&gt;
&lt;br /&gt;
example1 (just extract):&lt;br /&gt;
 packet;1.0;packet-1.0;packet-1.0.tar.gz;extract:packet-1.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
example2 (extract and apply patch):&lt;br /&gt;
 packet;1.0;packet-1.0;packet-1.0.tar.gz:packet.diff;extract:packet-1.0.tar.gz;patch:packet.diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=rules-install=&lt;br /&gt;
If everything related to the installation will be taken care of by Makefile.am &lt;br /&gt;
you can simply add just one line here containing the identifier.&lt;br /&gt;
&lt;br /&gt;
Else you might want to add an entry like this:&lt;br /&gt;
&lt;br /&gt;
 packet;make:install:DESTDIR=TARGET&lt;br /&gt;
&lt;br /&gt;
You can state multiple commands which have to be separated by semicolons.&lt;br /&gt;
The commands and their parameter(s) are separated by colons.&lt;br /&gt;
&lt;br /&gt;
DESTDIR=TARGET is used to inform 'make' about the path of the cdkroot.&lt;br /&gt;
But of course this is not valid for all packets, some might use different variable &lt;br /&gt;
names or you will need to add parameters like --prefix while running their &lt;br /&gt;
'configure'-scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=configure.ac=&lt;br /&gt;
Choose a suitable section here (take the existing entries as a guide)&lt;br /&gt;
and either add TUXBOX_RULES_MAKE(...) or TUXBOX_RULES_MAKE_EXDIR(...). Replace&lt;br /&gt;
the three dots by the unique identifier you chose in rules-make.&lt;br /&gt;
&lt;br /&gt;
TUXBOX_RULES_MAKE(packet)&lt;br /&gt;
&lt;br /&gt;
Creates variables from the information you gave in rules-install and rules-make.&lt;br /&gt;
These variables can be used later inside Makefile.am. The following variables &lt;br /&gt;
will be defined:&lt;br /&gt;
&lt;br /&gt;
 DEPENDS_packet - archive(s) and patch(es) necessary to build the packet&lt;br /&gt;
 PREPARE_packet - expands to commands for extracting and patching the packet&lt;br /&gt;
 DIR_packet     - name of the directory to which the archive has been unpacked to&lt;br /&gt;
 INSTALL_packet - expands to commands for installing the packet&lt;br /&gt;
 CLEANUP_packet - expands to commands responsible for removing the sourcecode and build files&lt;br /&gt;
                  no longer needed after building and installing the packet. Note that this&lt;br /&gt;
                  does NOT remove the downloaded archive.&lt;br /&gt;
&lt;br /&gt;
TUXBOX_RULES_MAKE_EXDIR(packet)&lt;br /&gt;
&lt;br /&gt;
same as above but the difference being that you use it for packets that do not get built&lt;br /&gt;
inside their sourcedirectory. Additionally the variable CONFIGURE_packet is defined which&lt;br /&gt;
expands to a command executing the configure-script of the packet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Makefile.am=&lt;br /&gt;
If you know your way around Makefile.am you should have no trouble. This file contains &lt;br /&gt;
commands and variables that are used to create the final Makefile when 'configure' &lt;br /&gt;
is run and serves as a kind of basis.&lt;br /&gt;
&lt;br /&gt;
If you create rules for 'make' that belong to a packet then add a dot in front of the &lt;br /&gt;
name. The last command used is &amp;quot;touch $@&amp;quot;. This command will create a file with the &lt;br /&gt;
name of the currently used rule which indicates that the rule was sucessfully executed.&lt;br /&gt;
&lt;br /&gt;
Example for a rule:&lt;br /&gt;
&lt;br /&gt;
 .paket: .bootstrap @DEPENDS_packet@&lt;br /&gt;
 	@PREPARE_packet@&lt;br /&gt;
 	cd @DIR_packet@ &amp;amp;&amp;amp; \&lt;br /&gt;
 		$(BUILDENV) \&lt;br /&gt;
 		./configure \&lt;br /&gt;
 			--build=$(build) \&lt;br /&gt;
 			--host=$(target) \&lt;br /&gt;
 			--prefix= &amp;amp;&amp;amp; \&lt;br /&gt;
 		$(MAKE) all &amp;amp;&amp;amp; \&lt;br /&gt;
 		@INSTALL_packet@&lt;br /&gt;
 	@CLEANUP_packet@&lt;br /&gt;
 	touch $@&lt;br /&gt;
&lt;br /&gt;
$(BUILDENV) is a macro that expands to widely used environmental variables like&lt;br /&gt;
CC, CFLAGS etc.&lt;br /&gt;
Then and now you might encounter a packet that needs additional or different variables.&lt;br /&gt;
You can add these below $(BUILDENV) in a rule. Take a look at Makefile.am for examples.&lt;br /&gt;
&lt;br /&gt;
Furthermore there are some rules in Makefile.am which group the single packet rules&lt;br /&gt;
to useful group-rules (for exmaple &amp;quot;libs&amp;quot;). These rules might be further grouped until &lt;br /&gt;
finally there is an &amp;quot;all&amp;quot;-rule. &lt;br /&gt;
&lt;br /&gt;
Take a look at the group-rules and think where your newly added rule might fit best.&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
devel = .gdb .strace .packet&lt;br /&gt;
&lt;br /&gt;
At the end of Makefile.am you will find a section that deals with cleaning up the &lt;br /&gt;
environment in case you want to start from anew. You need to add your packet's rulename&lt;br /&gt;
here to remove the file that has been created by 'touch' when the packet was built and&lt;br /&gt;
which would prevent the packet from being rebuilt.&lt;br /&gt;
&lt;br /&gt;
==see also==&lt;br /&gt;
siehe auch&lt;br /&gt;
*[[Development:Newmake.3rdparty|Create 3rdparty Tools with Newmake de]]&lt;br /&gt;
*[[Development:Newmake.3rdparty.en|Create 3rdparty Tools with Newmake en]]&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Development:README.3rdparty.de_(Oldmake)_veraltet&amp;diff=10929</id>
		<title>Dbox2:Development:README.3rdparty.de (Oldmake) veraltet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2:Development:README.3rdparty.de_(Oldmake)_veraltet&amp;diff=10929"/>
		<updated>2008-08-11T15:25:17Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Verweise hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{English|Development:README.3rdparty.en}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
==Und so baut man neue Tools in das cdk ein==&lt;br /&gt;
Zunächst macht man sich Gedanken darüber, ob das, was man einbauen will, Sinn&lt;br /&gt;
macht. Wenn man meint, die Idee wäre gut, dann kann man anfangen sie zu&lt;br /&gt;
integrieren.&lt;br /&gt;
&lt;br /&gt;
Handelt es sich hierbei um eigene Software oder um bis zur Unkenntlichkeit&lt;br /&gt;
veränderte Software, so ist das hier nicht das passende Dokument.&lt;br /&gt;
Handelt es sich hingegen um veränderte Software anderer Leute, so nehme man den&lt;br /&gt;
unveränderten Quellcode und erstelle dazu ein passendes Patch. Das geht mit&lt;br /&gt;
dem Kommando &lt;br /&gt;
 &amp;quot;diff -Naur paket.orig paket &amp;gt; paket.diff&amp;quot;&lt;br /&gt;
Der erstellte Patch gehört in das Verzeichnis &lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/Patches. &lt;br /&gt;
Es werden keine Versionsinformationen an den Dateinamen angehängt.&lt;br /&gt;
&lt;br /&gt;
Was nun noch fehlt sind ein paar Eintraege in folgenden Dateien:&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/Makefile.am&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/configure.ac&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-archive&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-make&lt;br /&gt;
 $HOME/tuxbox-cvs/cdk/rules-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Beginnen wir mit rules-archive=&lt;br /&gt;
Hier gehört genau eine Zeile pro Paket hinein, und zwar der Name des Archivs,&lt;br /&gt;
sowie eine oder mehrere http- oder ftp-Adressen, von denen das Archiv direkt&lt;br /&gt;
geladen werden kann. Diese werden mit Semikolon voneinander getrennt.&lt;br /&gt;
&lt;br /&gt;
z.B.&lt;br /&gt;
paket-1.0.tar.gz;&amp;lt;nowiki&amp;gt;http://www.pakethome.de/download&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Als nächstes zu rules-make=&lt;br /&gt;
Wieder braucht man eine Zeile pro Paket und wieder werden die Einträge mit&lt;br /&gt;
Semikolon getrennt. Diesmal sind es allerdings ein paar mehr und zwar die&lt;br /&gt;
Folgenden:&lt;br /&gt;
&lt;br /&gt;
 - Bezeichner fuer die Software&lt;br /&gt;
 - Versionsnummer der Software&lt;br /&gt;
 - Verzeichnisname nach dem entpacken der Software&lt;br /&gt;
 - Archivname und Name eventueller Patches (durch Doppelpunkt getrennt)&lt;br /&gt;
 - Eine oder mehrere Regeln zum Bearbeiten des Archivs und vorhandender Patches&lt;br /&gt;
&lt;br /&gt;
Der Bezeichner wird wieder in rules-install, configure.ac und Makefile.am zum&lt;br /&gt;
Einsatz kommen. Er ist prinzipiell frei wählbar, sollte aber dennoch möglichst&lt;br /&gt;
viel mit dem Paketnamen gemeinsam haben.&lt;br /&gt;
&lt;br /&gt;
Was mit Versionsnummer gemeint ist sollte jedem klar sein.&lt;br /&gt;
&lt;br /&gt;
Der darauf folgende Verzeichnisname muss dem Pfad entsprechen, der in dem zu&lt;br /&gt;
entpackenden Archiv gespeichert ist. Ist kein Pfad gespeichert, so muss man&lt;br /&gt;
einen Pfad möglichst sinnvoll wählen und später bei den Regeln anstatt&lt;br /&gt;
extract dirextract verwenden.&lt;br /&gt;
&lt;br /&gt;
Archivname sollte auch klar sein. Falls zusätzliche Dateien existieren, die&lt;br /&gt;
für das Paket benutzt werden, seien es diffs oder zusätzliche Archive, so&lt;br /&gt;
gibt man deren Namen ohne Verzeichnis und durch Doppelpunkt getrennt an.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt traegt man die Regeln ein, nach denen mit dem Archiv und seinen&lt;br /&gt;
Patches verfahren werden soll:&lt;br /&gt;
 extract    - extrahiert ein Paket&lt;br /&gt;
 dirextract - extrahiert ein Paket in das angegebene Verzeichnis&lt;br /&gt;
 patch      - patcht eine diff Datei in ein extrahiertes Paket&lt;br /&gt;
&lt;br /&gt;
Für weitere Regeln kann man einen Blick in die Datei rules-make werfen.&lt;br /&gt;
&lt;br /&gt;
z.B. sieht das dann so aus;&lt;br /&gt;
 paket;1.0;paket-1.0;paket-1.0.tar.gz;extract:paket-1.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
oder falls ein patch vorhanden ist:&lt;br /&gt;
 paket;1.0;paket-1.0;paket-1.0.tar.gz:paket.diff;extract:paket-1.0.tar.gz;patch:paket.diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=rules-install ist wieder kürzer=&lt;br /&gt;
Falls die Installation von Hand im Makefile.am geregelt wird, reicht es, hier&lt;br /&gt;
den Bezeichner in eine eigene Zeile zu schreiben. Ansonsten nimmt man in der&lt;br /&gt;
Regel folgenden Eintrag:&lt;br /&gt;
&lt;br /&gt;
 paket;make:install:DESTDIR=TARGET&lt;br /&gt;
&lt;br /&gt;
Es können mehrere Befehle angegeben werden, diese sind per Semikolon von&lt;br /&gt;
einander zu trennen. Befehle und zugehörige Parameter werden durch Doppelpunkt&lt;br /&gt;
getrennt.&lt;br /&gt;
DESTDIR=TARGET wird benutzt, um make den Pfad des cdkroots mitzuteilen. Einige Pakete&lt;br /&gt;
benutzen davon abweichende Variablennamen oder können ausschließlich ueber --prefix&lt;br /&gt;
zur configure-zeit den Zielpfad mitgeteilt bekommen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=configure.ac=&lt;br /&gt;
Hier sucht man sich die passende Sektion in der Datei aus (an den vorhandenen&lt;br /&gt;
Einträgen orientieren) und fügt dort entweder TUXBOX_RULES_MAKE(...) oder&lt;br /&gt;
TUXBOX_RULES_MAKE_EXDIR(...) ein. Anstatt der Punkte benutzt man den in&lt;br /&gt;
rules-make gewählten Bezeichner.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
TUXBOX_RULES_MAKE(paket)&lt;br /&gt;
&lt;br /&gt;
erstellt Variablen, aus den Daten in rules-install, rules-make und&lt;br /&gt;
rules-install, die in Makefile.am benutzt werden koennen. Es werden die&lt;br /&gt;
folgenden Variablen definiert:&lt;br /&gt;
 DEPENDS_paket - benötigte Archive und Patches&lt;br /&gt;
 PREPARE_paket - Kommandos zum extrahieren und patchen des Paketes&lt;br /&gt;
 DIR_paket     - Name des Verzeichnisses, in das entpackt wurde&lt;br /&gt;
 INSTALL_paket - Installationsbefehle&lt;br /&gt;
 CLEANUP_paket - Befehle zum Entfernen von Dateien nach Bau und Installation&lt;br /&gt;
&lt;br /&gt;
TUXBOX_RULES_MAKE_EXDIR(paket)&lt;br /&gt;
&lt;br /&gt;
tut prinzipiell dasselbe, hat jedoch den Unterschied, dass es für Pakete&lt;br /&gt;
benutzt wird, bei denen das Bauen nicht im Quellverzeichnis selbst passieren&lt;br /&gt;
soll. Zusätzlich wird die folgende Variable definiert:&lt;br /&gt;
 CONFIGURE_paket - Aufruf des Konfiurationsskriptes des Paketes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Makefile.am=&lt;br /&gt;
Wer Makefiles kennt, der hat es leicht. Diese Datei ist sozusagen der Rohbau&lt;br /&gt;
des Makefiles und unterscheidet sich nur durch die Variablen, die durch den&lt;br /&gt;
Aufruf von configure ersetzt und in ein Makefile geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Regeln, die zu einem Paket gehören, werden wie der oben gewählte Bezeichner&lt;br /&gt;
mit einem Punkt vorangestellt genannt.&lt;br /&gt;
&lt;br /&gt;
Am Ende jeder Regel steht '''&amp;quot;touch $@&amp;quot;'''. Dieser Befehl erstellt eine Datei mit&lt;br /&gt;
dem Namen der aktuellen Regel. Dadurch wird gekennzeichnet, dass eine Regel&lt;br /&gt;
vollständig durchlaufen wurde.&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Regel:&lt;br /&gt;
&lt;br /&gt;
 .paket: .bootstrap @DEPENDS_packet@&lt;br /&gt;
 	@PREPARE_packet@&lt;br /&gt;
 	cd @DIR_packet@ &amp;amp;&amp;amp; \&lt;br /&gt;
 		$(BUILDENV) \&lt;br /&gt;
 		./configure \&lt;br /&gt;
 			--build=$(build) \&lt;br /&gt;
 			--host=$(target) \&lt;br /&gt;
 			--prefix= &amp;amp;&amp;amp; \&lt;br /&gt;
 		$(MAKE) all &amp;amp;&amp;amp; \&lt;br /&gt;
 		@INSTALL_packet@&lt;br /&gt;
 	@CLEANUP_packet@&lt;br /&gt;
 	touch $@&lt;br /&gt;
&lt;br /&gt;
$(BUILDENV) ist ein Makro, das eine Menge an oft gebrauchten Umgebungsvariablen&lt;br /&gt;
enthält, wie z.b. CC, CFLAGS usw.&lt;br /&gt;
Ab und zu kann es vorkommen, dass ein Paket andere oder zusätzliche Variablen&lt;br /&gt;
braucht. Diese können unterhalb von $(BUILDENV) angegeben werden. Beispiele&lt;br /&gt;
dazu findet man im Makefile.am.&lt;br /&gt;
&lt;br /&gt;
Weiterhin gibt es in Makefile.am Regeln, die verschiedene Regeln gruppieren&lt;br /&gt;
und letztendlich zu einer globalen Regel (&amp;quot;all&amp;quot;) zusammengefasst werden.&lt;br /&gt;
Dort, wo das hinzugefügte Paket kategorisch am besten einzuordnen ist, fügt&lt;br /&gt;
man den Eintrag hinzu, z.B.&lt;br /&gt;
&lt;br /&gt;
devel = .gdb .strace .paket&lt;br /&gt;
&lt;br /&gt;
Am Ende der Datei ist die Regel zum Säubern der Umgebung zu finden. Auch&lt;br /&gt;
hier muss man an geeigneter Stelle den Regelnamen aufführen, so dass die&lt;br /&gt;
Markierung, die nach erfolgreichem Bauen angelegt wurde, entfernt werden&lt;br /&gt;
kann.&lt;br /&gt;
&lt;br /&gt;
==Verweise==&lt;br /&gt;
siehe auch&lt;br /&gt;
*[[Development:Newmake.3rdparty|Tools mit Newmake einbauen de]]&lt;br /&gt;
*[[Development:Newmake.3rdparty.en|Tools mit Newmake einbauen en]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10876</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10876"/>
		<updated>2008-07-30T15:41:06Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Auschecken präzisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet es unter anderem auch den Vorteil, dass es auch ohne ohne großes Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt es inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). Es behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde es für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war es, das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. Es wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist es, dem Leser grundlegendes Know-How zu vermitteln. Es ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist es? =&lt;br /&gt;
Die Antwort könnte lauten: ''Es ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte es kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
Es gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist es aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, es dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht es mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist es in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird es fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da es höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt es auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukunft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Da sich ''Newmake'' (noch) nicht im [[HEAD]] des [[CVS]] befindet, sondern als getrennter [[Branch]] bzw. Zweig im [[CVS]] vorliegt, checkt diese Anweisung nun die benötigen Newmake-Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt. &lt;br /&gt;
Lokal werden die HEAD-Files allerdings auch als Newmake markiert, was aber für anonyme Nutzer nicht von Belang sein dürfte. Entwickler müssen dies aber beachten, da es beispielsweise bei Commits zu unerwünschten Ergebnissen kommen könnte.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt es zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist es ratsam, diese beiden zu löschen, daher bietet es sich an, dies gleich im Anschluß an den Checkout mit einer entsprechenden Anweisung zu erledigen''.&lt;br /&gt;
&lt;br /&gt;
 rm -f [[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
 rm -f [[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist es ratsam, vorerst keine Veränderungen vorzunehmen. Wenn Probleme auftreten, ist es viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er es machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war es notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist es nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. Es stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden es logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
= Kernel 2.6.x =&lt;br /&gt;
&lt;br /&gt;
{{Bulid_kernel_26}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] mit den [[Installation:Neutrino|Expertenfunktionen]] zu benutzen, oder der ''dboxflasher'' zu verwenden. Der ''dboxflasher'' wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt.&amp;lt;br&amp;gt; &lt;br /&gt;
Siehe auch [[Installation]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. Es ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird es, falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann es auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. Es gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
Es gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. Es säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. Es gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt es verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls es wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
Es sind noch weitere Benutzeranpassungen möglich. Dafür ist es aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist es möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== für andere Targets ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden (siehe auch [[Newmake#.2F.version_anpassen|Anpassung .version-File]]):&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beispiele für Customization ====&lt;br /&gt;
Das Customizationscripting soll hier durch einige Beispiele noch mehr veranschaulicht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
''Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, es sei denn es ist ungefährlich und Ihr versteht, wie sie funktionieren. Es ist grundlegende Script-Erfahrung erfordelich.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Lirc Komponenten einbauen =====&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== procps-Varianten von ps und top einbauen =====&lt;br /&gt;
Im Image werden die procps-Varianten von [[WP:Ps_%28Unix%29|ps]] und [[WP:Unix-Kommando#Prozessmanagement|top]] anstelle der [[WP:busybox|Busybox]]-Version gewünscht.&lt;br /&gt;
&lt;br /&gt;
In root-local.sh&lt;br /&gt;
&lt;br /&gt;
  make procps&lt;br /&gt;
&lt;br /&gt;
hinzufügen.&lt;br /&gt;
&lt;br /&gt;
In root-neutrino-local.sh&lt;br /&gt;
&lt;br /&gt;
  for i in top ps; do&lt;br /&gt;
    cp -va $flashprefix/../cdkroot/bin/$i $flashprefix/root-neutrino/bin/&lt;br /&gt;
    rm -v $flashprefix/root/bin/$i&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Games und Languages nuker ===== &lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== /.version anpassen =====&lt;br /&gt;
&lt;br /&gt;
{{edit_version_file}}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Eine eigene ''/.version''-File herzustellen (angezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und [[cdkVcInfo]] beim Booten) ist daher sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== mkversion ===== &lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Archivierung der [[Images|Images]] =====&lt;br /&gt;
Es ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. Es benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
Es ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird es auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist es durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
Es gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. Es wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann es die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man es''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;es funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß es nicht. Wir [[Wissen|wissen]] es nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, es ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox es zurückweisen wird, weil es einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). Es ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10814</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10814"/>
		<updated>2008-07-01T15:21:53Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet es unter anderem auch den Vorteil, dass es auch ohne ohne großes Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt es inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). Es behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde es für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war es, das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. Es wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist es, dem Leser grundlegendes Know-How zu vermitteln. Es ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist es? =&lt;br /&gt;
Die Antwort könnte lauten: ''Es ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte es kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
Es gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist es aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, es dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht es mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist es in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird es fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da es höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt es auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukünft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl checkt die Newmake Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt es zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist es ratsam, diese beiden zu löschen''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist es ratsam, vorerst keine Patches anzuwenden. Wenn Probleme auftreten, ist es viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er es machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war es notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist es nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. Es stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden es logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] mit den [[Installation:Neutrino|Expertenfunktionen]] zu benutzen, oder der ''dboxflasher'' zu verwenden. Der ''dboxflasher'' wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt.&amp;lt;br&amp;gt; &lt;br /&gt;
Siehe auch [[Installation]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. Es ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird es, falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann es auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. Es gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
Es gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. Es säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. Es gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt es verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls es wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
Es sind noch weitere Benutzeranpassungen möglich. Dafür ist es aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist es möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Andere [[Customization|Customization]] Scripte ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden:&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== weitere Beispiele für Custiomization ====&lt;br /&gt;
Das Custiomizationscripting soll durch das folgende Beispiel noch mehr veranschaulicht werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
'''Bitte beachten:'''&lt;br /&gt;
Diese Scripte sollen als Beispiele dienen und können vermutlich nicht ohne Anpassung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
Es ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird es auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist es durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
Es gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. Es wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann es die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man es''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;es funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß es nicht. Wir [[Wissen|wissen]] es nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, es ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox es zurückweisen wird, weil es einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). Es ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Anhang=&lt;br /&gt;
==Einige nützliche [[Customization|Customization]] Script Snippets==&lt;br /&gt;
In diesem Anhang werden einige nützliche [[Customization|Customization]] Scripte gezeigt. Zwei Scripte sind bereits oben gezeigt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, es sei denn es ist ungefährlich und Ihr versteht, wie sie funktionieren. Es ist grundlegende Script-Erfahrung erfordelich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Games und Languages nuker===&lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /.version anpassen ===&lt;br /&gt;
Euere eigene ''/.version''-File herzustellen (anggezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und cdkVcInfo beim Booten) ist sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mkversion ===&lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Archivierung der [[Images|Images]] ===&lt;br /&gt;
Es ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. Es benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10813</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10813"/>
		<updated>2008-07-01T15:20:23Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet es unter anderem auch den Vorteil, dass es auch ohne ohne großes Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt es inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). Es behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde es für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war es, das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. Es wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist es, dem Leser grundlegendes Know-How zu vermitteln. Es ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist es? =&lt;br /&gt;
Die Antwort könnte lauten: ''Es ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte es kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
Es gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist es aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, es dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht es mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist es in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird es fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da es höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt es auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukünft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl checkt die Newmake Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt es zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist es ratsam, diese beiden zu löschen''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist es ratsam, vorerst keine Patches anzuwenden. Wenn Probleme auftreten, ist es viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er es machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war es notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist es nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. Es stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden es logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] mit den [[Installation:Neutrino|Expertenfunktionen]] zu benutzen, oder den ''dboxflasher'' zu verwenden. Der dboxflasher wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt.&amp;lt;br&amp;gt; &lt;br /&gt;
Siehe auch [[Installation]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. Es ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird es, falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann es auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. Es gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
Es gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. Es säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. Es gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt es verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls es wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
Es sind noch weitere Benutzeranpassungen möglich. Dafür ist es aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist es möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Andere [[Customization|Customization]] Scripte ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden:&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== weitere Beispiele für Custiomization ====&lt;br /&gt;
Das Custiomizationscripting soll durch das folgende Beispiel noch mehr veranschaulicht werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
'''Bitte beachten:'''&lt;br /&gt;
Diese Scripte sollen als Beispiele dienen und können vermutlich nicht ohne Anpassung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
Es ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird es auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist es durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
Es gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. Es wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann es die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man es''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;es funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß es nicht. Wir [[Wissen|wissen]] es nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, es ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox es zurückweisen wird, weil es einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). Es ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Anhang=&lt;br /&gt;
==Einige nützliche [[Customization|Customization]] Script Snippets==&lt;br /&gt;
In diesem Anhang werden einige nützliche [[Customization|Customization]] Scripte gezeigt. Zwei Scripte sind bereits oben gezeigt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, es sei denn es ist ungefährlich und Ihr versteht, wie sie funktionieren. Es ist grundlegende Script-Erfahrung erfordelich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Games und Languages nuker===&lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /.version anpassen ===&lt;br /&gt;
Euere eigene ''/.version''-File herzustellen (anggezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und cdkVcInfo beim Booten) ist sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mkversion ===&lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Archivierung der [[Images|Images]] ===&lt;br /&gt;
Es ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. Es benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10812</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10812"/>
		<updated>2008-07-01T15:18:39Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Imageflashen direkt verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet es unter anderem auch den Vorteil, dass es auch ohne ohne großes Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt es inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). Es behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde es für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war es, das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. Es wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist es, dem Leser grundlegendes Know-How zu vermitteln. Es ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist es? =&lt;br /&gt;
Die Antwort könnte lauten: ''Es ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte es kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
Es gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist es aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, es dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht es mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist es in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird es fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da es höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt es auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukünft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl checkt die Newmake Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt es zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist es ratsam, diese beiden zu löschen''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist es ratsam, vorerst keine Patches anzuwenden. Wenn Probleme auftreten, ist es viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er es machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war es notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist es nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. Es stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden es logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] mit den [[Installation:Neutrino|Expertenfunktionen]] zu benutzen, oder der ''dboxflasher'' zu verwenden. Der dboxflasher wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt. Andere Möglichkeiten des Flashens werden [[Installation|hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. Es ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird es, falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann es auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. Es gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
Es gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. Es säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. Es gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt es verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls es wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
Es sind noch weitere Benutzeranpassungen möglich. Dafür ist es aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist es möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Andere [[Customization|Customization]] Scripte ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden:&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== weitere Beispiele für Custiomization ====&lt;br /&gt;
Das Custiomizationscripting soll durch das folgende Beispiel noch mehr veranschaulicht werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
'''Bitte beachten:'''&lt;br /&gt;
Diese Scripte sollen als Beispiele dienen und können vermutlich nicht ohne Anpassung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
Es ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird es auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist es durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
Es gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. Es wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann es die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man es''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;es funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß es nicht. Wir [[Wissen|wissen]] es nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, es ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox es zurückweisen wird, weil es einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). Es ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Anhang=&lt;br /&gt;
==Einige nützliche [[Customization|Customization]] Script Snippets==&lt;br /&gt;
In diesem Anhang werden einige nützliche [[Customization|Customization]] Scripte gezeigt. Zwei Scripte sind bereits oben gezeigt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, es sei denn es ist ungefährlich und Ihr versteht, wie sie funktionieren. Es ist grundlegende Script-Erfahrung erfordelich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Games und Languages nuker===&lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /.version anpassen ===&lt;br /&gt;
Euere eigene ''/.version''-File herzustellen (anggezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und cdkVcInfo beim Booten) ist sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mkversion ===&lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Archivierung der [[Images|Images]] ===&lt;br /&gt;
Es ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. Es benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Sectionsd&amp;diff=10810</id>
		<title>Sectionsd</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Sectionsd&amp;diff=10810"/>
		<updated>2008-06-30T19:26:16Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: Steuerkommandos eingebaut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:DBox2 Software]]&lt;br /&gt;
 __TOC__&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Der ''Sections-[[Daemon]]'' ist unter [[Neutrino]] für das Sammeln, Aufbereiten und zur Verfügung stellen der [[EPG]]-Daten zuständig.&lt;br /&gt;
&lt;br /&gt;
Er gilt als eine der Schwachstellen von [[Neutrino]], da diverse Instabilitäten und Fehlverhalten von ihm bekannt sind.&lt;br /&gt;
&lt;br /&gt;
=Benutzung über die Kommandozeile=&lt;br /&gt;
Neben Neutrinointernen Steuerbefehlen, die direkt im Quellcode von [[Neutrino]] verbaut sind, von denen man im Regelfall nur aus dem [[Bootlog]] einiges zu sehen bekommt, kann der ''Sectionsd'' auch über einige Kommandos von Hand gesteuert werden. Nützlich können diese Befehle  z.B. zum erstellen von [[Scripts]] oder zur Fehlersuche mittels [[Bootlog]] sein. (siehe auch [[Neutrino:Customizing#Ereignisse_abfangen|Customizing]])&lt;br /&gt;
&lt;br /&gt;
Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
Aufrufen mit&lt;br /&gt;
 /var # sectionsdcontrol&lt;br /&gt;
 usage:  sectionsdcontrol --pause         stop sectionsd&lt;br /&gt;
         sectionsdcontrol --nopause       restart sectionsd&lt;br /&gt;
         sectionsdcontrol --state         get sectionsd runstate&lt;br /&gt;
         sectionsdcontrol --wepg &amp;lt;epgdir&amp;gt; write epgfiles to dir&lt;br /&gt;
         sectionsdcontrol --repg &amp;lt;epgdir&amp;gt; read epgfiles from dir&lt;br /&gt;
         sectionsdcontrol --freemem       unloads all events&lt;br /&gt;
         sectionsdcontrol --restart       restart sectionsd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{MissingText}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10807</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10807"/>
		<updated>2008-06-26T08:17:15Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet [[ES|es]] unter anderem auch den Vorteil, dass [[ES|es]] auch ohne ohne groß[[ES|es]] Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt [[ES|es]] inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). [[ES|Es]] behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde [[ES|es]] für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war [[ES|es]], das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. [[ES|Es]] wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist [[ES|es]], dem Leser grundlegendes Know-How zu vermitteln. [[ES|Es]] ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist [[ES|es]]? =&lt;br /&gt;
Die Antwort könnte lauten: ''[[ES|Es]] ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte [[ES|es]] kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
[[ES|Es]] gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist [[ES|es]] aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, [[ES|es]] dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht [[ES|es]] mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist [[ES|es]] in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird [[ES|es]] fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da [[ES|es]] höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt [[ES|es]] auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukünft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl checkt die Newmake Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt [[ES|es]] zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist [[ES|es]] ratsam, diese beiden zu löschen''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist [[ES|es]] ratsam, vorerst keine Patches anzuwenden. Wenn Probleme auftreten, ist [[ES|es]] viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er [[ES|es]] machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ES|Es]] gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war [[ES|es]] notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist [[ES|es]] nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. [[ES|Es]] stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden [[ES|es]] logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] (Expertenfunktionen) zu benutzen, oder der ''dboxflasher'' zu verwenden. Der dboxflasher wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt. Andere Möglichkeiten des Flashens werden [[Installation|hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. [[ES|Es]] ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird [[ES|es]], falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ES|Es]] kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann [[ES|es]] auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. [[ES|Es]] gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
[[ES|Es]] gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. [[ES|Es]] säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. [[ES|Es]] gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt [[ES|es]] verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls [[ES|es]] wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
[[ES|Es]] sind noch weitere Benutzeranpassungen möglich. Dafür ist [[ES|es]] aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist [[ES|es]] möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren der Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Andere [[Customization|Customization]] Scripte ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden:&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== weitere Beispiele für Custiomization ====&lt;br /&gt;
Das Custiomizationscripting soll durch das folgende Beispiel noch mehr veranschaulicht werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
'''Bitte beachten:'''&lt;br /&gt;
Diese Scripte sollen als Beispiele dienen und können vermutlich nicht ohne Anpassung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
[[ES|Es]] ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird [[ES|es]] auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist [[ES|es]] durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
[[ES|Es]] gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. [[ES|Es]] wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann [[ES|es]] die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man [[ES|es]]''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;[[ES|es]] funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß [[ES|es]] nicht. Wir [[Wissen|wissen]] [[ES|es]] nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, [[ES|es]] ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox [[ES|es]] zurückweisen wird, weil [[ES|es]] einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). [[ES|Es]] ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Anhang=&lt;br /&gt;
==Einige nützliche [[Customization|Customization]] Script Snippets==&lt;br /&gt;
In diesem Anhang werden einige nützliche [[Customization|Customization]] Scripte gezeigt. Zwei Scripte sind bereits oben gezeigt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, [[ES|es]] sei denn [[ES|es]] ist ungefährlich und Ihr versteht, wie sie funktionieren. [[ES|Es]] ist grundlegende Script-Erfahrung erfordelich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Games und Languages nuker===&lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /.version anpassen ===&lt;br /&gt;
Euere eigene ''/.version''-File herzustellen (anggezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und cdkVcInfo beim Booten) ist sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mkversion ===&lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Archivierung der [[Images|Images]] ===&lt;br /&gt;
[[ES|Es]] ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. [[ES|Es]] benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
	<entry>
		<id>https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10806</id>
		<title>Dbox2 Entwicklungsumgebung</title>
		<link rel="alternate" type="text/html" href="https://wiki.tuxbox-neutrino.org/w/index.php?title=Dbox2_Entwicklungsumgebung&amp;diff=10806"/>
		<updated>2008-06-26T05:39:21Z</updated>

		<summary type="html">&lt;p&gt;Dixidix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Register]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:CDK]]&lt;br /&gt;
{{Development_sidebar}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Review}}&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Newmake ist eine Überarbeitung des alten &amp;quot;[[Make|make]]&amp;quot; Prozesses, inzwischen auch als [[Image erstellen|Oldmake]] bezeichnet, und wurde durch Barf ins Leben gerufen.&lt;br /&gt;
Neben einer deutlich strukturierteren Basis, bietet [[ES|es]] unter anderem auch den Vorteil, dass [[ES|es]] auch ohne ohne groß[[ES|es]] Verständnis für den Buildprozess gelingen kann, [[Images|Flashimages]] und [[yadd|YADDs]] unter [[Linux|Linux]] zu erstellen.&lt;br /&gt;
Basierend auf Newmake gibt [[ES|es]] inzwischen auch eine auf Scripts basierende Quasi-Frontendlösung, mit der sich [[Images|Flashimages]] oder [[yadd|YADDs]] benutzerdefiniert erstellen lassen, das sogenannte [[yBuild]].&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert zum größtem Teil auf die deutsche Version von [http://bengt-martensson.de/dbox2/ Barfs Newmake-Dokumentation], die er uns freundlicheweise zur Verfügung  gestellt hat.  &lt;br /&gt;
Eine detaillierte Beschreibung (auch der [[Make|make]] targets) unter anderem auch in englischer Sprache befindet sich auf [http://bengt-martensson.de/dbox2/ Barf's Homepage].&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Dieser Artikel behandelt Newmake aus Sicht des Benutzers (nicht Entwickler). [[ES|Es]] behandelt die [[Image]]- u. [[yadd|YADD]]-Herstellung sowie einfache Beipiele für Benutzeranpassungen (&amp;quot;[[Customization]]&amp;quot;). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zur Geschichte==&lt;br /&gt;
Vor einigen Jahren war die Imageherstellung für die [[Tuxbox|Tuxbox]] so etwas wie [[Wikipedia:Schwarze Kunst|&amp;quot;Schwarze Kunst&amp;quot;]].&lt;br /&gt;
Die Makefile-Unterstützung war, insbesondere für andere [[Images]] als [[cramfs]]-[[Images]], ziehmlich lückenhaft. Die [[CVS]] Werkzeuge waren schlecht, oder unvollständig. Noch schlimmer, einige Teile wurden absichtlich geheim gehalten. Vorallem das Werkzeug, jetzt als [[mkflfs]] bekannt, welches inzwischen aber im [[CVS|CVS]]-Verzeichnis ''.../hostapps/[[Mkflfs|mkflfs]]'' zu finden ist, wurde zurückgehalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laut eines Forumsbeitrags aus dieser Zeit, waren die meisten Entwickler nicht in der Lage, eigene [[Images]] herzustellen. Die &amp;quot;Gilde der Imagehersteller&amp;quot; wurde geboren. Aus dieser Zeit dürften die &amp;quot;[[AlexW-Images]]&amp;quot; ein Begriff sein.&lt;br /&gt;
Hauptsächlich bestanden diese aus reinen [[CVS|CVS]]-Sources mit einigen mehr-oder-weniger geheim gehaltenen &amp;quot;Fixes&amp;quot;, (vermutlich) notwendig für das Herstellen eines funktionierenden [[Images]] aus dem [[CVS|CVS]]-Quellcode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im August 2003, wurde [[ES|es]] für das [[DBox2 Software Projekt|GNU DBox2 Software-Projekt]] in zunehmendem Maße peinlich, [[mkflfs]] geheim zu halten und der Quellcode für [[mkflfs]] wurde ins [[CVS]] eingecheckt. Auch die Funktionalität der [[Makefiles]] wurde stufenweise verbessert. Noch war viel zu wünschen übrig: Funktionalität, Pflegbarkeit, gesundes [[Software|Software]]-Design... &amp;lt;br&amp;gt;&lt;br /&gt;
Ein [[Image]] aus reinen [[CVS|CVS]]-Dateien zu bauen, war nicht wirklich möglich.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2004 wurde das [[YADI]] (&amp;quot;'''Y'''et '''A'''nother '''D'''Box '''I'''mage&amp;quot;) Projekt geboren. &amp;lt;br&amp;gt;&lt;br /&gt;
Sein Ziel war [[ES|es]], das &amp;quot;Imagebauen&amp;quot; zu automatisieren und zu vereinfachen. Zu diesem Zweck wurden eine Anzahl von [[Wikipedia:Skripte|Scripten]] und [[Wikipedia:Patches|Patches]] gesammelt und/oder geschrieben. Zusätzlich wurden flashfertige [[Images]] zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[YADI]] war ein grosser Erfolg. Das Ziel wurde erreicht. [[Images]] wurden zur Verfügung gestellt, die (fast) vollständig auf freier [[Software|Software]] basierten, sowohl inhaltlich als auch bezüglich der benötigten Werkzeuge, in einer Weise, die für den Benutzer durchaus nachvollziehbar war.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit dem [[YADI]]-[[Skript|Skript]] war das automatische Imagebuilden zwar möglich, jedoch statt grundlegende Schwächen im [[CDK|CDK]]-Imagebau-Prozeß zu beseitigen, stellte man [[Skripte]] zum Imagebauen zur Verfügung. [[ES|Es]] wurde kein übliches Buildsystem zur Verfügung gestellt, wie dies beispielsweise von [[Make]], oder ein neuerer Nachfolger wie [[Ant]],[[Cmake]] oder [[Maven]] könnten.&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake, verfügbar als alternativer [[Branch]] im [[CVS|CVS]], versucht diese Schwächen zu beseitigen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein spezieller Dank an jedem, der Bugreports und Feedback geliefert hat. Insbesonderes gilt dies für dietmarw, der Newmake benutzt, um die [[images|dietmarW-Images]] zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ziel=&lt;br /&gt;
Das Ziel des vorliegenden Artikels ist [[ES|es]], dem Leser grundlegendes Know-How zu vermitteln. [[ES|Es]] ist nicht das Ziel, eine idiotensichere Schritt-für-Schritt Anweisung bereitzustellen, wie das bei sogenannten HOWTO's der Fall wäre.&amp;lt;br&amp;gt;&lt;br /&gt;
Kenntnisse im Umgang mit [[Wikipedia:Skriptsprache|Shellskripten]] wird für viele Teile, insbesondere für das [[Customization]]-Kapitel, aber nicht für [[Image]]/[[yadd|YADD]]-Herstellung in seiner einfachsten Art und Weise vorausgesetzt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der vorliegende Artikel versucht nicht die innere Funktion der [[Makefiles]] und des Makeprozesses zu beschreiben. Hierfür wird der Leser auf diverse Quellen, und zu relevanten Threads im [[CDK]]-Forum des [[Tuxbox|Tuxbox]]-Forums hingewiesen. Alle Optionen für ''configure'' werden auch nicht beschrieben, nur die Allgemeinsten und Wichtigsten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Wie schwierig ist [[ES|es]]? =&lt;br /&gt;
Die Antwort könnte lauten: ''[[ES|Es]] ist so schwerig wie man diesen Artikel zu lesen versteht.'' Für den Leser, der ohne Probleme den Inhalt dieses Artikels versteht, sollte [[ES|es]] kein Probleme sein. Leser, für die das Meiste nur Kauderwelsch ist, sollten vielleicht besser bei fertigen [[Images|Images]] bleiben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Images|Images]] und [[Yadd|YADD]]'s bauen=&lt;br /&gt;
== Targets ==&lt;br /&gt;
[[ES|Es]] gibt neben zahlreichen untergeordneten Zielen (Targets), zwei hauptrangige Targets. Diese wären entweder &lt;br /&gt;
*[[YADD]] &lt;br /&gt;
oder &lt;br /&gt;
*[[Image]]. &lt;br /&gt;
Ein [[YADD]] besteht aus einigen Dateien, die die DBox anstatt aus dem [[Flash]] ü[[BER|ber]] den [[TFTP]]-Service lädt, sowie ein [[Filesystem|Filesystem]], das ü[[BER|ber]] einen [[NFS-Server]] der dBox zur Verfügung gestellt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Betriebsart hat insbesondere während der Softwareentwicklung oder beim Erlernen des Systems viele Vorteile. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Name &amp;quot;[[YADD]]&amp;quot; bedeutet übrigens &amp;quot;'''Y'''et '''A'''nother '''D'''Box '''D'''istribution&amp;quot; (&amp;quot;noch eine dBox Verteilung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte und Überlegungen ===&lt;br /&gt;
Eine Empfehlung für den angehenden &amp;quot;[[Image|Image]]/[[Yadd|YADD]]-Lehrling&amp;quot; wäre:&amp;lt;br&amp;gt;&lt;br /&gt;
Baue zuerst ein [[YADD]] mit Deiner Lieblings-[[GUI]], und lerne damit umzugehen.&amp;lt;br&amp;gt; &lt;br /&gt;
Nächster Schritt wäre dann, ein [[jffs2]]-[[Image|Image]] mit der Lieblings-[[GUI]] zu erstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens möchte man die folgenden Schritte kombinieren und/oder automatisieren. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In diesem Artikel bezeichnet &amp;quot;[[GUI]]&amp;quot; entweder &lt;br /&gt;
*[[Neutrino]] oder &lt;br /&gt;
*[[Enigma]]&lt;br /&gt;
*[[Lcars]]&lt;br /&gt;
*[[Radiobox]]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[Filesystem]]&amp;quot; im Kontext eines kompletten [[Images]] bezeichnet das [[Dateisystem]], in dem das root-Verzeichnis liegt. Diese kann ein &lt;br /&gt;
*[[cramfs]] (ein komprimiertes, Read-only [[Filesystem|filesystem]] für embedded Systeme) sein, &lt;br /&gt;
*[[squashfs]] (ein weiterd komprimiertes read-only-[[Dateisystem|Dateisystem]], was leistungsfähiger als [[cramfs]] betrachtet wird)&lt;br /&gt;
oder &lt;br /&gt;
*[[jffs2]] (ein &amp;quot;journalled&amp;quot; Read-Write-[[Filesystem|Filesystem]]).&lt;br /&gt;
Ein &amp;quot;[[Cramfs|cramfs]] Komplett-[[Image|Image]]&amp;quot; besteht aus einem Root-[[Dateisystem|Dateisystem]] mit dem [[cramfs]] [[Dateisystem|Dateisystem]] und einem kleineren [[jffs2]]-[[Filesystem|Filesystem]], das nach '''/var''' gemounted wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Analog gilt dies auch für &amp;quot;'''[[Squashfs|squashfs]] Komplett-[[Images|Images]]'''&amp;quot;, während ein &amp;quot;'''[[Jffs2|jffs2]] Komplett-[[Image|Image]]'''&amp;quot; kein separates ''/var-[[Dateisystem|Dateisystem]]'' enthält, weil [[Jffs2|jffs2]] an sich beschreibbar (var) ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich enthalten die Komplett-[[Images|Images]] eine weitere [[Partition|Partition]], die den [[u-boot]]-[[Bootloader]] enthalten. Diese [[Partition|Partition]] ist zwischen dBoxen mit einen und zwei Flashchips unterschiedlich. Dieses wird durch &amp;quot;'''1x'''&amp;quot; und &amp;quot;'''2x'''&amp;quot; angezeigt. Ein komplettes [[Image|Image]] würde demnach so benannt werden:&lt;br /&gt;
 &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs, jffs2].img[1, 2]x, &lt;br /&gt;
z.B. als fertiges [[Image|Image]]: &lt;br /&gt;
 [[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buildsystem Voraussetzungen ==&lt;br /&gt;
Die Voraussetzungen auf dem Buildhost können in etwa so zusammengefasst werden: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein modernes [[Unix|Unix]]/[[Linux|Linux]] System mit ca. 2 GB freiem Speicherplatz. Epfehlenswert ist [[ES|es]] aber mehr Speicherplatz einzuplanen, da beispielsweise bei Verwendung von [[ccache]] einiges an Daten zwischengelagert wird und je öfter man kompiliert, [[ES|es]] dann doch eng werden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [[DBox2 Software Projekt|Tuxbox Projekt]] hat keine favorisierte Buildumgebung. Fragen wie &amp;quot;geht [[ES|es]] mit Redhat x.y?&amp;quot; lassen sich nicht genau beantworten. Der Grund hierfür ist, dass niemand sich wirklich dafür interessiert, die Eigenschaften der bestimmten Distributionen zu erkunden. Gewisse Anforderungen werden dagegen für Versionen der Werkzeuge, wie [[WP:autoconf|autoconf]], [[WP:automake|automake]], [[make]] usw. formuliert. Die meisten davon sind in den gängigsten Distributionen bereits enthalten bzw. können nachinstalliert werden. Die momentan erfordelichen Toolversionen sind in folgendender Tabelle zusammengefasst:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Vorlage:GNU_Tools}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Der Buildprozess überprüft zu Beginn automatisch einige dieser Anforderungen. Wenn eines dieser [[Tools|Tools]] fehlt, oder wenn die Version zu alt zu sein scheint, ist [[ES|es]] in der Regel einfacher, die erforderliche Version nachträglich zu installieren, entweder als kompiliertes Paket, z.B. im [[rpm]]-Format vom jeweiligem Distributor, oder sich direkt die Quellen zu besorgen, zu kompilieren und zu installieren, als zu versuchen oder herauszufinden, ob die oben genannten Anforderungen wirklich notwendig sind.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Hinweis''':&amp;lt;br&amp;gt;&lt;br /&gt;
In anderen [[Anleitungen|Anleitungen]] zum Buildvorgang wird gefordert, dass [[Tools|Tools]] wie [[fakeroot]],&lt;br /&gt;
[[mksquashfs]], [[mkcramfs]], [[mkjffs2fs]] (oder [[mkfs.jffs2]]), vielleicht auch [[mklibs]]&lt;br /&gt;
oder [[ccache]], auf Ihrem System installiert sein müssen. In dieser Umgebung ist dies nicht&lt;br /&gt;
erfordelich, da einige entweder überhaupt nicht benötigt werden bzw. die [[Installation|Installation]] im &lt;br /&gt;
Makeprozess selbst vorgenommen wird!&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
Builden auf einem [[Unix|Unix]]-non-[[Linux|Linux]] System sollte vermutlich auch möglich sein, so weit die erforderlichen [[GNU]] Werkzeuge vorhanden sind. Mit einem anderen [[make]] als [[GNU]] wird [[ES|es]] fast sicher nicht funktionieren, da die [[GNU|GNU]]-[[Erweiterungen|Erweiterungen]] uneingeschränkt verwendet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] wird daher davon abgeraten eine Umbegebung z.B. mit [[Cygwin]] aufzubauen, da [[ES|es]] höchstwahrscheinlich nicht funktionieren wird. In dieser Richtung wurde zwar Einiges für den Makeprozess eingebaut, jedoch dürfte der gegenwärtige Entwicklungsstand nicht den gegenwärtigen Anforderungen entsprechen, um aktuell auch damit arbeiten zu können.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist allerdings eine Buildumgebung mittels [[VMWare]] aufzubauen. Hierfür gibt [[ES|es]] auch eine &amp;quot;konfektionierte&amp;quot; Lösung von yiogol, der hierfür ein passendes [[VMWare-Image]] erstellt hat, dass im Prinzip alle notwendigen Zutaten enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auschecken ==&lt;br /&gt;
Die [[Tuxbox|Tuxbox]] Quellen werden durch den [[Tuxbox|Tuxbox]] [[CVS-Server]] bereitgestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Regelmäßige Quellreleases sind niemals gemacht worden, und sind auch nicht für die Zukünft geplant. Für unsere Zwecke werden die Quellen anonym &amp;quot;ausgecheckt&amp;quot;, was bedeutet, dass diese auf die eigene Festplatte kopiert werden, indem man zuerst auf einer (lokalen) Festplatte mit &amp;quot;ordentlich&amp;quot; freiem Platz ein leeres Verzeichnis erstellt, z.B. ''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]'' und in diesen Ordner wechselt, und diesen Befehl ausführt.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P .&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl checkt die Newmake Files aus. In Fällen, in denen keine Newmake Version vorhanden ist, wird die HEAD-Version ausgecheckt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis:'''&lt;br /&gt;
''Im HEAD gibt [[ES|es]] zwei Files:''&lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS&lt;br /&gt;
''und'' &lt;br /&gt;
*[[CDK|cdk]]/root/etc/init.d/rcS.insmod&lt;br /&gt;
''Im [[Newmake]] werden diese nicht benötigt da sie mittels''&lt;br /&gt;
 [[CDK|cdk]]/root/etc/init.d/rcS.m4&lt;br /&gt;
''erzeugt werden.''&lt;br /&gt;
''Um auf der sicheren Seite zu sein, ist [[ES|es]] ratsam, diese beiden zu löschen''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nachdem die Daten ausgecheckt wurden, könnte kann man jetzt einige Patches auf die Quellen anwenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man aber zum ersten Mal kompiliert, ist [[ES|es]] ratsam, vorerst keine Patches anzuwenden. Wenn Probleme auftreten, ist [[ES|es]] viel einfacher (technisch sowohl als auch für jeden selbst) jemand zu helfen, der die &amp;quot;unveränderten [[CVS|CVS]] Quellen&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Jetzt müssen einge Zwischenschritte erledigt werden, damit der Buildprozess auch erkennt, was und vorallem wie er [[ES|es]] machen soll.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Man wechselt nun in das [[CDK|CDK]]-Unterverzeichnis&lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
und gibt diesen Befehl ein (ohne Argumente).&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Dieser erzeugt unter anderem ein [[Shellskript]] namens '''configure'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wird ''autogen.sh'' ausgeführt, wird dabei eine Anzahl von Optionen übergeben, um das System für das Builden eines [[Images|Images]], [[Yadd|YADD]] oder aller anderen gewünschten Ziele entsprechend den Benutzerwünschen vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
{{Newmake_Build_Optionen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für uns sind vorerst nur wenige Optionen interessant. Die Standardvorgaben reichen vorerst völlig aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Eine typische Anwendung (Konfiguration), der mit z.B. den Pfadnamen oben kompatibel wäre, könnte so eingestellt werden:&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-cvsdir=&amp;quot;/[[Tuxbox|tuxbox]]-[[CVS|cvs]]&amp;quot; --prefix=&amp;quot;/[[Dbox2|dbox2]]&amp;quot; --enable-maintainer-mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*''--with-cvsdir'' &lt;br /&gt;
sagt wo die Quellen zu finden sind, (darin sollte auch ein Unterverzeichnis ''.../[[CDK|cdk]]'' besitzen). In der Regel ist dies das Verzeichnis in das die Quelldaten gerade ausgecheckt wurden, während &lt;br /&gt;
*''--prefix''&lt;br /&gt;
bedeutet, dass eine Anzahl von wichtigen Verzeichnissen als Unterverzeichnisse des besagten Verzeichnisses erstellt werden sollen. Ihre Position kann durch andere Konfigurationsoptionen weiter beeinflußt werden.&lt;br /&gt;
*''--enable-maintainer-mode'' &lt;br /&gt;
ist, auch für Nichtmaintainers praktisch, da er den hergestellten [[Makefiles|Makefiles]] ermöglicht, sich automatisch neu zu erzeugen, sobald die Notwendigkeit entsteht, zum Beispiel nach einem [[Software|Software]]-[[Update|Update]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ES|Es]] gibt sicher noch andere nützliche Optionen. Einige werden später noch besprochen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fehlerausgaben ===&lt;br /&gt;
Überprüfe bitte die Ausgaben von ''autogen'' auf Fehler (&amp;quot;Error&amp;quot;) und Warnungen.&amp;lt;br&amp;gt; &lt;br /&gt;
Hierbei können diese Warnungen ignoriert werden:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/share/aclocal/pkg.m4:5: warning: underquoted definition of PKG_CHECK_MODULES from autogen.sh &lt;br /&gt;
&lt;br /&gt;
ebenso folgende Warnungen von configure:&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mklibs|mklibs]]&lt;br /&gt;
 checking for mkcramfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Cramfs|cramfs]]&lt;br /&gt;
 checking for mkjffs2... no&lt;br /&gt;
 checking for [[Mkfs.jffs2|mkfs.jffs2]]... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Mkfs.jffs2|mkfs.jffs2]]&lt;br /&gt;
 checking for mksquashfs... no&lt;br /&gt;
 configure: WARNING: using [[Tuxbox|tuxbox]] [[Squashfs|squashfs]]&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
Dies sind nur Hinweise darauf, dass hier projekteigene Versionen einiger [[Tools|Tools]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
'''''Beachte!''' &lt;br /&gt;
Wenn man diesen Artikel mit ähnlichen Beschreibungen aus vergangenen Zeiten  &lt;br /&gt;
vergleicht, bemerkt man, dass die Option '''--with-targetruleset=[standard,flash]''' nicht mehr&lt;br /&gt;
vorhanden ist. Bisher war [[ES|es]] notwendig, bei der Konfiguration sich entweder auf Builds von [[YADDs]]&lt;br /&gt;
oder [[Images]] einzuschränken. Bei Newmake ist dieses nicht mehr notwendig.&lt;br /&gt;
&amp;lt;br&amp;gt;''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Stop hand.png]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:0px; border: 3px solid #FF0000; padding: 0px 10px 1px 10px; background-color:#DEB0B0;  align:right; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#000000&amp;quot; size=&amp;quot;5&amp;quot;&amp;gt;'''&lt;br /&gt;
Versuche niemals, als root zu bauen!'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kompilieren ==&lt;br /&gt;
Die high-level [[Make|make]] Targets, die für das Builden von Komplett-[[Images|Images]] relevant sind, lauten:&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;flash-&amp;lt;/nowiki&amp;gt;[cramfs, squashfs, jffs2, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;[1x, 2x, alle]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für [[Yadd|YADD]]-Builds, sind diese: &lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;yadd-&amp;lt;/nowiki&amp;gt;[neutrino, enigma, all]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
erzeugt flashbare [[Jffs2|jffs2]]-only [[Images|Images]] mit [[Neutrino|Neutrino]], für 1x-Boxen und für 2x-Boxen (Dateinamen ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img1x'' und ''[[Neutrino|neutrino]]-[[Jffs2|jffs2]].img2x'').&lt;br /&gt;
&lt;br /&gt;
'''der Befehl:'''&lt;br /&gt;
&lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Enigma|enigma]]&lt;br /&gt;
&lt;br /&gt;
erzeugt ein [[Yadd|YADD]], das [[Enigma|Enigma]] enthält.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Zeitaufwand ===&lt;br /&gt;
Das Kompilieren kann bei so einem Projekt und je nach Konfiguration und Rechnerleistung schon einige Zeit in Anspruch nehmen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf einem Athlon XP 1800 dauert ein Befehl wie '''[[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]''' mit leeren Verzeichnissen etwa 1 und 1,5 Stunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verwendung von [[Ccache|ccache]] ====&lt;br /&gt;
Um den Vorgang insbesondere bei wiederholten Kompilieren und besonders auf langsameren Rechnern zu beschleunigen, steht die Option&lt;br /&gt;
* --enable-[[Ccache|ccache]]&lt;br /&gt;
zur Verfügung, welche man mit in die Konfiguration einbinden kann. Erfahrungsgemäß wird so durchschnittlich ca. 1-2 Drittel der Zeit eingespart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch die Option '''--enable-[[Ccache|ccache]]''' wird erreicht, sollte das Tool bereits in deiner Distribution installiert sein, dass [[ccache]] automatisch erkannt wird und in das [[Tuxbox|Tuxbox]]-[[CDK|CDK]] eingebunden wird. Ist [[ES|es]] nicht installiert, wird dies auch von configure angezeigt: &lt;br /&gt;
 ...&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 [[Ccache|ccache]] support:                 no&lt;br /&gt;
 [[Ccache|ccache]] installdir:&lt;br /&gt;
 [[Ccache|ccache]] is not installed please run [[Make|make]] [[Ccache|ccache]] or install it and configure again&lt;br /&gt;
 ----------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
Dann sollte man das Tool nachinstallieren oder mit dem Target&lt;br /&gt;
 [[Make|make]] [[Ccache|ccache]]&lt;br /&gt;
in das [[CDK|CDK]] einbauen und configure wiederholen.&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''[[Ccache]] macht sich erst bemerkbar, nachdem der Buildvorgang mindestens einmal durchgelaufen ist!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option ''--enable-[[Ccache|ccache]]'' ist normalerweise völlig ausreichend. [[ES|Es]] stehen aber noch weitere untergeordnete Sub-Optionen zur Verfügung, die in Ausnahmefällen verwendet werden können: &lt;br /&gt;
*--with-ccachedir=DIR&lt;br /&gt;
Diese Option kann man verwenden, wenn man [[ccache]] beispielsweise nur als Binary abgelegt hat und den Pfad dazu bestimmen möchte.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Hinweis'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''Die Option '''--with-ccachedir''' bewirkt auch das die mit '''[[Make|make]] [[Ccache|ccache]]''' installierte Version im [[CDK|CDK]] und/oder auch die evtl. im System installierte Version ignoriert wird!''&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachesize=SIZE maximal&lt;br /&gt;
Hier gibt man an, wieviel Speicher [[ccache]] verwenden darf in GB z.B: für 2GB&lt;br /&gt;
 --with-maxcachesize=2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*--with-maxcachefiles=COUNT&lt;br /&gt;
Hier kann man angeben, wieviele Dateien [[ccache]] cachen darf.&lt;br /&gt;
 --with-maxcachefiles=20000&lt;br /&gt;
Hier würden [[ES|es]] logischeweise 20000 sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Wirksamkeit von [[ccache]] lässt sich mit dem Befehl&lt;br /&gt;
 [[Ccache|ccache]] -s&lt;br /&gt;
prüfen. Als Ergebnis werden einige Statistiken ü[[BER|ber]] das Cache-Verhalten von [[Ccache|ccache]] ausgegeben:&lt;br /&gt;
 cache directory                     /home/&amp;lt;USER&amp;gt;/.[[Ccache|ccache]]&lt;br /&gt;
 cache hit                              4&lt;br /&gt;
 cache miss                           191&lt;br /&gt;
 called for [[Link|link]]                       17&lt;br /&gt;
 multiple source files                  4&lt;br /&gt;
 compile failed                        17&lt;br /&gt;
 preprocessor error                     2&lt;br /&gt;
 not a C/C++ file                       5&lt;br /&gt;
 autoconf compile/[[Link|link]]                178&lt;br /&gt;
 no input file                         15&lt;br /&gt;
 files in cache                       382&lt;br /&gt;
 cache size                           7.1 Mbytes&lt;br /&gt;
 max cache size                     976.6 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um die benötigte Zeit genau zu ermitteln, kann man den Befehl '''time''' einbauen.&lt;br /&gt;
 time [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
Am Ende des Bauvorganges werden damit die entsprechenden Zeitinformationen ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Hier einige Beispiele mit denen man [[Images|Images]], Yadds oder einzelne Targets bauen kann. Diese Beispiele sollten so wie sie hier vorgegeben sind ohne Veränderung auf jedem [[Linux|Linux]]-System mit den bisher beschriebenen Voraussetzungen laufen. Da die Systeme trotzdem [[Unterschiede|Unterschiede]] aufweisen können, kann man das aber nicht garantieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|neutrino]]-[[Jffs2|jffs2]]-[[Image|Image]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut [[Neutrino|neutrino]]-[[Jffs2|jffs2]] [[Images|Images]], jeweils 1x und 2x&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=$USERDIR/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --enable-flashrules --enable-[[Ccache|ccache]] --with-[[CheckImage|checkImage]]=rename --with-logosdir=&amp;quot;$LOGODIR&amp;quot; &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-all &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Neutrino|Neutrino]] [[Yadd|YADD]] ====&lt;br /&gt;
 #! /bin/bash &lt;br /&gt;
 # beispiel.sh&lt;br /&gt;
 # Diese Script baut ein [[Neutrino|Neutrino]] [[Yadd|Yadd]]&lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 USERDIR=/home/$(whoami) &lt;br /&gt;
 #----------------------------------------------&lt;br /&gt;
 LOGODIR=/Logos &lt;br /&gt;
 CP=$USERDIR/[[Tuxbox|tuxbox]]-[[CVS|cvs]] &lt;br /&gt;
 DB=$USERDIR/[[Dbox2|dbox2]] &lt;br /&gt;
 ARCHIVEDIR=$USERDIR/Archive &lt;br /&gt;
 export CVS_RSH=[[SSH|ssh]] &lt;br /&gt;
 #----------------------------------------------- &lt;br /&gt;
 cd &amp;quot;$CP&amp;quot;&lt;br /&gt;
 [[CVS|cvs]] -d anoncvs@[[CVS|cvs]].[[Tuxbox|tuxbox]].org:/[[CVS|cvs]]/[[Tuxbox|tuxbox]] -z3 co -f -r newmake -P . &lt;br /&gt;
 cd [[CDK|cdk]]&lt;br /&gt;
 /bin/ln -sf $ARCHIVEDIR/ Archive&lt;br /&gt;
 ./autogen.sh &lt;br /&gt;
 ./configure --prefix=&amp;quot;$DB&amp;quot; --with-cvsdir=&amp;quot;$CP&amp;quot; --with-logosdir=&amp;quot;$LOGODIR&amp;quot; --enable-[[Ccache|ccache]] &lt;br /&gt;
 [[Make|make]] [[Yadd|yadd]]-[[Neutrino|neutrino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Was kommt dann...? =&lt;br /&gt;
== Booten von [[Yadd|YADD]] ==&lt;br /&gt;
Wenn ein [[Yadd|YADD]] frisch erzeugt wurde, kann damit auch die Box booten. Näheres dazu auch im Artikel [[CDK booten]].&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake hält auch ein [[Make|Make]]-Target für den serversupport bereit.&lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
Dieses erzeugt einige Konfigurationsdateien für den [[Server|Server]] der das [[Yadd|YADD]]-Build nahtlos an das [[Server|Server]]-Setup anknüpft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Flashen|Flashen]] des [[Images|Images]] ==&lt;br /&gt;
Wenn ein [[Image|Image]] gebaut wurde, ist der logische nächste Schritt das Einspielen des [[Images|Images]] in den [[Flash|Flash]] der Box. Hierfür ist entweder, das interaktive [[Flashen|Flashen]] innerhalb der [[GUI|GUI]] (Expertenfunktionen) zu benutzen, oder der ''dboxflasher'' zu verwenden. Der dboxflasher wird durch das [[Make|Make]]-Target &lt;br /&gt;
 [[Make|make]] serversupport&lt;br /&gt;
erzeugt. Andere Möglichkeiten des Flashens werden [[Installation|hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inkrementelle Builds ==&lt;br /&gt;
Im allgemeinen ist man nicht an einem einmaligen Build der [[Software|Software]] interessiert. Verbesserungen an den Quellen werden in das [[CVS|CVS]] täglich eingecheckt. Oft möchte man die [[Software|Software]] durch eigene Programmierung verbessern oder Patches anwenden. [[ES|Es]] ist dabei wünschenswert, dass genau nur die Teile neu erzeugt wird, die neu erzeugt werden sollen, nicht mehr und nicht weniger. Newmake geht einen direkten Weg in diese Richtung. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um ein Target neu zu bauen, benutze den Befehl &lt;br /&gt;
 [[Make|make]] [target]&lt;br /&gt;
und [[Make|make]] wird [[ES|es]], falls notwendig, neu erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ES|Es]] kann auch passieren, dass [[Make|make]] zusätzlich einen vollständig anderen Bestandteil neu erzeugt! Dies ist dann der Fall, wenn das jeweilige Target von anderen Teilen abhängt, die sich geändert haben.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In einige Situationen kann [[ES|es]] auch wünschenswert sein, ein erneutes Bauen einer Komponente zu erzwingen. Einige Komponenten werden in einem Distributionsfile zum Verzeichnis [[CDK|cdk]]/Archive heruntergeladen, und wenn das Build stattfindet, ausgepackt, evtl. Patches angewendet, konfiguriert, kompiliert, installiert und die Quellen dann wieder gelöscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles findet automatisch statt. Die [[Installation|Installation]] eines bestimmten Pakets wird durch das Anlegen einer Markerdatei im Verzeichnis ''[[CDK|cdk]]/.deps'' vermerkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Falls gewünscht, kann solch eine Markiererdatei entfernt werden, um das Neuerzeugen der entsprechenden Komponetne zu erzwingen. [[ES|Es]] gibt hierfür auch entsprechende Targets, die &amp;quot;''Cleaning Targets''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cleaning targets ==&lt;br /&gt;
[[ES|Es]] gibt mehrere unterschiedliche Aufräum-Targets:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] distclean&lt;br /&gt;
Das drastischste Reinigungs-Target, (fast) alles löschend, was nicht vom [[CVS|CVS]] ausgecheckt wurde.&lt;br /&gt;
Dieses ist eher selten notwendig. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] mostlyclean&lt;br /&gt;
Ein intelligenteres Target ist ''mostlyclean''. [[ES|Es]] säubert die Verzeichnisse, die Tuxboxquellen enthalten, lässt aber die Kompilationsumgebung und alle ''Auspacken-kompilieren-installieren-löschen-Komponente'' unberührt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auch das cdkroot Verzeichnis, (d.h. die [[Yadd|Yadd]]-[[Installation|Installation]]), sowie die [[Tftp|TFTP]]-Files ([[Kernel|Kernel]] und [[U-boot|u-boot]]) werden nicht angefasst.    &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] depsclean&lt;br /&gt;
Löscht alle Markerdateien im /[[CDK|cdk]]/.deps Verzeichnis und zwingt so zum Neukompliieren aller [[Auspacken-kompilieren-installieren-löschen-Komponenten]].&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Dies ist selten sinnvoll: Diese hängen von ihren Quellen und vielleicht von einem Patchfile ab, und der Makefile kennt diese Abhängigkeiten.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] clean&lt;br /&gt;
Kombiniert ''mostlyclean'', ''depsclean'', und ''[[Flash|flash]]-clean''. Versucht auch soviel wie möglich im cdkroot-Verzeichnis zu löschen, das nicht während des Bootstrapdurchlaufes installiert war. So wird&lt;br /&gt;
versucht, die Umgebung in einem Zustand zu bringen, wo die Buildumgebung gerade kompiliert worden ist, z.B. mit ''[[Make|make]] bootstrap''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-semiclean&lt;br /&gt;
Dieses Target löscht die meisten Verzeichnisse in $(flashprefix), mit Ausnahme der Boot-Partitionen und der Kernelbauverzeichnisse.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses ist oft sinnvoll, da diese Bestandteile verhältnismässig sich selten ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-mostlyclean&lt;br /&gt;
Zusätzlich zum ''[[Flash|flash]]-semiclean'' löscht dieses Target auch Bootfiles und die Kernbauverzeichnisse. Vollimages werden unberührt gelassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-clean&lt;br /&gt;
Dieses Target löscht Alles in $(flashprefix).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einige Quellverzeichnisse können mit einem Befehl wie &lt;br /&gt;
 [[Make|make]] -C /[[Tuxbox|tuxbox]]-[[CVS|cvs]]/apps/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]] clean &lt;br /&gt;
gesäubert werden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung des [[CVS|CVS]]-Quellcodes ==&lt;br /&gt;
Um die Quellen mit neueren Checkins zu aktualisieren, verwende diesen Befehl für das toplevel [[CVS|CVS]] Verzeichnis (oder von einem anderen Verzeichnis, wenn Ihr wisst, was ihr tut;-). Mögliche Fehler werden in das logfile [[CVS|cvs]].log geschrieben.&lt;br /&gt;
&lt;br /&gt;
 [[CVS|cvs]] up -f -r Newmake -dP &amp;gt; [[CVS|cvs]].log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um mit dem [[CVS|CVS]] arbeiten zu können nimmt man für gewöhnlich die Konsole für Eingaben. [[ES|Es]] gibt aber auch verschiedene Frontendwerkzeuge wie z.B. [http://www.crossvc.com CrossVC] oder [http://cervisia.kde.org/ Cervisia] um nur einige zu nennen, die einen recht komfortablen Umgang mit den [[CVS|CVS]]-Daten ermöglichen.&amp;lt;br&amp;gt; [[Bild:Crossvc.jpg|CrossVC als CVS Frontendlösung]] [[Bild:Cervisia.jpg|Cervisia als CVS Frontendlösung]]&amp;lt;br&amp;gt; &lt;br /&gt;
Auch einige [[IDE|IDE]]'s wie z.B. [[WP:Anjuta|Anjuta]] &amp;lt;br&amp;gt; [[Bild:anjuta.jpg|Anjuta als IDE mit CVS-Anbindung]]&amp;lt;br&amp;gt; bieten solche [[CVS|CVS]]-Schnittstellen an.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Customization|Customization]] ==&lt;br /&gt;
Bisher lief immer alles darauf hinaus [[Images|Images]] oder Yadds zu bauen, die aus unveränderten [[CVS|CVS]]-Quellen gebaut wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Images|Images]] und die Yadds können aber auch angepasst (&amp;quot;customized&amp;quot;) werden, ohne die [[Makefiles|Makefiles]] zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hier gibt [[ES|es]] verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsoptionen ===&lt;br /&gt;
hier einige nützliche Optionen:&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit kann ein Verzeichniss angegeben werden, welches die [[Ucodes|Ucodes]] enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
 --with-ucodesdir=[DIR]&lt;br /&gt;
'''Hinweis:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#FF0000&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Ein [[Image|Image]], dass [[Ucodes|ucodes]] enth&amp;amp;auml;lt, darf &lt;br /&gt;
 nicht verbreitet werden!&amp;lt;/strong&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Option &lt;br /&gt;
 --with-logosdir=[DIR] &lt;br /&gt;
kann ein Verzeichniss angegeben werden, das boot-logos (logo-[[LCD|lcd]] und logo-fb) enthält, die im [[Image|Image]] enthalten sein sollen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option&lt;br /&gt;
 --with-defaultlocale=[LOCALE]&lt;br /&gt;
sorgt dafür, dass die gewünschte Sprache schon beim bauen eingestellt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ändern der Partitionierung ===&lt;br /&gt;
Die Rootpartitionsgröße für [[Cramfs|cramfs]] und [[Squashfs|squashfs]] [[Images|Images]] kann mit der Configure-Option &lt;br /&gt;
 --with-rootpartitionsize=[SIZE]&lt;br /&gt;
angegeben werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Größe der var-[[Partition|Partition]] wird automatisch berechnet, wobei man den restlichen Flashspeicher nutzt, der nicht durch die anderen Partitionen benutzt wird. Die Standardgröße ist 0x660000. &lt;br /&gt;
Diese Zahl sollte eine Multiple der Erasesize, momentan 0x20000 sein. Dies wird allerdings ignoriert falls [[ES|es]] wie bei der [[Jffs2|jffs2]]-Imageerstellung unsinnig wäre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variablen ===&lt;br /&gt;
==== Pfade ====&lt;br /&gt;
[[ES|Es]] sind noch weitere Benutzeranpassungen möglich. Dafür ist [[ES|es]] aber notwendig, etwas [[Wissen|Wissen]] ü[[BER|ber]] die innere Funktionsweise der [[Makefiles|Makefiles]] zu haben.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Folge bezeichnet &lt;br /&gt;
 $(flashprefix) &lt;br /&gt;
den Wert der Makefile Variablen '''flashprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkflash''')&lt;br /&gt;
 $(targetprefix)&lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''targetprefix''' (mit Konfiguration wie oben '''/[[Dbox2|dbox2]]/cdkroot'''), und &lt;br /&gt;
 $(buildprefix) &lt;br /&gt;
bezeichnet den Wert der Makefile Variablen '''buildprefix''' (mit der Konfiguration oben '''/[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Um z.B. ein '''[[Neutrino|neutrino]]-[[Cramfs|cramfs]].img2x''' zu erzeugen, werden die folgenden Verzeichnisse erstellt:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''$(flashprefix)/root''' (enthält [[Filesystem|Filesystem]]- und [[GUI|GUI]]-unabhängige Bestandteile)&lt;br /&gt;
*'''$(flashprefix)/root-[[Cramfs|cramfs]]''' (enthält den [[Kernel|Kernel]], für Root-[[Filesystem|Filesystem]] auf [[Cramfs|cramfs]] konfiguriert, zusammen mit seinen Treibern) und &lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]''' (enthält die Neutrinoinstallation).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Aus diesen drei Verzeichnissen, werden das Rootfilesystemverzeichniss&lt;br /&gt;
*'''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Cramfs|cramfs]]''' und das&lt;br /&gt;
var-filesystemverzeichnis &lt;br /&gt;
*'''$(flashprefix)/var-[[Neutrino|neutrino]]''' gebaut.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hiermit ist [[ES|es]] möglich, einen Befehl wie &lt;br /&gt;
 [[Make|make]] $(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
bzw. wenn man sich im Verzeichnis ''./[[Tuxbox|tuxbox]]-[[CVS|cvs]]/[[CDK|cdk]]'' befindet, den Befehl&lt;br /&gt;
 [[Make|make]] root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
einzugeben, wobei man bei erster VAriante natürlich '''$(flashprefix)''' selbst durch den realen Pfad ersetzen muss, da '''$(flashprefix)''' nur eine [[Make|make]]-Variable ist, welche in unserem Beispiel den Pfad zu '''./[[Dbox2|dbox2]]/cdkflash''' darstellt.&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann so manuell gewünschten Änderungen an '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' vornehmen, und dann, mit dem Befehl &lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]-2x &lt;br /&gt;
den Imagebau abschließen, um ein [[Image|Image]] zu erstellen, das diese manuellen Änderungen enthält. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dieses kann zwar für den einmaligen Imagebau sinnvoll sein, jedoch in vielen Fällen dürfte eine automatisierte und systematischere Methode erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Customization|Customization]]-Scripte ===&lt;br /&gt;
Sofern diese Scripte vorhanden und ausführbar sind, werden innerhalb der wichtigsten Targets diese sogenannten ''[[Customization|Customization]]-Scripte'' automatisch aufgerufen bzw. ausgeführt.&lt;br /&gt;
Zum aktivieren diese Scripte müssen diese lediglich in ein dafür vorgesehenes Verzeichnis abgelegt werden und ausführbar sein. Dieses Verzeichnis ist standardmäßig der '''*/[[CDK|cdk]]'''-Ordner.&lt;br /&gt;
Bei Bedarf kann mit der Option&lt;br /&gt;
 --with-customizationsdir=[DIR] &lt;br /&gt;
ein alternatives Verzeichnis für [[Customization|Customization]]-Scripte festgelegt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auf diese Scripte werden zwei Argumente zur Laufzeit übergeben: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Für Imagetargets sind dies&lt;br /&gt;
*$(flashprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
für Yaddtargets sind diese &lt;br /&gt;
*$(targetprefix)&lt;br /&gt;
und &lt;br /&gt;
*$(buildprefix)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bezeichnung &amp;quot;Script&amp;quot; ist etwas irreführend, da sie eigentlich wie normale Programme mit zwei Argumenten ausgeführt werden. Anstelle eines [[Shell|Shell]]-Scripts könnte dies z.B. ein kompiliertes C Programme, oder ein [[Perl|Perl]]-Script sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Name eines [[Customization|Customization]] Scriptes besteht in der Regel aus dem Namen eines Targetverzeichnisses bzw. einem Target und dem angefügtem *'''-local.sh'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Flash|Flash]]-Targets ====&lt;br /&gt;
Der Name der [[Customization|Customization]] Scripte für [[Images|Images]] besteht aus den wie oben benannten Verzeichnissen (in diesem Fall Targets) in ''flashprefix'',&lt;br /&gt;
*root&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
dem Namen der jeweilige Benutzeroberfläche, als &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;[[FS]]&amp;quot; zeigt an welches [[Filesystem|Filesystem]] gemeint ist.&lt;br /&gt;
*[[Cramfs|cramfs]]&lt;br /&gt;
*[[Squashfs|squashfs]]&lt;br /&gt;
*[[Jffs2|jffs2]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte wie folgt aufgebaut: &lt;br /&gt;
*root-local.sh&lt;br /&gt;
*root-[GUI]-local.sh&lt;br /&gt;
*root-[GUI]-[FS]-local.sh&lt;br /&gt;
*root-[FS]-local.sh&lt;br /&gt;
*var-[GUI]-local.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Beispiele:'''&lt;br /&gt;
 root-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 root-[[Neutrino|neutrino]]-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 root-[[Squashfs|squashfs]]-local.sh&lt;br /&gt;
 var-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Für [[Yadd|Yadd]]-Targets ====&lt;br /&gt;
Für Yadds ist das Prinzip ähnlich, nur dass es hier quasi nur einen Ordner gibt. Dafür stellvertretend steht dann &lt;br /&gt;
*[[Yadd|yadd]].&amp;lt;br&amp;gt;&lt;br /&gt;
Das &amp;quot;[[GUI]]&amp;quot; in Klammern bezeichnet auch hier die jeweilig betroffene Benutzeroberflche, also&lt;br /&gt;
*[[Neutrino|neutrino]]&lt;br /&gt;
*[[Enigma|enigma]]&lt;br /&gt;
*[[Lcars|lcars]]&lt;br /&gt;
*[[Radiobox|radiobox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
so wäre die Bezeichnung der jeweiligen Scripte so aufgebaut. &lt;br /&gt;
*[[Yadd|yadd]]-[GUI]-local.sh&lt;br /&gt;
'''Beispiel:'''&lt;br /&gt;
 [[Yadd|yadd]]-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Andere [[Customization|Customization]] Scripte ====&lt;br /&gt;
Die bisher benannten [[Customization|Customization]] Scripte für [[Flash|Flash]]- u. [[Yadd|Yadd]]-Targets sind die Gebräuchlichsten. Diese werden allerdings gewissermaßen  nur an die der bestehenden Targets angehängt, anders als es bei den anderen, von denen es in Newmake noch jede Menge mehr gibt, bei denen diese als Ersatz der eigentlichen Targets dienen.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Prinzip ginge dies auf so gut wie alle Targets anzuwenden. Möchte man z.B. ein Contrib-Tool &amp;quot;customizen&amp;quot;, etwa [[hdparm]], kann man ein Script erstellen:&lt;br /&gt;
*hdparm-local.sh&lt;br /&gt;
Führt man dann das Target:&lt;br /&gt;
 [[Make|make]] hdparm&lt;br /&gt;
aus, wird beim Bauen das ausgeführt was im [[Customization|Customization]]-Script angelgt wurde. Die Aktionen im Original-Makefile werden übersprungen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Beispiel: version-local.sh =====&lt;br /&gt;
Diese Funktion ist recht interessant und dürfte recht oft Anwendung finden:&amp;lt;br&amp;gt;&lt;br /&gt;
Während des [[Make|make]]-Durchlaufs werden einige Targets ausgeführt, welche die '''/.version'''-Files bei [[YADD]]&lt;br /&gt;
*'''version'''&lt;br /&gt;
bzw.&lt;br /&gt;
*'''[[Flash|flash]]-version''' &lt;br /&gt;
im [[Image]] erstellt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sofern eines dieser Scripte;&lt;br /&gt;
*'''version-local.sh''' &lt;br /&gt;
*'''[[Flash|flash]]-version-local.sh'''&lt;br /&gt;
vorhanden und ausführbar ist, wird es als Ersatz statt des originalen Targets ausgeführt, welches mit  &lt;br /&gt;
 [[Make|make]] version&lt;br /&gt;
bzw.&lt;br /&gt;
 [[Make|make]] [[Flash|flash]]-version&lt;br /&gt;
angestoßen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== weitere Beispiele für Custiomization ====&lt;br /&gt;
Das Custiomizationscripting soll durch das folgende Beispiel noch mehr veranschaulicht werden.&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
In einem [[Jffs2|jffs2]]-[[Image|Image]] wird dies gewünscht:&lt;br /&gt;
&lt;br /&gt;
   1. Eigene /etc/hosts benutzen,&lt;br /&gt;
   2. Eigene [[Neutrino|neutrino]].conf, [[Bouquets|bouquets]].[[XML|xml]], services.[[XML|xml]] benutzen&lt;br /&gt;
   3. einschließlich [[Lirc|lirc]]-Komponenten, zusammen mit eigenen [[Lirc|lirc]] Konfigurations-Dateien.&lt;br /&gt;
&lt;br /&gt;
1. und 3. sind [[Erweiterungen|Erweiterungen]], die nach '''$(flashprefix)/root''' kommen sollten, während 2. [[Neutrino|Neutrino]]-regeln sind, welche nach sollten '''$(flashprefix)/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]''' gehöhren. &amp;lt;br&amp;gt;&lt;br /&gt;
Um 1. und 3. zu erreichen, wird das Script '''root-local.sh''' erstellt, z.B.:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp -f  $myfiles/etc/hosts $newroot/etc&lt;br /&gt;
 [[Make|make]] flashlirc&lt;br /&gt;
 cp -fr $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Lirc|lirc]] $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
&lt;br /&gt;
Das Script für 2. heist '''root-[[Neutrino|neutrino]]-local.sh''', was dem verherigen sehr ähnlich ist:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # root-[[Neutrino|neutrino]]-local.sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 buildprefix=$2&lt;br /&gt;
 newroot=$flashprefix/root-[[Neutrino|neutrino]]&lt;br /&gt;
 myfiles=/home/somewhere/dbox/myfiles&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Neutrino|neutrino]].conf	 $newroot/var/[[Tuxbox|tuxbox]]/config&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/[[Bouquets|bouquets]].[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
 cp $myfiles/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]/services.[[XML|xml]] $newroot/var/[[Tuxbox|tuxbox]]/config/[[Zapit|zapit]]&lt;br /&gt;
&lt;br /&gt;
'''Bitte beachten:'''&lt;br /&gt;
Diese Scripte sollen als Beispiele dienen und können vermutlich nicht ohne Anpassung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Einige &amp;quot;best practices&amp;quot; =&lt;br /&gt;
In diesem Abschnitt befinden sich einige Richtlinien, die zwar nicht zwingend &amp;quot;notwendig&amp;quot; sind, um korrekte Ergebnisse zu erzeilen, jedoch werden sie langfristig helfen, bessere, zuverlässigere und pflegbare [[Software|Software]] zu erstellen. Dies betrifft Customizations, sowie zukünftige Änderungen am Makefile und deren Bestandteile selbst.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man diese Richtlinien nicht mag, kann man sie ignorieren, zumindest wenn man [[Customization|Customization]] Scripte für den eigenen Bedarf schreibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Idempotens ==&lt;br /&gt;
[[ES|Es]] ist fast immer eine gute Idee zu versuchen, ein Installationsscript [[Wikipedia:Idempotent|idempotent]] zu schreiben. Dies bedeutet, dass das mehrmalige Ausführen den gleichen Effekt hat wie das einmalige Ausführen.&lt;br /&gt;
Benutze &amp;quot;[[Make|make]] install&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Vergangenheit hat das [[Tuxbox|Tuxbox]] Makefile die Komponenten zuerst in ''$(targetprefix)'' installiert, und dann die Imageverzeichnisse durch Kopieren der einzelnen Files aus der ''$(targetprefix)'' Hierarchie erstellt. Dieses ist keine sehr gute Softwaretechnik. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst gehört das Know-How bzgl. [[Installation|Installation]] des Paketes in das Makefile des Pakets, und soll nicht in einem einzigem großen Makefile sitzen, das einfach einzelne Files rüberkopiert. Wenn dieses Paket sich ändert, z.B. man ein Konfigurations-File hinzufügt oder löscht, wird [[ES|es]] auch notwendig, das globale Makefile zu ändern.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] ist häufig der Fall, dass das Makefile, das zu einem Paket gehört, include-Files, (statische) Bibliotheken, Info-Files etc. installiert, die nicht auf einem enbedded System mit beschränktem Speicher erwünscht sind. Die korrekte Lösung zu diesem (wirklichen!) Problem wäre, das Makefile des betreffenden Pakets zu ändern, entweder, um ein flashinstall-Target zu schreiben, oder das Makefile mit einem Parameter wie ''installsize=[full,flash]'' zu versehen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn dies nicht durchführbar ist, ist [[ES|es]] durchaus sinnvoller, daß nach [[Make|make]] -C ... install das Löschen unerwünschter Files besser ist, als das kopieren einzelner Files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Zu erwähnen ist auch, daß in dem Schritt, der die Verzeichnisse ''$(flashprefix)/root-[[GUI|gui]]-[[Filesystem|filesystem]]'' erzeugt, das include-verzeichnis, sowie alle statischen Bibliotheken gelöscht werden und dynamische Bibliotheken von unbenutzten Symbolen gestrippt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Antworten auf einige Fragen ==&lt;br /&gt;
=== Falls das Build nicht gelingt ===&lt;br /&gt;
[[ES|Es]] gibt kein Standardverfahren was zu tun wäre, wenn das Build misslingt. [[ES|Es]] wird versucht, hier einige Richtlinien zu geben und diese zu lesen bevor man im Forum postet.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Zuerst, überprüft man den Output der ersten zwei Schritte, '''autogen.sh''' und '''configure''' auf Fehler und Warnungen. Jede Warnung oder Fehler, außer den fünf Warnungen, die oben genannt wurden, zeigen ein Problem an, dass ein Build wahrscheinlich unmöglich macht.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein Build abbricht, kann [[ES|es]] die Umgebung in einem [[Wikipedia:Inkonsistent|inkonsistenten]] Zustand versetzen. Dies gilt insbesondere für die Verzeichnisse in '''$(flashprefix)'''. Wenn der Bau solch eines [[Make|Make]]-Targets abbricht, besteht das Verzeichnis, ist entsprechend seiner Änderungszeit aktuell, und ein folgender [[Make|make]] Befehl behandelt ihn wie fertig und okay. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Selbstverständlich wird ein fehlerhaftes Build das Ergebniss sein. Wenn ein Build eines Unterverzeichnisses von '''$(flashprefix)''' in die [[BR|Br]]üche geht, '''dann lösche man [[ES|es]]''', bevor ein anderer [[Make|Make]] Befehl ausgeführt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei &amp;quot;[[ES|es]] funktionierte gestern&amp;quot;-Problemen, ist vermutlich die Umgebung in solch einem Zustand. Ein mehr-oder-weniger drastischer Reinigungsbefehl (siehe oben) ist hierbei oft schneller als eine Problemsuche.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man [[Hilfe|Hilfe]] benötigt, siehe unten!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nach dem [[Flashen|Flashen]]: &amp;quot;Kein System&amp;quot; auf dem [[LCD|LCD]]/Was ist diese &amp;quot;bad magic byte&amp;quot; Zeugs? ===&lt;br /&gt;
Diese Frage kommt hoffentlich nicht... Die kurze Antwort ist: Man weiß [[ES|es]] nicht. Wir [[Wissen|wissen]] [[ES|es]] nicht. Aber, wenn Ihr diesen Artikel so weit gelesen habt, erwartet bitte keine &amp;quot;kurze Antworten&amp;quot;, sondern &amp;quot;gute Antworten&amp;quot;. O.K. Das Thema ist ausführlich hier besprochen worden. &amp;lt;br&amp;gt;&lt;br /&gt;
Kurz gesagt, das [[Image|Image]] &amp;quot;ist&amp;quot; in Ordnung, [[ES|es]] ist nur dass irgendwelche [[Firmware|Firmware]] in der dBox [[ES|es]] zurückweisen wird, weil [[ES|es]] einige &amp;quot;schlechte magische Bytes&amp;quot; auf bestimmten Adressen finden wird. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm [[checkImage]] aus dem [[CVS|CVS]], zu finden im Verzeichnis '''./hostapps/[[CheckImage|checkImage]]''' ermittelt diese &amp;quot;schlechten Bytes&amp;quot;, aber ändert nichts daran, um diese zu beheben. Die Erfahrung zeigt, daß [[Images|Images]], die [[checkImage]] für gut findet, wirklich laufen. [[Cramfs|Cramfs]]-, oder [[Squashfs|squashfs]] [[Images|Images]], worü[[BER|ber]] sich [[CheckImage|checkImage]] beschwert, laufen im allgemeinen nicht, in einigen Ausnahmefällen läufen sie aber doch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Auch bei [[Jffs2|jffs2]]-[[Images|Images]] ist dies manchmal der Fall, dass sich [[checkImage]] beschwert, die [[Images|Images]] laufen, aber eben nicht immer. Mit diesen empirischen Beobachtungen ist man nun sich selbst überlassen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Newmake weiß, wie dieses Programm aufgerufen werden kann, um die erzeugten [[Images|Images]] automatisch zu überprüfen. Die Konfigurationsoption &lt;br /&gt;
 --with-[[CheckImage|checkImage]]=[none,rename,warn] &lt;br /&gt;
wird hierfür verwendet. Falls '''warn''' gewählt ist, wird für jedes [[Image|Image]], das den Test nicht besteht, eine leere Datei erzeugt, am Namen wird ''&amp;quot;_bad&amp;quot;'' angehängt. Wenn '''rename''' gewählt wird, wird das fragliche Imagefile nur umbenannt indem ''&amp;quot;_bad&amp;quot;'' angehängt wird.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[ES|Es]] muss erwähnt werden, daß die &amp;quot;schlechten magischen Bytes&amp;quot; in einem (oder mehreren!) der Partitionsteile sitzt, und werden nicht durch den abschließenden Schritt erzeugt (die *.img1x und/oder *.img2x Files bauen). [[ES|Es]] ist auch möglich, [[CheckImage|checkImage]] auf die Partitionsfiles anzuwenden *.[[Jffs2|jffs2]], *.[[Cramfs|cramfs]]&lt;br /&gt;
*.[[Squashfs|squashfs]]&lt;br /&gt;
*.flfs1x&lt;br /&gt;
*.flfs2x&lt;br /&gt;
Schließlich hat [[CheckImage|checkImage]] eine Debugoption, die nützlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich habe ein Fehler gefunden! ==&lt;br /&gt;
Bugs, Unklarheiten, Verbesserungsvorschläge, etc. der [[Software|Software]] sollten vorzugsweise im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ich benötige [[Hilfe|Hilfe]]! ==&lt;br /&gt;
Supportanfragen können im [http://tuxbox-forum.dreambox-fan.de/forum/viewforum.php?f=7 Cross Development Kit - Forum] des [[Tuxbox|Tuxbox]]-Boards gepostet werden. Postings in deutsch oder englisch sind willkommen. Bitte nicht vergessen, die benutzten Konfigurationsoptionen zu erwähnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Anhang=&lt;br /&gt;
==Einige nützliche [[Customization|Customization]] Script Snippets==&lt;br /&gt;
In diesem Anhang werden einige nützliche [[Customization|Customization]] Scripte gezeigt. Zwei Scripte sind bereits oben gezeigt worden.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Warnung'''&lt;br /&gt;
Auch falls die Beispiele in einigen Fällen benutzbar sind, werden die Scripte als Beispiele, nicht als Lösungen zu den realen Problemen gezeigt. Aus diesem Grund sind die Beispiele hier als Codefragmente, nicht als downloadbare Dateien, veröffentlicht. Bitte nicht verwenden, [[ES|es]] sei denn [[ES|es]] ist ungefährlich und Ihr versteht, wie sie funktionieren. [[ES|Es]] ist grundlegende Script-Erfahrung erfordelich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Games und Languages nuker===&lt;br /&gt;
Dieses Script löscht alle [[Spiele|Spiele]] (definiert als [[Plugins|plugins]] mit type=1 in ihrer Konfigurationsdatei), sowie unerwünschte Sprachfiles ([[Neutrino|Neutrino]] angenommen). Das File sollte von '''root-[[Neutrino|neutrino]]-$[[Filesystem|filesystem]]-local.sh''' aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Nukes all game [[Plugins|plugins]], as well as all [[Locale|locale]] files not listed in LANGUAGES&lt;br /&gt;
 newroot=$1/root-[[Neutrino|neutrino]]-[[Jffs2|jffs2]]&lt;br /&gt;
 LANGUAGES=&amp;quot;deutsch english&amp;quot;&lt;br /&gt;
 for f in $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/*.cfg; do&lt;br /&gt;
    grep 'type=1' $f&amp;gt;/dev/null &amp;amp;&amp;amp; rm -f $newroot/lib/[[Tuxbox|tuxbox]]/[[Plugins|plugins]]/`basename $f .cfg`.*&lt;br /&gt;
 done&lt;br /&gt;
 for f in $newroot/share/[[Tuxbox|tuxbox]]/[[Neutrino|neutrino]]/[[Locale|locale]]/*; do&lt;br /&gt;
    (echo $LANGUAGES | grep -v `basename $f .[[Locale|locale]]` &amp;gt;/dev/null) &amp;amp;&amp;amp; rm -f $f&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /.version anpassen ===&lt;br /&gt;
Euere eigene ''/.version''-File herzustellen (anggezeigt von [[Neutrino|Neutrino]] durch dBox -&amp;gt; Services -&amp;gt; [[Image|Image]]-Version und cdkVcInfo beim Booten) ist sicher ein allgemeiner Wunsch.&lt;br /&gt;
&lt;br /&gt;
*[[Flash|flash]]-version-local.sh&lt;br /&gt;
&lt;br /&gt;
 #/bin/sh&lt;br /&gt;
 USER=$(whoami)&lt;br /&gt;
 if [ $0 = $CDIR/flash-version-local.sh ] ; then&lt;br /&gt;
    outfile=$FLASHDIR/root/.version&lt;br /&gt;
    type=&amp;quot;[[Image|Image]]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    outfile=$TARGETDIR/.version&lt;br /&gt;
    type=&amp;quot;[[Yadd|Yadd]]&amp;quot;&lt;br /&gt;
 fi;&lt;br /&gt;
 echo Creating $outfile ...&lt;br /&gt;
 echo &amp;quot;version=`./mkversion -[[Snapshot|snapshot]] -version 200`&amp;quot;      &amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;creator=$USER&amp;quot;                                     &amp;gt;&amp;gt; $outfile&lt;br /&gt;
 echo &amp;quot;imagename=$USER-$type&amp;quot;                             &amp;gt;&amp;gt; $outfile &lt;br /&gt;
 echo &amp;quot;homepage=[[HTTP|http]]://www.your-website.de&amp;quot;                   &amp;gt;&amp;gt; $outfile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mkversion ===&lt;br /&gt;
Das benannte Script ''mkversion'' erzeugt die etwas kryptische Versionszeichenkette:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 releasetype=3&lt;br /&gt;
 versionnumber=000&lt;br /&gt;
 year=`date +%Y`&lt;br /&gt;
 month=`date +%m`&lt;br /&gt;
 day=`date +%d`&lt;br /&gt;
 hour=`date +%H`&lt;br /&gt;
 minute=`date +%M`&lt;br /&gt;
 while expr $# &amp;gt; 0 ; do&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
     -[[Release|release]]) &lt;br /&gt;
     releasetype=0&lt;br /&gt;
   ;;	&lt;br /&gt;
     -[[Snapshot|snapshot]]) &lt;br /&gt;
     releasetype=1&lt;br /&gt;
   ;;	&lt;br /&gt;
     -internal) &lt;br /&gt;
     releasetype=2&lt;br /&gt;
   ;;&lt;br /&gt;
    -version)&lt;br /&gt;
     versionnumber=$2&lt;br /&gt;
   shift&lt;br /&gt;
   ;;	&lt;br /&gt;
 esac&lt;br /&gt;
 shift&lt;br /&gt;
 done&lt;br /&gt;
 echo $releasetype$versionnumber$year$month$day$hour$minute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Archivierung der [[Images|Images]] ===&lt;br /&gt;
[[ES|Es]] ist eigentlich die Aufgabe des Buildprozesses, flashbare [[Images|Images]] zu erzeugen, und nicht sie zu archivieren. Jedoch kann die [[Customization|Customization]] leicht dazu &amp;quot;missbraucht&amp;quot; werden, um irgendeine Art der Archivierung zu ermöglichen, wie das folgende Beispiel zeigt:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 flashprefix=$1&lt;br /&gt;
 imagefile=`basename $0|sed -e s/-local.sh//`&lt;br /&gt;
 imagefilebase=`echo $imagefile|sed -e s/\.img.x//`&lt;br /&gt;
 extension=`echo $imagefile|sed -e s/[-a-z0-9]*\.//`&lt;br /&gt;
 newfilename=&amp;quot;barf-&amp;quot;$imagefilebase-`date --iso-8601`.$extension&lt;br /&gt;
 echo Copying $flashprefix/$imagefile to $flashprefix/$newfilename...&lt;br /&gt;
 cp $flashprefix/$imagefile $flashprefix/$newfilename&lt;br /&gt;
&lt;br /&gt;
Das Script sollte einen oder mehr der Namen &lt;br /&gt;
 [neutrino, enigma]-[cramfs, squashfs,jffs2].[img1x, img2x]&lt;br /&gt;
haben. [[ES|Es]] benennt die Files entsprechend dem Tagesdatum um.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[http://www.gnu.org/software/make/manual/make.html GNU Make manual]&lt;br /&gt;
*[http://www.gnu.org/software/autoconf/manual/ Autoconf manual]&lt;br /&gt;
*[http://www.gnu.org/software/automake/manual/ Automake manual]&lt;br /&gt;
*[http://sources.redhat.com/autobook/ GNU Autoconf, Automake, and Libtool]&lt;br /&gt;
*[http://www.gnu.org/prep/standards/ GNU Coding standards]&lt;br /&gt;
*[http://cvsbook.red-bean.com/ Open Source Development with CVS, 3rd Edition]&lt;br /&gt;
*Barf's Homepage: [http://bengt-martensson.de/dbox2/ Barfs ][[Newmake]]-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
{{body}}&lt;/div&gt;</summary>
		<author><name>Dixidix</name></author>
	</entry>
</feed>