Fritzbox mipsel binaries auf PC mit qemu ausführen

enrik

Neuer User
Mitglied seit
26 Okt 2004
Beiträge
128
Punkte für Reaktionen
0
Punkte
16
Hi,

wenn es nur darum geht, MIPS binaries auf dem PC in Build-Umgebung laufen zu lassen, kann man das auch prima mit qemu erledigen:

qemu von http://www.qemu.org/qemu-0.9.0-i386.tar.gz installieren oder selbst bauen, falls es nicht zum Linux passt.

Code:
enrik@sulu:~/src/ds26-14.4$ qemu-mipsel -L $PWD/build/modified/filesystem build/modified/filesystem/bin/busybox
BusyBox v1.4.1 (2007-04-30 18:41:19 CEST) multi-call binary
Copyright (C) 1998-2006  Erik Andersen, Rob Landley, and others.
Licensed under GPLv2.  See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, arp, arping, ash, awk, basename, cat, chmod, chown,
        chroot, clear, cmp, cp, crond, crontab, cut, date, dd,
        df, dirname, dmesg, du, echo, egrep, env, ether-wake,
        expr, false, fgrep, find, free, ftpget, ftpput, getopt,
        grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid,
        hostname, httpd, id, ifconfig, ifdown, ifup, init, insmod,
        install, ip, kill, killall, klogd, ln, logger, login,
        logname, logread, losetup, ls, lsmod, makedevs, md5sum,
        mdev, mkdir, mkfifo, mknod, mkswap, modprobe, more, mount,
        mv, nc, netstat, nohup, nslookup, od, passwd, pidof, ping,
        pivot_root, poweroff, printf, ps, pwd, rdate, realpath,
        reboot, reset, rm, rmdir, rmmod, route, run-parts, sed,
        setconsole, setlogcons, sh, sha1sum, sleep, sort, strings,
        stty, swapoff, swapon, sync, sysctl, syslogd, tail, tar,
        tee, telnet, telnetd, test, tftp, time, top, touch, tr,
        traceroute, true, tty, umount, uname, uniq, uptime, usleep,
        uudecode, uuencode, vconfig, vi, wc, wget, which, xargs,
        yes, zcat
 
Und so man sich ein Debian mit echter Emulation (mipsel Kernel, aber kein AR7 kernel):

Code:
$ wget ftp://ftp.de.debian.org/debian/dists/sid/main/installer-mipsel/current/images/qemu/netboot/vmlinux-2.6.18-4-qemu
$ wget ftp://ftp.de.debian.org/debian/dists/sid/main/installer-mipsel/current/images/qemu/netboot/initrd.gz
$ qemu-image create -f qcow mipsel.img 4G
$ qemu-system-mipsel -kernel vmlinux-2.6.18-4-qemu -initrd initrd.gz -hda mipsel.img -append "root=/dev/ram console=ttyS0" -nographic

... und schon findet man sich in einem Debian-Installer wieder.

Das ist dann zwar noch keine native Fritzbox, aber für die meisten cross-configures sollte es reichen. Es könnten u.U. z.B. die speziellen AVM-syscalls fehlen, aber man kann sich ja auch noch einen non-AR7-mipsel generic was weiss ich Kernel aus den AVM-Sourcen bauen, der dann im qemu läuft ...

Edit: weitere Hinweise unter http://www.aurel32.net/info/debian_mips_qemu.php, da aber teilweise für mips (big endian), muss man halt entsprechend anpassen.
 
Zuletzt bearbeitet:
Hallo enrik,

danke für die Anleitung. Werde es damit mal probieren...
 
Ich habe kubuntu 9.10 als System. In den repositorys war qemu schon vorhanden und habe es via Synaptic installiert. Leider listet mir
kein Mipsel-CPU auf. Wie kann ich es integrieren und wie starte ich danach den Emulator?

Gruß Xerro
 
Such mal hier im Forum. Es gibt von spblinux noch ein Thread zu einem um AR7 erweiterten qemu. Wobei das soweit ich weiß nicht wirklich mit UR8 Boxen läuft.

MfG Oliver
 
Fritzbox 7270 emulieren

Ich weiß das Thema ist sehr alt.
Erstmal zu dem was ich will:
Ich brauche eine mipsel Umgebung um Sources für die Fritzbox zu kompilieren, welche kein cross compiling unterstützen (mldonkeyd)


System:
1. freetz build umgebung mit qemu
2. windows 8 mit qemu


Leider sind die Links zu den Anleitungen Down. Ich habe mich soweit selber durchgekämpft:


