Samsung SMT-G3010, SMT-G3210, SMT-G3220: rootfs patchen

syncBit

Neuer User
Mitglied seit
5 Feb 2008
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Anleitung zum Erstellen eines eigenen Updates mit geändertem root Filesystem für die Samsung Router.

Voraussetzung: Linux und das Wissen, damit umzugehen.

  1. Offizielle Firmware (V2.03) nehmen und auspacken:
    tar xvf SMT.....
  2. U-Boot header vom rootfs.img abschneiden:
    dd if=rootfs.img of=rootfs bs=64 skip=1
  3. rootfs auspacken:
    sudo unsquashfs-lzma rootfs
    damit wird das gesamte rootfs unter squashfs-root angelegt.
  4. Daten ändern.
    Fürs erste habe ich ein anderes root-password definiert und den Start vom telnetd umgebaut.
    Dateien squashfs-root/etc/passwd und squashfs-root/etc/passwd- ändern (neuen Password-Hash für root)
    Datei squashfs-root/etc/rc.d/rc.bringup_services_start:
    aus if [ -f /configs/etc/telnet_enable ]
    wird if [ ! -f /configs/ect/telnet_disable ]
    Dann ist telnet defaultmäßig an und kann durch anlegen der Datei /configs/etc/telnet_disable abgeschaltet werden.
    Weitere Änderungen sind jetzt nach eigenm Bedarf möglich.
    Und nun wieder alles einpacken:
  5. Squashfs erzeugen:
    sudo mksquashfs-lzma squashfs-root rootfs -be -noappend
  6. U-Boot Image generieren:
    mkimage -T filesystem -n “Amazon rootfs“ -C none -d rootfs rootfs.img
  7. Prüfsumme berechnen:
    sum rootfs.img
  8. Datei versionInfo.status anpassen:
    unbedingt bei ROOTFS_CHECKSUM die richtige Prüfsumme eintragen
    nach Bedarf: SYS_VER und DATE anpassen (Achtung: das Format von SYS_VER wird von der Web-Oberfläche geprüft und muss XX.YY lauten (02.03p1 geht auch, wird beim Update aber nicht angezeigt. 2.03.1 hat er der Router nicht angenommen).
  9. Tar-file packen:
    tar cvf SMTneu.tar *.img uImage versionInfo.status
  10. Und das Ergebnis dann dem Router als Update anbieten. Anschließend hat man einen Router mit V2.03 und funktionierendem Telenet Zugang.

Programme:
mksquashfs-lzma und unsquashfs-lzma stammen von der hier erwähnten Quelle. Man nehme die Programme für squashfs Version 2 und patcht die magic-Number.
mkimage stammt von u-boot-1.0.0.tar.bz2.

Hinweise:
Um mksquashfs für den Router zu nutzen, muss noch die Magic-Number gepatched werden:

in der Datei squashfs_fs.h SQUASHFS_MAGIC und SQUASHFS_MAGIC_SWAP in die von Samsung genutzte Magic-Number ändern:

// Standard (original):
#define SQUASHFS_MAGIC 0x73717368
#define SQUASHFS_MAGIC_SWAP 0x68737173

// Samsung:
#define SQUASHFS_MAGIC 0x73716C7A
#define SQUASHFS_MAGIC_SWAP 0x7A6C7173

Bei dem U-Boot Packet reicht es, mkimage von Hand zu compilieren. Hinweise dazu finden sich weiter hinten in diesem Thread.

--
Rechtliches: Dieser Beitrag steht unter der Creative Commons Namensnennung 3.0 DE Lizenz
 
Zuletzt bearbeitet:
Ich hab dann mal einen installierbaren Tarball fuer den SMT-G3210 gemacht. Ich hab's bei mir getestet, aber Benutzung erfolgt auf eigene Verantwortung.

http://bitflip.de/test/SMT-G3210_V2.03_090308mod.tar

Veraenderungen gegenueber der offiziellen 2.03 Firmware:

- root Passwort "banana"
- Telnet per default aktiviert auf Port 30023
- neuerer dropbear SSH Server incl. scp und dbclient
- dropbear startet beim Booten auf Port 22, wenn das Keyfile /configs/rsakey existiert
- FTP-Zugriff auf das ganze System
- beim Booten wird gecheckt, ob eine Datei /configs/rc.local existiert. Wenn ja, wird sie ausgefuehrt. (Damit kann mal also automatisch Programme starten und beenden oder Befehle ausfuehren, wenn man moechte.)
 
Hallo!

Ich habe ein paar Linux-Skripte für den SMT-G3210 geschrieben. Ob sie auch für die anderen Modelle funktionieren kann ich nicht sagen. Verwendung auf eigene Gefahr!!!

Die Skripte sind zum Auspacken und Erstellen der Firmware-tar-Datei und für die .IAD Konfigurationsdateien. Die IAD-Dateien funktionieren aber nur mit der Firmware v2.02

Samsung hat anscheinend das Format der .IAD-Datei mit Firmware 2.03 geändert. Hat jemand herausgefunden wie sie sich jetzt entpacken lässt?

Jeder ist herzlich eingeladen die Skripte zu verbessen und zu erweitern.

Er werden noch folgende Programme benötigt: mksquashfs-lzma, unsquashfs-lzma und mkimage.
Die Quellen dazu sind weiter oben im Thread verlinkt.
 

Anhänge

  • SMTtools-v0.1.tar.gz
    1.4 KB · Aufrufe: 233
@SyncBit

Vielen Dank....

Geht bestens und hat mir viel Arbeit erspart.

Bilde eigentlich nur ich mir ein, dass es beim Telefonieren die Gegenseite ein leises echo von sich selber hört?
 
Jungs könnt ihr da nicht die Squashfs von einer Dbox benutzen? Linux ist Linux.. und da gibt es bessere Tools im ein Image zu verwalten und umzuschreiben.
 
Can't find a SQUASHFS superblock on rootfs

Halli hallo,

ich wollte den Root System ändern:

SMT-G3010_V2.03_250208.tar

dd if=rootfs.img of=rootfs bs=64 skip=1

sudo firmware_mod_kit/trunk/src/squashfs-3.0/unsquashfs-lzma rootfs
Can't find a SQUASHFS superblock on rootfs

sudo firmware_mod_kit/trunk/src/squashfs-2.1-r2/unsquashfs-lzma rootfs
Can't find a SQUASHFS superblock on rootfs

unsquashfs-lzma habe ich vom
svn checkout svn://svn.berlios.de/firmwaremodkit/trunk
herunterladen.

Was jetzt??

Hat jemand probiert, NFS oder Samba auf dem Router zum Laufen zu bringen?


Danke
Jiri
 
Hallo,

sudo firmware_mod_kit/trunk/src/squashfs-3.0/unsquashfs-lzma rootfs
Can't find a SQUASHFS superblock on rootfs

sudo firmware_mod_kit/trunk/src/squashfs-2.1-r2/unsquashfs-lzma rootfs
Can't find a SQUASHFS superblock on rootfs

unsquashfs-lzma habe ich vom
svn checkout svn://svn.berlios.de/firmwaremodkit/trunk
herunterladen.

Was jetzt??

da hast du den kleinen, zugegebenermaßen für Neueinsteiger in das Thema Samsung patchen unverständlichen Hinweis "Man nehme die Programme für squashfs Version 2 und patcht die magic-Number." nicht beachtet. ;)

