Das Prinzip ist zunächst eigentlich immer das gleiche wie bei den anderen Boxen, wobei ich allerdings das alte perl-Script verwende, um aus den 3 Partitionen (kernel/root/var) eine einzige zusammenzubauen ("miniFLASH.img" bei mir), so wie ich es auch bei der UFS910, AV700/0 verwende. Das Script habe ich dabei nochmal etwas erweitert, damit ich auch bei evtl. Kernelverschiebungen (Berechnungs)Fehler und den aktuellen Status der Partitionen (Größe/Offset im Kernel-Setup) gemeldet bekomme. Der Vorteil der Methode ist, daß man auch alle 3 Teile ggf. separat flashen kann aus Neutrino (ist ja normaler NOR bei den Boxen), da meist nur root und nur gelegentlich kernel oder var aktualisiert werden müssen. Var könnte man aber auch, so wie es bei der DBox2 gemacht wurde, innerhalb von Neutrino aktualisieren per tar.gz, ohne daß unbedingt gleich alles neu eingestellt werden müsste - Neutrino kann es ohne *pkg oder sonstigen "Hilfsmitteln".

Je nach Boxhersteller werden bei diesem Typ auch die folgenden Daten benötigt: vendor_id, product_id, hw_model und hw_version sowie die Partition der Bootargs (mtd1 bei Vizyon820HD) - was mich aber am meisten ärgert, da so alle Bootargs wieder verstellt werden und auch die echte MAC verloren geht. Wer also mehr als nur eine Box hat, muß das erst wieder mühsam ändern. Aber ohne die Partition flasht die Box anscheinend leider nicht.
Kurz zusammengefasst brauchen wir also 4 Dateien (kernel/root/var/bootargs) und einige Boxspezifische Angaben um ein flashbares Image zu erstellen.
Fehlen also noch die 4 id's wie oben erwähnt damit es losgehen kann, für die Vizyon820HD benutze ich:
vendor_id: 0x00444753
product_id: 0x6c6f6f6b
hw_model: 0x00053000
hw_version: 0x00010000
Diese Daten dürften auch der Cuberevo Mini2 und IpBox910 entsprechen.
Erstellen der 3 Partionen als *.img
Kernel
Nun, das Kernel liegt nach dem bauen bereits fertig vor, es muß nichts mehr daran verändert werden und kann somit direkt verwendet und braucht nur noch umkopiert werden werden. Als Dateiname nutze ich kernel.img im folgenden.
Root
Alles was zum Root gehört ggf. umkopieren in ein separates Verzeichnis und dann als Squash (nur lesend) verpacken:
mksquashfs /dein_root/ /image_verzeichnis_wo_auch_kernel_schon_liegt/root.img -noappend -noI -always-use-fragments -comp gzip
Anmerkung: Anstelle von gzip kann auch lzma verwendet werden wenn im Kernel aktiviert. Das nutze ich aber persönlich nicht mehr (bei keiner Box), da lzma die Box nur künstlich verlangsamt, auch wenn das Image dann kleiner wird. Daher ist auch das Kernel bei mir gzip gepackt.
Var
Nun alles was in den beschreibbaren Bereich gehört ggf. umkopieren in ein separates Verzeichnis und als jffs2 (beschreibbar) verpacken:
mkjffs2 -e 0x20000 --pad=0xA00000 -r /dein_var/ -o /image_verzeichnis_wo_auch_kernel_und_root_schon_liegt/var.img
Diese Methode setzt vorraus, daß das Image natürlich schon für den Flash korrekt vorbereitet ist (mounten von var in rcS und überblenden durch neues /etc/ usw.).
Nun haben wir also unsere 3 Dateien und müssen die nur noch zusammensetzen zu einer großen. Da einfaches zusammenkopieren nicht funktioniert, weil lediglich var bereits die korrekte Partitionsgröße hat, nehmen wir das perl-Script, welches dann auch kernel und root entsprechend anpasst sozusagen. Der Aufruf dazu:
flashmanage.pl -i /image_verzeichnis_wo_die_3_schon_liegen/part234.img -o build --part kernel=/image_verzeichnis_wo_kernel.img_liegt/kernel.img --part root=/image_verzeichnis_wo_root.img_liegt/root.img --part var=/image_verzeichnis_wo_var.img_liegt/var.img
Damit hätten wir es fast geschafft, alle 3 Teile wurden zusammengebaut und liegen uns nun als part234.img vor. Bei den anderen Boxen wären wir fertig, hier jedoch muß noch etwas gemacht, nämlich mtd1 (Bootargs-Partition) hinzugefügt werden. Das erledigen wir einfach mit cat:
cat /image_verzeichnis_wo_die_mtd1.img_liegt/mtd1.img /image_verzeichnis_wo_die_part234.img_liegt/part234.img > /image_verzeichnis_wo_die_part234.img_liegt/part1234.img
Und zum Schluß, damit das Image auch von der Box erkannt wird benötigen wir ein Programm namens mkdnimg:
mkdnimg -make usbimg -vendor_id 0x00444753 -product_id 0x6c6f6f6b -hw_model 0x00053000 -hw_version 0x00010000 -start_addr 0xa0040000 -erase_size 0x01fc0000 -image_name all_noboot -input /image_verzeichnis_wo_die_part1234.img_liegt/part1234.img -output /image_verzeichnis_wo_die_part1234.img_liegt/usb_update.img
Fertig, die usb_update.img ist dann vom Stick (FAT16) flashfähig. Die Datei part1234.img kann man dann löschen, da für keine weiteren Zwecke mehr notwendig. kernel.img, root.img, var.img und part234.img können mit Neutrino selbst geflasht werden wenn man will (geht schneller als die Stick-Methode) und kann man sichern - andernfalls, falls nicht gewünscht, auch diese einfach löschen.
Nunja, ich hoffe das war so halbwegs verständlich - bin nicht so der Doku-Schreiber.
