.titleBar { margin-bottom: 5px!important; }

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

Dieses Thema im Forum "Freenet VoIP" wurde erstellt von syncBit, 8 März 2008.

  1. syncBit

    syncBit Neuer User

    Registriert seit:
    5 Feb. 2008
    Beiträge:
    23
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 syncBit, 8 März 2008
    Zuletzt bearbeitet: 23 Sep. 2008
    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
     
  2. xor16rox

    xor16rox Neuer User

    Registriert seit:
    4 Jan. 2008
    Beiträge:
    96
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.)
     
  3. chk2k2

    chk2k2 Neuer User

    Registriert seit:
    7 März 2008
    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    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:

  4. xor16rox

    xor16rox Neuer User

    Registriert seit:
    4 Jan. 2008
    Beiträge:
    96
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hier werden Sie geholfen.
     
  5. uttrichp

    uttrichp Neuer User

    Registriert seit:
    14 Mai 2007
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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?
     
  6. $80

    $80 Guest

    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.
     
  7. jiri.hladky

    jiri.hladky Neuer User

    Registriert seit:
    24 Apr. 2008
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. syncBit

    syncBit Neuer User

    Registriert seit:
    5 Feb. 2008
    Beiträge:
    23
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    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.
     
  9. jiri.hladky

    jiri.hladky Neuer User

    Registriert seit:
    24 Apr. 2008
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    u-boot compiling

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



    Was sollte ich nehmen?

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

    Danke!
    Jiri
     
  10. Joergle

    Joergle Neuer User

    Registriert seit:
    16 Dez. 2007
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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!
     
  11. syncBit

    syncBit Neuer User

    Registriert seit:
    5 Feb. 2008
    Beiträge:
    23
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  12. Joergle

    Joergle Neuer User

    Registriert seit:
    16 Dez. 2007
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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!
     
  13. xor16rox

    xor16rox Neuer User

    Registriert seit:
    4 Jan. 2008
    Beiträge:
    96
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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. :)
     
  14. Sounddiver

    Sounddiver Neuer User

    Registriert seit:
    1 Jan. 2005
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  15. xor16rox

    xor16rox Neuer User

    Registriert seit:
    4 Jan. 2008
    Beiträge:
    96
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  16. Sounddiver

    Sounddiver Neuer User

    Registriert seit:
    1 Jan. 2005
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  17. marqie

    marqie Neuer User

    Registriert seit:
    10 Feb. 2008
    Beiträge:
    4
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  18. v2px

    v2px Neuer User

    Registriert seit:
    22 Mai 2008
    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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?
     
  19. xor16rox

    xor16rox Neuer User

    Registriert seit:
    4 Jan. 2008
    Beiträge:
    96
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  20. jiri.hladky

    jiri.hladky Neuer User

    Registriert seit:
    24 Apr. 2008
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0

    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