Hinweise, was damit gemeint sein könnte findest du hier.

Aber um es nicht zu spannend zu machen:

in der Datei squashfs_fs.h SQUASHFS_MAGIC und SQUASHFS_MAGIC_SWAP in die von Samsung genutzte Magic-Number ändern:

// Standard (original):
#define SQUASHFS_MAGIC 0x73717368
#define SQUASHFS_MAGIC_SWAP 0x68737173

// Samsung:
#define SQUASHFS_MAGIC 0x73716C7A
#define SQUASHFS_MAGIC_SWAP 0x7A6C7173

dann sollte es funktionieren.
 
u-boot compiling

Na, es ist wirklich Hexerei. Es hat funktioniert:cool: Danke!! :groesste:


Jetzt bin ich beim u-boot-1.0.0 compiling.

After installing the
sources you must configure U-Boot for one specific board type. This
is done by typing:

make NAME_config

where "NAME_config" is the name of one of the existing
configurations;


Was sollte ich nehmen?

Übrigens, gibt es für das Board ein C-compiler (cross compiling)?

Danke!
Jiri
 
[*]U-Boot Image generieren:
mkimage -T filesystem -n “Amazon rootfs“ -C none -d rootfs rootfs.img

Hallole,
bis dahin bin ich nun auch gekommen, aber wie muss das U-Boot-Paket compiliert werden, also gleiche Frage wie "jiri.hladky" ...

Leider erschliesst sich mir aus der Doku nicht, welches
Code:
make xxxx_config
ich ausführen sollte.

Dankbar für jeden Hinweis!
 
Also...

eigentlich müssten die für das compilieren des U-Boot Paketes notwendigen Informationen und Einstellungen irgendwo in den von Samsung bereitgestellen Source-Files zu finden sein. Bin bisher aber noch nicht dazu gekommen, da mal nachzuschauen. Zum Zeitpunkt des Ursprungspostings dieses Threads gab es die auch noch gar nicht.

