Freetz MOD: Probleme beim Kompilieren von make 3.81

Soweit ich weiss, kann man "nur" den Switch nicht emulieren. So zumindest glaube ich das verstanden zu haben.
 
qemu

hi....

also in dem von mir genannten link (oben) wird darauf eingegangen, wie man es einer qemu emulierten vm ermöglicht nach "außen" hin eine netzwerkverbindung zu erstellen.....funktioniert bei mir auch tadellos.....habe über ein virtuelles netzwerkinterface und einer brücke direkte verbindung zwischen meinen laptop und der qemu-vm....
mit NFS wird es aber ein wenig schwieriger....qemu verwendet eine eigens dafür gebaute initram-disk (siehe ebenfalls link im post oben).....sprich auch einen eigenen kernel....für NFS benötigt man aber auch das NFS-modul, welches nicht fest einkompiliert wurde und aufgrund des fehlens aller module für diese spezielle kernel-version ist es nicht so ohne weiteres möglich das entsprechende modul nachzuladen...aus diesem grund habe ich bisher keinen nfs-mount mit der qemu-vm hinbekommen....man kann aber auf der qemu-vm einen ssh-server per apt-get nachinstallieren und schon hat man per scp oder sogar graphisch per sftp (gftp kann ssh2, sprich auch sftp) zugriff auf die qemu-vm....so mache ich es im moment.....danach verschiebe ich die binarys auf FB per FTP um diese dort zu testen.....ev. gibt es elegantere wege die daten direkt auf die FB aus der vm zu verschieben.....jedoch ist dies für mich ausreichend...

gruß
Kontr-Olli
 
Ich weiß schon, dass NFS nur ein Dateisystem-Mount ist. Es ist schon klar, dass man damit nicht was direkt ausführen kann. Was aber evtl. gehen könnte und das könnte man dann z.B. in make-File durekt einbauen wäre Folgendes:
1. Source-Dateien liegen unter qemu und werden dort direkt editiert.
2. Man führt make von der Fritzbox aus.
3. make-Skript baut eine Verbindung zu qemu per ssh und führt dort ein make aus, sodass es auf dem Rechner mit qemu läuft. Durch geschicktes pipe-n der Ausgabe kriegt man das bestimmt so hin, dass man auf der Box die Ausgaben von make sieht.
4. Am Ende des make-Skriptes werden die Binaries per scp automatisch auf die Box übertragen.
Also praktisch das Selbe, was hier vorgeschlagen wurde, nur nicht per Hand, sondern automatisiert.

Alternativ könnte man sonst auch die Aufgaben teilen: make auf der Box und das eigentliche Compilieren (gcc) unter qemu. Dann legt man auf der Box einen Parser-Skript für gcc. Dieser Parser nimmt die Parameter von gcc entgegen, schaufelt die Source-Dateien (aus Parameterliste) zu qemu, veranlast das Compilieren unter qemu über ssh und abschließend schaufelt die Binaries zurück zur Box per scp. Somit würde beim Benutzer auf der Box den Eindruck entstehen, er arbeite auf der Box direkt.

Aber das alles sind nur Visionen.

MfG
 
3. make-Skript baut eine Verbindung zu qemu per ssh und führt dort ein make aus, sodass es auf dem Rechner mit qemu läuft. Durch geschicktes pipe-n der Ausgabe kriegt man das bestimmt so hin, dass man auf der Box die Ausgaben von make sieht.

Warum diese Vorliebe dafür, das Make auf der Box auszuführen statt in qemu?
Das Make-Skript, das nur eine SSH-Verbindung zu qemu Box aufbaut, ist relativ einfach, der Nutzen aber noch geringer.
Da Du vermutlich nicht einen Bildschirm direkt an die Box angeschlossen hast, bringt die Ausgabe an die Box auch nicht viel. Und statt Putty->Box->Qemu kann man auch gleich Putty->Qemu verwenden.
Auch der Bedarf von GNU Make an Speicher und CPU bei größeren Projekten ist nicht zu unterschätzen.

Mit einem gemeinsam genutzten NFS-Speicher hat man das Problem des Kopierens gar nicht mehr. Ansonsten rufst Du in qemu etwas in der Art "make && scp -p XXX box:/var/tmp" auf, dann hast Du mit einem Kommando das Make aufgerufen und das Ergebnis auf die Box kopiert.
 