Qemu in Ubuntu Freetz Buildumgebung (apt-get installation)
In Ubuntu diese Befehle zur installaton abgesetzt:
Code:
sudo apt-get build-dep qemu
sudo apt-get install qemu
sudo apt-get install qemu-system

In Freetz USB-Root aktiviert und kompiliert

Dann diesen Befehl ausprobiert:
Code:
sudo qemu-system-mipsel -L /home/freetz/freetz-7270-cs/build/modified/filesystem/ /home/freetz/freetz-7270-cs/build/modified/filesystem/bin/busybox -M mips -nographic

Fehlermeldung:
Code:
Could not open option rom 'vgabios.bin': No such file or directory
Speicherzugriffsfehler (Speicherabzug geschrieben)

Dann noch mit diesem:
Code:
sudo qemu-system-mipsel -L /home/freetz/freetz-7270-cs/build/modified/filesystem/ /home/freetz/freetz-7270-cs/build/modified/filesystem/bin/busybox -M mips -nographic

Fehlermeldung:
Code:
Could not open option rom 'vgabios.bin': No such file or directory

quemu lief zwischendurch auch einmal mit den selben Parametern, aber ich sehe weder Statusmeldungen, noch kann ich irgendwie auf die virtuelle box zugreifen (es fehlen sicher die korrekten parameter für qemu -nic) Warum es jetzt gar bnicht mehr startet verstehe ich nicht.


Qemu in Ubuntu Freetz Buildumgebung (manuelle installation)
Dann gibt es ja noch die Möglichkeit selber eine VM zu erstellen. Gefunden hier
Leider hat hier schon das ./configure, welches ich um den Parameter --disable-gfx-check erweitert habe einen Fehler hervorgerufen. Aber folgenden Befehl habe ich mithilfe der im Thread angegebenen vmlinux-2.6.18-6-qemu und initrd initrd.gz in der apt-get installation getestet:
Code:
qemu-system-mipsel -M mips -kernel vmlinux-2.6.18-6-qemu -initrd initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic
Der Debian-installer startet auch richtig, aber die Auswahl des Mirrors bleibt in einer Schleife stehen. Ich kann nur immer wieder einen anderen Mirror ausprobieren, oder das Setup abbrechen. Entweder findet der installer gar keine Sources, oder auf manchen Mirrors nur inkompatible.

Ich habe mir aus meiner Fritzbox 7270 auch die flashs exportiert
Code:
./memread 0x1fc00000 4096 >mipsel_bios.bin <- liefert 0kb Datei
./memread 0x10000000 2097152 >flashimage.bin
./memread 0x10000000 4096 >mipsel_bios.bin <- liefert 4kb Datei


Also nochmal meine Fragen:
1. Wie bekomme ich mein Fritzbox 7270 Image in Qemu zumlaufen? Gibt es irgendwo noch eine Anleitung?
2. Welche parameter bräuchte ich damit die Virtuelle Maschine im Netzwerk erreichbar ist (ich verstehe die Parameter -nic -nic tab nicht so ganz)
3. Geht das überhaupt innerhalb der Build umgebung von Freetz, oder sollte ich es lieber mit der Windows Version von qemu testen?
 
Zuletzt bearbeitet:
Mein letzter Stand war, dass Qemu nicht mit den neueren AVM-Kerneln läuft. Und auch die Netzwerkemulation geht nur mit Boxen die keinen Switch haben. Ob sich in den letzten 12 Monaten daran was geändert hat weiß ich nicht. Ich vermute jedoch, dass du direkt auf der Box schneller zum Ziel kommst, als wenn du anfängst mit Qemu zu experimentieren.

Gruß
Oliver

edit: Nachdem ich die Frage nochmal gelesen habe...
Warum emulierst du mit qemu nicht ein davon unterstützes mipsel-Device? Wenn du mldonkey statisch kompilierst sollte es auch auf der FritzBox laufen.
 
Also müsste ich mir ein 7170 Image erstellen und das mal im qemu booten?
Das probier ich jetzt mal aus.

Direkt auf der Box kann ich nicht arbeiten, da dort zu viel läuft. Die einzige Box die zur Verfügung steht hat schon mips und kein mipsel mehr.
 
Nein, du besorgst dir ein Qemu-Mipsel Image für deinen PC und führst das aus.

Gruß
Oliver
 
olistudent schrieb:
Warum emulierst du mit qemu nicht ein davon unterstützes mipsel-Device? Wenn du mldonkey statisch kompilierst sollte es auch auf der FritzBox laufen.

olistudent schrieb:
Nein, du besorgst dir ein Qemu-Mipsel Image für deinen PC und führst das aus.

