Nachdem wir unser Root-Filesystem der Firmware angepasst haben, muss es nun wieder gepackt werden. Ich gehe dabei davon aus, dass die gleiche Strucktur, die nach dem zuvor beschriebenen Entpacken entstanden war, weiter vorhanden ist. Das Packen soll so erfolgen, das unsere gemodete Strucktur komplett zur weiteren Bearbeitung erhalten bleibt.
Wir befinden uns in unserem Stammverzeichnis Samsung-SMT-Depackt-FW. Zuerst erstellen wir eine Kopie. unserer rc.conf mit
cp ./depacked-3-rc.conf.gz/rc.conf ./temp-work/rc.conf
Die Kopie erfolgt in temp-work, da es den Namen rc.conf im Ziel schon gibt. Danach Packen wir sie mit
gzip -v ./temp-work/rc.conf
und verschieben sie mit
mv -T ./temp-work/rc.conf.gz ./depacked-1-FileSystem/etc/rc.conf.gz
an ihr Ziel
Einfach mit
tar czvf "./depacked-1-FileSystem/usr/default_db/default_db.tgz" -C "./depacked-2-default_db.tgz" configs
erstellen.
Dieser Schritt ist notwendig, damit die Box später die Firmware akzeptiert. Später erfolgt noch ein weiterer Schritt. Die Modifikation kann z.B. unter WinSCP über „Bearbeiten“ im Kontexmenü erfolgen. In den Dataien
depacked-1-FileSystem/etc/versionInfo.status
und
temp-work/versionInfo.status
müssen jeweils Datum und der Datunsanteil des Firmwarenamens angepasst werden. Die Zeile die das Datum enthält beginnt mit DATE=. Das Format ist (JJ für das Jahr , MM für den Monat TT für den Tag alles zweistellig)
DATE=JJ.MM.TT
Die Zeile die dem Firmwarenamen enthält beginnt mit SYS_FILENAME=. Format wie bei DATE nur ohne Punkte und in umgekehrter Folge.
SYS_FILENAME=SMT-G3210_V3.02_TTMMJJ.tar
Nun erstellen wir wieder das gepackte Filesystem in stript-rootfs.img mit
mksquashfs-lzma ./depacked-1-FileSystem ./temp-work/stript-rootfs.img -be -noappend
und löschen wieder default_db.tgz und rc.conf.gz mit
rm -f ./depacked-1-FileSystem/usr/default_db/default_db.tgz
rm -f ./depacked-1-FileSystem/etc/rc.conf.gz
Wir legen dabei noch gleich ein Zielverzeichnis für unsere neue Firmware an.
mkdir ./neue-Firmware
Zuerst wechsel wir wieder in unser temp-work Verzeichnis.
cd ./temp-work
dann fügen wir den für u-boot nötigen Hader wieder zu
mkimage -T filesystem -n "Amazon rootfs" -C none -d stript-rootfs.img rootfs.img
und löschen wieder das nicht mehr benötigte stript-rootfs.img mit
rm -f ./stript-rootfs.img
Dies ist der zweite Schritt, damit die Box später die Firmware akzeptiert. Die Modifikation kann ebenfalls z.B. unter WinSCP über „Bearbeiten“ im Kontexmenü erfolgen. In der Datai
temp-work/versionInfo.status
muss in der Zeile die mit ROOTFS_CHECKSUM= beginnt die neue 5-Stellige Checksumme unseres eben erstellten rootfs.img eingetragen werden. Die Checksumme ist die erste Zifferngruppe die man erhällt, wenn man
sum rootfs.img
aufruft.
Zuletzt erstellen wir wieder das tar-Archiv, mit unserem zuvor in der versionInfo.status in der Zeile SYS_FILENAME= bekanntgegebenen Firmwarenamen. Im Beispiel SMT-G3210_V3.02_TTMMJJ.tar mit
tar cfv ../neue-Firmware/SMT-G3210_V3.02_TTMMJJ.tar u-boot.img firmware.img rootfs.img uImage versionInfo.status
um bei weiteren Durchgängen Probleme zu vermeiden löschen wir noch unser rootfs.img mit
rm -f rootfs.img
Unsere Firmware liegt nun in unserem Verzeichnis neue-Firmware und kann z.B. von WinSCP aus per Drag-and-drop auf das Windowsdesktop gezogen werden. Die Einspielung erfolgt dann über das gewöhnliche Webinterface des Samsung SMT.