Die Hauptmotivation dazu war, dass man so ein kleines Programmchen "Hallo Welt!" mal direkt auf der Box mit "make" oder mit "gcc" übersetzen könnte und direkt starten könnte, so wie es halt in der normalen Linuxwelt üblich ist. Vermutlich wird es sogar mit einem kleinen Programmchen gehen. Firmware oder einzelne Pakete damit zu kompilieren, das kann man, denke ich, wegen der beschränkten Box-Leistung vergessen.
MfG
Meine Motivation war, Programme, die sich einfach nicht cross-kompilieren lassen ("error: could not run test program while crosscompiling"...),wie z.B. rtorrent oder GNUnet direkt auf der box zu kompilieren, wo besagter Fehler dann nicht mehr auftauchen dürfte, allerdings habt ihr Recht, das würde warscheinlich viiiiel zu lange dauern...
Der Vorschlag von Kontr-Olli scheint mir hier also sehr gut...danke!
im zweiten versuch habe ich mir ein debian lenny für mips per debootstrap (im freetz-paket enthalten) auf meinen USB-datenträger für die FB gebaut.....
Cool, wie hast du das hinbekommen? ich hab zurzeit Etch auf meiner Box, lenny hab ich leider nie zum laufen bekommen:(
Kannst du mir bitte sagen, welche Kernel-Version du hast? (uname -r)
 
Zuletzt bearbeitet:
@linuxkasten:
also ich habe ne FB7270 mit kernel-version: 2.6.19.2.....habe auch zunächst nen debootstrap mit etch, wie hier im forum beschrieben, gemacht.....danach einfach in /etc/apt/source.list alles auf lenny statt etch geändert und danach nen apt-get distupgrade gemacht....hat auch prima geklappt.....aber qemu ist doch tausendmal schneller als die FB....besonders treten da keine reboots auf :)

Gruß
Kontr-Olli
 
Stimmt, da muss ich dir Recht geben.
Trotzdem ist es oft nützlich, wenn man Debian auf der Box hat, weil es dort bereits Unmengen an vorkompilierten Paketen für mipsel gibt.
Ich glaub allerdings, dass mein Kernel (2.6.13-1-ohio) zu alt für lenny ist...weil bei debootstrap hab ich alles wie bei etch gemacht, aber dann heißt es immer "Illegal instruction" wenn ich
Code:
chroot ./lenny /debootstrap/debootstrap --second-stage
mache.
Aber egal jetz, ich versuch mich gerade an qemu.
Bin nach dieser Anleitung vorgegangen und hab mir qemu kompiliert. Aber wo bekomme ich das flashimage.bin her?
 
Du musst anscheinend etch installieren und dann ein dist-upgrade machen. Deine Variante hat bei mir auch nicht funktioniert.

MfG Oliver
 
lenny...debootstrap und qemu lenny....

@linuxkasten....
also ich habe halt erst nen etch per debootstrap drauf gemacht....und danach nen dist-upgrade....das ging bei mir ohne probleme....

zu qemu....also ich habe auch etliche anleitungen versucht....aber am besten hat es bei mir mit qemu mit dieser version geklappt:
http://www.aurel32.net/info/debian_mips_qemu.php

Kontr-Olli
 
Du musst anscheinend etch installieren und dann ein dist-upgrade machen. Deine Variante hat bei mir auch nicht funktioniert.
Achso, sorry, hatte vergessen zu erwähnen dass ich das auch bereits versucht habe...anschließend gibt er mir immer folgendes aus:
Code:
(Reading database ... 7192 files and directories currently installed.)
Preparing to replace libc6 2.3.6.ds1-13etch9 (using .../libc6_2.7-18_mipsel.deb)
 ...
Checking for services that may need to be restarted...
Checking init scripts...
Unpacking replacement libc6 ...
dpkg: error processing /var/cache/apt/archives/libc6_2.7-18_mipsel.deb (--unpack
):
 dpkg: warning - old post-removal script killed by signal (Illegal instruction)

dpkg: error while cleaning up:
 subprocess pre-installation script killed by signal (Illegal instruction)
Errors were encountered while processing:
 /var/cache/apt/archives/libc6_2.7-18_mipsel.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Hat also Probleme damit, die libc6 zu ersetzen.

@Kontr-Olli:
Danke für den Link!
Ist es aber auch irgendwie möglich, qemu mit der Fritz!Box Firmware zu starten, damit ich dann die Programme mit make 3.81 im FirmwareImage dynamisch gegen uclibc linken kann?
 
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.