?? Ich bin verwirrt
qemu-mipsel habe ich auf der Freetz build Umgebung (busybox aus einem 7170 image starten klappt auch) (mir ist auch klar das emulation in emulation Probleme mit sich bringen, oder auch gar nicht laufen kann)
und ich habe es für windows.
Wenn man nur quemu ausführt passiert gar nichts.

- Soll ich busybox irgendwelche Parameter übergeben um damit das ./configure von mldonkey zu starten?, oder was meinst du mit einem unterstützden mipsel-device
Tut mir leid, ich verstehe inzwischen nur noch bahnhof.

So wie ich das momentan verstehe:
1. älteres gcc installieren, da quemu mit 4.x probleme hat
Code:
sudo apt-get update
sudo apt-get install g++-3.4;

2. Qemu installieren
Code:
sudo apt-get build-dep qemu
sudo apt-get install qemu
sudo apt-get install qemu-system;

3. mldonkey cvs auschecken
Code:
cvs -z3 -d:pserver:[email protected]:/sources/mldonkey co -P mldonkey

4. freetz image mit funktion USB-Root erstellen

5. Busybox starten
Code:
qemu-mipsel -L /home/freetz/freetz-7170/build/modified/filesystem/ /home/freetz/freetz-7170/build/modified/filesystem/bin/busybox

6. Busybox irgendwelche parameter übergeben um das configure von mldonkey auszuführen?

6.a
Irgendwie müsste folgendes in einer Mipsel Umgebung nach dem wget ausgeführt werden, für die vmware build Umgebung zu kompilieren hat so funktioniert
Code:
cd mldonkey
chmod 776 configure
./configure --disable-gui --enable-donkeysui --enable-gd --disable-magic
make mlnet.byte.static
cd ..;