Es ist auch nicht erforderlich, das gesamt U-Boot Pakte zu comiplieren, da wir ja gar keinen Bootloader bauen wollen sonderen nur das mkimage brauchen.

Ich habe eben mal in der history meiner shell gewühlt, um zu schauen was ich damals gemacht habe. Sieht nach ziemlich vielen Fehlversuchen aus :)

Aber versucht doch mal folgendes:

Im Unterverzeichnis tools des U-Boot:

gcc crc32.c -I../include -c
gcc mkimage.c crc32.o -I../include -o mkimage

Alle Angaben wie üblich ohne Gewähr.

Viel Erfolg
 
Aber versucht doch mal folgendes:

Im Unterverzeichnis tools des U-Boot:

gcc crc32.c -I../include -c
gcc mkimage.c crc32.o -I../include -o mkimage

Hallo,
danke für deinen Tipp! Mir war auch klar dass man nicht das ganze Paket braucht, aber auf die Idee, sich vom mkimage durch zu hangeln bin ich nicht gekommen :)

Jedenfalls wenn du deine Angaben geringfügug modifizierst, dann passt es:

Code:
1. cd ...../u-boot-1.0.0/lib_generic
2. gcc crc32.c -I../include -c
3. cd ...../u-boot-1.0.0/tools
4. gcc mkimage.c ../lib_generic/crc32.o -I../include -o mkimage

... jedenfalls hat es bei mir so geklappt!

Danke!
 
Nachdem ich jetzt einige Anfragen hatte, hab ich einige kleine Veraenderungen an meinem oben beschriebenen Image vorgenommen. Die Konfigurationsdateien /etc/passwd, /etc/proftpd.conf und /etc/thttpd/thttpd.conf sind nun Symlinks nach /configs/etc. Dadurch wird es einfacher, mit diesen Diensten rumzuspielen. Beim Booten wird gecheckt, ob diese Dateien unter /configs/etc/ existieren, und wenn nicht, werden die Standardkonfigurationsdateien dort hin kopiert.


http://bitflip.de/test/SMT-G3210_V2.03_120508mod.tar

Hab's bei mir kurz getestet, aber ist inoffiziell und unsupported, etc., blabla. Und wenn eure Katze Durchfall bekommt oder der Fernseher ploetzlich nen Gruenstich hat, gebt mir nicht die Schuld. :)
 
Hallo,

aber einen alternativen VoIP Anbieter kann man damit nicht aktivieren, oder?
Denn genau das ist doch das primäre Problem mit diesen sch.... SamsungBoxen!

Gruss

Sounddiver
 
aber einen alternativen VoIP Anbieter kann man damit nicht aktivieren, oder? Denn genau das ist doch das primäre Problem mit diesen sch.... SamsungBoxen!

Das ist inzwischen das primaere Problem, nachdem wir die anderen Probleme geloest haben. ;)

Aber vielleicht sollten wir dazu nochmal einen eigenen Forschungsthread aufmachen. Es gibt zumindest Ansatzpunkte (man kann einen versteckten Menuepunkt fuer andere Anbieter aktivieren), und ich wuerde nicht ausschliessen, dass da noch was geht. Ich selbst hab keine alternativen VOIP-Provider, deshalb ist mein Forschungsinteresse da nicht so gross. Aber vielleicht sollten wir nochmal zusammentragen, was wir haben...
 
Ja, finde ich klasse...
Würdest du so freundlich sein und einen solchen Thread eröffnen? :)
Ich klinke mich dann gerne wieder mit ein... (im Rahmen meiner begrenzten Möglichkeiten)

Danke

Sounddiver
 
hey
leider kenne ich mich nicht so gut mit der ganzen software aus
was ich nur gerene bei meinem samsung smt-g3010 (firmware V02.03) machen würde, ist ein kleines programm besitzen was den router neu mit dem internet verbindet also dass ich eine neue ip habe
geht sowas und wenn ja wie?
wäre dankbar für eine antwort
mfg marqie
 
Hab's bei mir kurz getestet, aber ist inoffiziell und unsupported, etc., blabla. Und wenn eure Katze Durchfall bekommt oder der Fernseher ploetzlich nen Gruenstich hat, gebt mir nicht die Schuld. :)

das updaten ging ohne probleme, schnell und schmerzlos.
ich komme auch an telnet auf dem port 30023 ran, aber das root-passwort ist nicht wie erwartet banana.
die /etc/passwd sagt mir $1$$CoERg7ynjYLsj2j4glJ34. - also admin...
auch das klappt nicht..
hat jemand rat?
 
