[Gelöst]: sl-mod 1.3 / mit dropbear, ether-wake, vi, sed, crontab, wget, etc.

han-solo

Mitglied
Mitglied seit
28 Jul 2005
Beiträge
451
Punkte für Reaktionen
0
Punkte
0
VORWORT:
Um der vernachlässigten Fritzbox SL ein wenig per PEP einzuhauchen, hatte ich mir vor einiger Zeit überlegt, wie man die Kiste ein wenig tunen kann und hab einen Weg über einen TFTP-Server genommen. (Anleitung hier: http://www.xobztirf.de/selfsite.php?aktion=Fritzbox SL Tuning)

Danach hab ich versucht die abgespeckte busybox aus der Firmware zu entfernen und durch eine leistungsfähigere zu ersetzen.
Und ausserdem wollte ich noch mehr rausholen und vor allem Dropbear auf die Box kriegen.
Hier findet ihr die Ergebnisse meiner Arbeit.

Hauptfunktionen im sl-mod:

- tftp (put/get)
- wget
- vi
- nvi
- sed
- telnetd (inkl. start/stop skript)
- ether-wake
- crond/crontab
- Virtual-IP
- rule (Portfreigaben per Commandline)
- dropbear (SSH-Server ohne scp, client und dropbearkey)


EDIT: 15.09.2007
Neue Version 1.3 mit dropbear Librarys.
Die benötigte Library libutil-0.9.26.so ist jetzt im Filesystem enthalten.
Dafür hab ich das Keyfile für matrixtunnel und die slmod-info.html rausgeworfen.
Dropbear läuft jetzt also noch stabiler.
Ausserdem hab ich das "rule" Skript gefixt, sodaß beim Entfernen einer Regel keine Leerzeile mehr in der ar7.cfg zurück bleibt.

EDIT: 13.09.2007
Jetzt endlich auch mit dropbear.

EDIT: 11.09.2007
Neue Version 1.2 mit folgenden Zusätzlichen Features

- Crontab im Flash-Speicher (bleibt bei reboot erhalten /var/flash/crontab.cfg)
- /etc/init.d/rc.cron (ein Crontab Deamon, welcher alle 60 Sekunden die crontab erneuert)
- /bin/telnetd.sh (eine kleines Skript, welches den telnetd starten und stoppen kann)
- /bin/rule (Abgewandelte Kurzform von setforw.sh für die SL zum setzen von Portfreigaben per Commandline)
- /sbin/reboot (Pseudo reboot, da das busybox reboot nicht mehr in den Speicher passte)


EDIT: 09.09.2007
Mittlerweile hab ich den slmod verbessert (Version 1.1).

busybox Befehle:
Currently defined functions:
[, [[, ash, basename, busybox, cat, chmod, cp, crond, crontab, date, dirname, dmesg, echo, env, ether-wake,
false, find, free, grep, ifconfig, init, insmod, kill, ln, ls, lsmod, mkdir, mknod, modprobe, more,
mount, mv, netstat, nslookup, pidof, ping, ps, pwd, realpath, rm, rmmod, route, sed, sh, sleep, stty,
sync, tar, telnetd, test, tftp, top, tr, traceroute, true, umount, uname, uptime, vi, wget


Zusätzliches:
/etc/init.d/rc.cron
/bin/rule
/bin/telnetd.sh
/sbin/reboot
/sbin/ar7login
/sbin/dropbear_dss_host_key
/sbin/dropbear_rsa_host_key
/lib/libcrypt-0.9.26.so
Link: libcrypt.so -> libcrypt-0.9.26.so
Link: libcrypt.so.0 -> libcrypt-0.9.26.so
Link: libgcc_s.so.1 -> libcrypt-0.9.26.so
/lib/libutil-0.9.26.so
Link: libutil.so.0 -> libutil-0.9.26.so

Was wurde entfernt:
Webmenü: Hilfe
Webmenü: Assistent
Driver: USB
busybox: killall

Damit man auch dropbear ordentlich laufen lassen kann hab ich die benötigten Librarys, Zertifikate und Keyfiles ins Filesystem eingebaut.
Leider hat die SL zu wenig Speicher für die benötigten Librarys zum lokalen Erzeugen der keys auf der Box. Somit muss man fertige Keys benutzen.
Wenn euch meine Keys zu unsicher sind, dann könnt ihr diese auch gerne selbst erzeugen und im Verzeichnis "tools" vor dem "make" ersetzen.


********* DEBUG.CFG *********
Zusätzliche Features bekommt ihr durch das Erstellen einer debug.cfg (/var/flash/debug.cfg).
Ihr könnt leider nicht alle Module gleichzeitig verwenden. Dies belastet die Box zu sehr.
Bei mir läuft aber dropbear, ether-wake und crontab wunderbar zusammen (telnetd weglassen).

Grunkonfiguration der debug.cfg:
Code:
#!/bin/sh

# Virtuelle Ip-Adresse fuer Portfreigaben setzen
ifconfig lan:1 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up
sleep 3

# Hauptpfade anpassen
export PATH=$PATH:/var/tmp
export LD_LIBRARY_PATH=/var/tmp
cd /var/tmp

Hier für WOL (Wake on Lan) mittels ether-wake:
Code:
# MAC address fuer ether-wake
wolmac="01:23:45:67:89:AB"
# interface to use for WOL
# intf = std  - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"

# einfaches WOL script erzeugen
echo "ether-wake -i ${wolinterface} ${wolmac}" > /var/tmp/startpc
chmod +x startpc

Hier für die Aktivierung von TELNET ohne Passwort
Code:
# Telnet und Cron Daemon starten
telnetd

.. mit Passwort:
Code:
# Telnet und Cron Daemon starten
telnetd -l /sbin/ar7login


Hier für die Aktivierung von SSH (dropbear nachladen) für PASSWD='rercTwQv2k1ML' müsst ihr einen eigenen Passwort HASH einsetzen:
Code:
# Passwort für SSH setzen
cp -p /var/tmp/shadow /var/tmp/shadow.old
PASSWD='rercTwQv2k1ML'
sed -e "/root:/s#^root:[^:]*:#root:$PASSWD:#" /var/tmp/shadow.old > /var/tmp/shadow
rm /var/tmp/shadow.old

# dropbear nachladen
serverurl="mydomain.de"
serverdir="/fritzbox"

# Warten bis die FritzBox den Server erreichen kann
while !(ping $serverurl); do
sleep 5
done

wget http://$serverurl$serverdir/dropbear
chmod +x dropbear
dropbear -p 22 -r /sbin/dropbear_rsa_host_key -d /sbin/dropbear_dss_host_key


Hier zur Verwendung von crontab:
ACHTUNG: Eure cronjobs müsst ihr mit nvi in die /var/flash/crontab.cfg eintragen. Dann bleiben sie fest im Flash-Speicher.
Code:
mkdir -p /var/spool/cron/crontabs
mknod /var/flash/crontab.cfg c 252 129
cat /var/flash/crontab.cfg > /var/spool/cron/crontabs/root
/usr/sbin/crond
/etc/init.d/rc.cron &


Und hier die Anleitung zum Erstellen des sl-mod:
Downloaden und unter Linux oder cygwin entpacken und starten.
Das Skript holt sich die Firmware von AVM und modifiziert sie.

ANLEITUNG:
Code:
cd /
mkdir slmod
cd slmod
tar -xvf slmod_1.1.tar
make
.
.
make clean
make

Im Verzeichnis /slmod findet ihr dann die fertige Firmware: fritz.box_sl.10.03.94.image_slmod1.3

So, also dann mal viel Spaß mit dem sl-mod.

Gruß
Han-Solo
 

Anhänge

  • slmod_1.0.tar
    760 KB · Aufrufe: 44
  • slmod_1.1.tar
    930 KB · Aufrufe: 15
  • slmod_1.2.tar
    940 KB · Aufrufe: 24
  • dropbear_sl.tar
    180 KB · Aufrufe: 88
  • slmod_1.3.tar
    940 KB · Aufrufe: 223
Zuletzt bearbeitet:
Als erste "Spielerei" ;-) :

unter http://www.ip-phone-forum.de/showthread.php?t=120900
gibt es im busybox.image eine Busybox, die nur 574.860 Byte groß ist, aber auch noch libcrypt.so.0 (14.020 Byte) braucht.

Ev. hilft die schon, wenn wir noch etwas zum löschen im Image finden?

Ich denke aber, der bessere Weg wäre, wenn uns "Unwissenden" jemand
erklärt, wie wir eine busybox sauber für die SL compilieren können, um sie dann
in das Image einzubinden.
(das compilieren einer Busybox per DS-Mod hat da schon jemand versucht, nur was macht er dabei falsch?
http://www.ip-phone-forum.de/showthread.php?t=139705 )
 
Zuletzt bearbeitet von einem Moderator:
nsus schrieb:
Als erste "Spielerei" ;-) :
Ich denke aber, der bessere Weg wäre, wenn uns "Unwissenden" jemand
erklärt, wie wir eine busybox sauber für die SL compilieren können, um sie dann
in das Image einzubinden.
(das compilieren einer Busybox per DS-Mod hat da schon jemand versucht, nur was macht er dabei falsch?
http://www.ip-phone-forum.de/showthread.php?t=139705 )

Hallo,

mittlerweile funzt es bei mir, nachzulesen unter der oben angegeben URL...

Das compilieren ist mit dem ds-mod wirklich recht einfach, dabei hat mir das Wiki sehr geholfen!

Grüße :)
 
hm... also bei meinem friboli läuft das ganze so:

Code:
gzip -d lsmod.tgz
tar -xvf lsmod.tar
cd slmod
make
...
kernelsquashfs.raw created
../../../tolls/unsquashfs: /lib/tls/libc.so.6: version 'GLIBC_2.4' not found (required by ../../../tools/unsquashfs)
make: *** [root-fs] Fehler 1

und dann nicht mehr... hilfe ?
 
Hallo milkpirate,

ich vermute du hast auf friboli Kernel 2.6 und unsquashfs braucht Kernel 2.4

Ich habs mit einer vmware gemacht. Hier zu kriegen: http://developer.kde.org/~binner/vmware/

Übrigens habe ich die kleinere busybox mit 572kb mal ausprobiert. Fehlanzeige! Funzt immer noch nicht:
Auch die busybox aus dem ds-mod.0.2.9-p8 (563kb) brachte keinen Erfolg.

Code:
filesystem image size: 1376256 (max: 1310720)
ERROR: filesystem image is 65536 bytes too big

Das filesystem.image wird wohl komprimiert und in 65k blöcke aufgeteilt. Somit reicht es immer noch nicht aus.

@Darksun: Wie gross ist deine busybox? Kannst du die hier mal uppen?

Gruß
HS
 
Zuletzt bearbeitet:
aber warum zur hölle sollte der kram nicht abwärts kompatibel sein ?

also 3 GB is schon n bissel viel...
 
Hallo,

hat hier keiner die Möglichkeit das neu zu kompiliern?

Gruß
HS
 
... ich werde es gleich mal versuchen...

Jörg

EDIT So, mit dem ds-mod p8 habe ich mal per "trial and error" so lange Dinge "rausgemacht", bis es passte. Keine Anhung, ob damit noch "genug" für ein funktionsfähiges Image drin ist. Was ich weggelassen habe und die .config-Datei sind mit drin...
EDIT2 und dann noch ein "Mini-Patch" dazu, die defaults von 1und1 und avm sind gleich, da sollte doch ein Link reichen?!? Im Verzeichnis, das slmod enthält:
Code:
gzip -d slmod.diff.gz
patch -p0 < slmod.diff
 

Anhänge

  • busybox.tar.gz
    193.4 KB · Aufrufe: 31
  • slmod.diff.gz
    235 Bytes · Aufrufe: 16
Zuletzt bearbeitet:
Super, danke! Werd ich ausprobieren....

EDIT: Hab´s gerade mal ausprobiert. Das Image lässt sich schonmal zusammen bauen. Sehr gut!
Jetzt muss es nur noch mit dem Flashen klappen. Ich teste das Ende nächster Woche, dann hab ich erst wieder eine SL Box zum Basteln.


Gruß
HS
 
Zuletzt bearbeitet:
Aber auf jeden Fall vorher mal per FTP drauf spielen, um die grundsätzliche Funktionalität zu testen...

Ansonsten noch mal kurz mein Vorgehen, falls das jemand selbst "nachstellen" will:
ds-mod für Kernel 2.4 laden (ds-0.2.9-p8 ), dort habe ich einfach mal eine FBF ausgewählt (k.A., ob das nötig war), dann ein "make precompiled" (während der Stunden, die das läuft, kann man ein paar schöne andere Dinge tun ;-)), die Busybox dann mit "make busybox-menuconfig" konfiguriert und mit "make busybox-precompiled" gebaut.

Als Ausgangspunkt könnte man ja die .config nehmen, die ich oben gepostet habe, und nach Bedarf Dinge verändern...

Ich werde heute in Urlaub fahren und von daher vielleicht noch "mitdiskutieren", aber nicht mehr "mitbauen" können.

Viel Spaß und Erfolg!

Jörg
 
Hallo MaxMuster,

deine busybox funzt. Allerdings ist eine libary noch nicht eincompiliert.
Beim ausführen von ./busybox kommt folgende Meldung

Code:
./busybox: can't load library 'libcrypt.so.0'

Wenn ich per tftp diese libary nachlade, klappt es wunderbar.

Was tun? Musst man neu compilieren oder kann man das slmod-script patchen, damit die libary eingebaut wird.

EDIT: Ich hab gerade festgestellt, dass vi nicht funktioniert. Wenn man vi aufruft, gelangt man in einen Modus, aus dem man nicht wieder raus kommt.

Gruß
HS
 
Zuletzt bearbeitet:
Hi,

muss ich nochmal schauen (kann ich aber erst in gut einer Woche). Ansonsten könntest du die Box ja "nachbauen" (die Zeit, die das "make-precompiled" dauert kann man ja sinnvoll nutzen).
Ich weiß, dass er irgendwas mit der libcrypto in den Meldungen hatte, weils aber so schnell gehen musste, habe ich die dann kopiert...
Müsste man mal sehen, ob man die dann mit ins Skript reinkopiert, oder die Funktion, die das benötigt, rauslässst.
Beim VI hatte ich ein paar Dinge abgewählt, die meiner Meinung nach "weg könnten". Vielleicht was "Essentielles" mit dabei??

Jörg
 
Hallo,

wenn es dir nichts ausmacht, würde ich gern warten bis du das checken kannst. Wäre echt klasse. Bin selbst gerade im Urlaub aufem Zeltplatz mit UMTS und hab nicht die Möglichkeit dazu. Ausserdem hab ich das noch nie gemacht.

Aber wenn ich zurück bin, versuche ich mich mal damit zu befassen.

Gruß
HS
 
Klar, schaue ich mir dann nochmal an.
han-solo schrieb:
Bin selbst gerade im Urlaub aufem Zeltplatz mit UMTS
Hoffentlich mit besseren Empfangsraten als hier, wo ich nur GPRS habe ;-)

Jörg
 
So, habe mal was neues gebaut. Die Lib ist nun mit drin und wird vom Makefile kopiert (das diff ist zum "original-Makefile", also nicht für das mit obrigem Patch schon gepatchte Makefile). Teste doch mal bitte...

Ich habe nun im vi wieder alle Optionen ausgewählt gelassen (so wie es Standard war). Damit es samt lib ins Image passt, habe ich noch folgendes abgewählt:
Code:
umount
crond, crontab etc
basename
cut
chown
rdate
etherwake

Jörg
 

Anhänge

  • Makefile.diff.gz
    329 Bytes · Aufrufe: 11
  • tools.tar.gz
    188.7 KB · Aufrufe: 17
ok, super! Danke. Werde es ausprobieren.
Aber meinst du man kann noch etwas anderes abwählen, damit man "crond, crontab" und "etherwake" behalten kann?

z.B. touch, poweroff, reboot, sh1sum, md5sum, mkfifo, mknod, arping, ash

Gruß
HS
 
Zuletzt bearbeitet:
So besser?!?

Jörg
 

Anhänge

  • tools.tar.gz
    320.7 KB · Aufrufe: 32
Hallo Jörg,

ich hoffe ich nerve nicht *schäm*, aber aus irgendeinem Grund krieg ich mit deiner busybox den telnetd nicht zum Laufen.

Ausserdem hab ich jetzt mal die orginial busybox mit der des ds-mod verglichen. Hier mal ein Auszug was in der Original enthalten ist.

Code:
Currently defined functions:
        [, ash, basename, busybox, cat, chmod, cp, date, dmesg, echo,
        env, false, fgrep, free, grep, ifconfig, init, insmod, kill, killall,
        ln, ls, lsmod, mkdir, mknod, modprobe, more, mount, mv, netstat,
        nslookup, pidof, ping, ps, pwd, reboot, rm, rmmod, route, sh,
        sleep, sync, tar, test, tftp, touch, tr, true, umount, uname

Was zusätzlich für den slmod benötigt wird ist:

Code:
crond, crontab, dirname, ether-wake, find, ftpget, ftpput, realpath, sed, telnet, telnetd, vi, wget, which

Könntest du also bitte nochmal eine busybox mit allen o.g. Befehlen erstellen? (Hoffe das passt von der Größe)
Danke dir. Ich hab es selbst probiert, bekomme aber immer Fehlermeldungen beim "make busybox-precompiled".
Werde das aber nochmal prüfen. Aber ich muss erst ein neues Linux aufsetzen. Meine VM fasst nicht soviel Plattenplatz für die ganzen downloads.

Gruß
HS
 
Zuletzt bearbeitet:
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.