Ich bin momentan dabei Debian auf meine 7320 zu installieren, da ich verstanden habe mit einem darauf installierten Debian für die box kompilieren zu können. Dann bin ich zwar in einer Mipsel Umgebung, aber das scheint mir den größten Erfolg zu versprechen. Hauptsache ich lerne wie ich überhaupt auf der fritzbox etwas kompiliere. Leider muss ich mich hier auch irgendwie durchtanken, da auch hier alle Anleitungen die ich bisher fand down sind :-(



Edit:
Für die Debian Installation auf der 7320 fehlen kompatible Files und zwar mbcache.ko und ext2.ko für den kernel 2.6.32.41. Damit komme ich hier auch nicht weiter.
Wenn ich das mldonkey configure auf der fritzbox starte, vermisst er gcc. Gibt es ein kompiliertes gcc für mipsel umgebungen? Das Cross compiling für gcc verstehe ich nicht so ganz. Wenn ich nach sowas im web suche, finde ich nur Anleitungen wie man mit gcc andere programme cross compiled.

Ich probier hier alles mögliche
- Debian auf fritzbox installieren um damit zu kompilieren
- mipsel umgebung emulieren um damit zu kompilieren (hier weiß ich langsam gar nicht mehr was ich da emulieren soll. Busybox, fritzboxImage, oder soll ich mit qemu diret das configure aufrufen?
- auf der fritzbox selber kompilieren (autoconf und gcc müsste erstmal für die box cross compiled werden)

Ich weiß nicht was der Erfolgversprechenste Weg ist um mldonkey mal zu kompilieren.
 
Zuletzt bearbeitet:
Mmmh, sooo schwierig fand ich es nicht mit qemu und einem Mipsel-System?!?

Auf die Schnelle konnte ich in Analogie zu http://www.aurel32.net/info/debian_mips_qemu.php das recht einfach nachvollziehen:

Code:
wget http://ftp.de.debian.org/debian/dists/stable/main/installer-mipsel/current/images/malta/netboot/vmlinux-2.6.32-5-4kc-malta
wget http://ftp.de.debian.org/debian/dists/stable/main/installer-mipsel/current/images/malta/netboot/initrd.gz

qemu-img create -f qcow hda.img 10G

qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -initrd initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic 

# hier die Installation, zusätzlich hatte ich nur "SSH-Server" gewählt, um mich verbinden zu können.
# nach dem Installieren musste ich es abbrechen, weil beim Neustart die Installation wieder starten wollte...
# dann
qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta  -hda hda.img -append "root=/dev/sda1 console=ttyS0" -nographic

Dauert natürlich was, aber nach einigen Stunden hatte ich ein virtuelles Mipsel-System auf Debian-Basis...

Noch einfacher ist es, sich ein fertiges qemu-Image zu laden, z.B. von hier

Wegen deiner eigentlichen Frage habe ich mal Herrn Google befragt, und wurde ziemlich schnell fündig:
Schaue doch mal hier und in den dort genannten Quellen weiter, insbesondere hier, wo es fertige mldonkeys gibt.
 
Für deine Zwecke könnte Aboriginal Linux geeignet sein: http://landley.net/aboriginal/about.html
Aboriginal Linux is a set of tools to build custom virtual machines. It lets you boot virtual PowerPC, ARM, MIPS and other exotic systems on your x86 laptop (using an emulator such as QEMU). These virtual system images provide a simple development environment within which you can compile software and run the result.
Vorher würde ich aber überprüfen, ob das Übersetzen ohne größere Probleme auch mit einem normalen Cross-Compiler funktioniert.
 
@MaxMuster
Ich versuche mal durchzuarbeiten, was Du mir da geschickt hast. Der letzte Befehl sollte die installation der VM starten. Das lief bei mir auch schon, nur wollte der Debian Installer von qemu an der Stelle etwas von den Repositorys ziehen. Egal was ich da auswählte, war entweder down, oder inkompatibel. Ich habe leider kein natives Linux, sondern nur die Build Umgebung von freetz. Irgendwo muss auch noch eine virtuelle suse installation rumdümpeln.

Zum Thema: dauert natürlich ein paar Stunden
Das sowas nicht einfach so runtergeladen und gestartet wird ist mir klar. Wobei ich mir die fertigen qemu images gerne mal anschauen werde.

Die fertigen mldonkey binarys habe ich heute gefunden. Ich hatte danach gar nicht gesucht, weil mir so war als ob es irgendwann einfach keine neuen binarys mehr gab. Kann aber sein, das ich das mit dem fli4f verwechsel, bei dem es ab version 3.x kein mldonkey mehr gibt.
Das Binary für mipsel teste ich grade auf meiner 7320

Wenn das läuft, gehts mir trotzdem noch ums Prinzip, denn ich hab etwas Blut geleckt.
Kompilieren auf der Fritzbox, ich will g*

@roadman17
Leider gibt es bei mldonkey keine Möglichkeit zum cross compiling, darum der ganze Aufwand.
 
@kraftzwerg
Wenn du wirklich auf der Fritzbox kompilieren willst, kannst du mit Freetz eine passende Toolchain bauen (Build binutils and gcc for target). Die bündelst du noch mit libgmp, libmpfr, libmpc und busybox. Dann kannst du in einer Chroot-Umgebung sowohl auf deiner Fritzbox als auch auf einem Qemu-System kompilieren. Bedenke aber, dass dies sehr langsam ist. Ein bisschen beschleunigen kannst du es mit distcc, aber ein normales configure dauert schon ewig.

Die Chroot-Umgebung kannst du auch mit qemu-mips-static ergänzen, so dass du diese auch mit der Hilfe von binfmt_misc auf deinem normalen Linuxsystem verwenden kannst.
Eventuell kannst du den Kompiliervorgang beschleunigen, indem du die Binaries durch native statische Binaries ersetzt. Bei dem Trick mit binfmt_misc musst du aber bedenken, dass /dev, /proc, /sys von deinem normalen Linuxsystem kommen, was unter Umständen zu Fehlern führen kann.

Viel Spaß beim Experimentieren.

Ach ja, hier ist noch eine Makefile für distcc
Code:
$(call PKG_INIT_BIN, 3.1)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.bz2
$(PKG)_SOURCE_MD5:=a1a9d3853df7133669fffec2a9aab9f3
$(PKG)_SITE:=http://distcc.googlecode.com/files/
	
$(PKG)_DIR:=$($(PKG)_SOURCE_DIR)/$(pkg)-$($(PKG)_VERSION)
$(PKG)_BINARY:=$($(PKG)_DIR)/distcc
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/distcc

$(PKG)_CONFIGURE_OPTIONS += --with-included-popt
$(PKG)_CONFIGURE_OPTIONS += --disable-Werror

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
	$(SUBMAKE) -C $(DISTCC_DIR) \
		distcc

$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
	$(INSTALL_BINARY_STRIP)

$(pkg):

$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)

$(pkg)-clean:
	-$(SUBMAKE) -C $(DISTCC_DIR) clean

$(pkg)-uninstall:
	$(RM) $(DISTCC_TARGET_BINARY)

$(PKG_FINISH)
 
@roadman17

Du bist mein Held. Ich depp hab inzwischen schon versucht gcc für freetz zu kompilieren. Dass ich ein gcc direkt über menuconfig in das image einbinden kann, war mir entgangen.

Ich bau mir ein neues Image für meine Box. Das ist denke ich am einfachsten. Wegen der eventuellen Fehler durch mein Linux System muss ich einfach schauen was nach dem kompilieren rauskommt.

Danke vielmals.
 
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.