ich komme auch an telnet auf dem port 30023 ran, aber das root-passwort ist nicht wie erwartet banana.
Die /etc/passwd siehst du ueber FTP? Kann es sein, dass bei dir das Verzeichnis /configs/etc/ noch nicht existiert? IIRC gab's das in der 1.XX Firmware noch nicht, und ich checke die Existenz des Verzeichnisses derzeit nicht; sollte ich wohl tun... Wenn's daran liegt, sollte es aber mit dem Image aus Post2 in diesem Thread funktionieren.

PM'e mich mal mit mehr Infos, dann muessen wir hier den Thread nicht zumuellen...
 
Hallo,
danke für deinen Tipp! Mir war auch klar dass man nicht das ganze Paket braucht, aber auf die Idee, sich vom mkimage durch zu hangeln bin ich nicht gekommen :)

Jedenfalls wenn du deine Angaben geringfügug modifizierst, dann passt es:

Code:
1. cd ...../u-boot-1.0.0/lib_generic
2. gcc crc32.c -I../include -c
3. cd ...../u-boot-1.0.0/tools
4. gcc mkimage.c ../lib_generic/crc32.o -I../include -o mkimage

... jedenfalls hat es bei mir so geklappt!

Danke!


Hallo,
ich habe es probiert, aber ohne Erfolg:

Code:
gcc crc32.c -I../include -c
In file included from crc32.c:12:
../include/common.h:35:20: error: config.h: No such file or directory
In file included from ../include/common.h:37,
                 from crc32.c:12:
../include/linux/types.h:14: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘dev_t’
In file included from ../include/common.h:80,
                 from crc32.c:12:
../include/flash.h:36: error: ‘CFG_MAX_FLASH_SECT’ undeclared here (not in a function)
../include/common.h:93:64: error: asm/u-boot.h: No such file or directory
../include/common.h:94:74: error: asm/global_data.h: No such file or directory
In file included from crc32.c:12:
../include/common.h:157: error: expected ‘)’ before ‘*’ token
../include/common.h:308: error: expected declaration specifiers or ‘...’ before ‘gd_t’
../include/common.h:476: warning: conflicting types for built-in function ‘puts’
../include/common.h:477: warning: conflicting types for built-in function ‘printf’
../include/common.h:478: warning: conflicting types for built-in function ‘vprintf’
../include/common.h:494: warning: conflicting types for built-in function ‘fprintf’
../include/common.h:495: warning: conflicting types for built-in function ‘fputs’
../include/common.h:496: warning: conflicting types for built-in function ‘fputc’



Ich habe dann probiert:
Code:
cd ..../u-boot-1.0.0
MAKEALL
cd lib_generic/
gcc crc32.c -I../include -c

Es hat geklappt - allerdings mit vielen warnings:
Code:
In file included from ../include/common.h:38,
                 from crc32.c:12:
../include/linux/string.h:15: warning: conflicting types for built-in function ‘strspn’
In file included from ../include/linux/string.h:21,
                 from ../include/common.h:38,
                 from crc32.c:12:
../include/asm/string.h:17: warning: conflicting types for built-in function ‘strncasecmp’
../include/asm/string.h:19: warning: conflicting types for built-in function ‘strncpy’
../include/asm/string.h:20: warning: conflicting types for built-in function ‘strlen’
../include/asm/string.h:23: warning: conflicting types for built-in function ‘memset’
../include/asm/string.h:24: warning: conflicting types for built-in function ‘memcpy’
../include/asm/string.h:25: warning: conflicting types for built-in function ‘memmove’
../include/asm/string.h:26: warning: conflicting types for built-in function ‘memcmp’
In file included from ../include/common.h:38,
                 from crc32.c:12:
../include/linux/string.h:33: warning: conflicting types for built-in function ‘strncat’
../include/linux/string.h:39: warning: conflicting types for built-in function ‘strncmp’
In file included from crc32.c:12:
../include/common.h:476: warning: conflicting types for built-in function ‘puts’
../include/common.h:477: warning: conflicting types for built-in function ‘printf’
../include/common.h:478: warning: conflicting types for built-in function ‘vprintf’
../include/common.h:494: warning: conflicting types for built-in function ‘fprintf’
../include/common.h:495: warning: conflicting types for built-in function ‘fputs’
../include/common.h:496: warning: conflicting types for built-in function ‘fputc’
:confused:
War es bei Ihnen auch so?

Dann schon ohne Probleme:
Code:
cd ../tools/
gcc mkimage.c ../lib_generic/crc32.o -I../include -o mkimage

Ist es so richtig? Kann ich die Warnings ignorieren? :spocht:

Danke!
Jiri
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.