Freetz verbose make?

pgzh

Neuer User
Mitglied seit
26 Mai 2013
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich bin recht neu hier und versuche im moment, mir Freetz für meine Fritz!Box 7390 zu basteln.
Ich habe mir freetz-1.2 und das benötigte Firmware-Image heruntergeladen, über 'make menuconfig' eingestellt was ich denn gerne hätte und mit 'make' angefangen freetz zu kompilieren.
Innerhalb einiger Sekunden nach dem Download einiger Pakete lande ich allerdings hier:

Code:
ERROR: Build failed. Please re-run make with verbose level set to 2 to see what's going on.
make: *** [source/kernel/ref-iks-16mb-7390_04.90/.prepared] Error 1

Direkt zuvor wurde liblzma gebaut, aber das scheint nichts mehr mit der lib zu tun zu haben.
Wie kriege ich denn jetzt die verbose-Meldungen zu sehen?
Das übliche 'make V=2' oder 'make VERBOSE=2' gibt mir absolut keine zusätzlichen Ausgaben...

Vielleicht könnt ich mir als freetz-Einsteiger hier ein bisschen weiterhelfen - normalerweise bin ich bei sowas nicht so doof und unbeholfen, ich arbeite seit rund 10 Jahren mit Linux und bin eigentlich der Meinung, mich einigermaßen auszukennen.
Die freetz Wiki und FAQ haben mich hier leider auch nicht weiterbringen können.

Falls es von Interesse ist:
Build-system ist ein Arch Linux AMD64, gcc-multilib, gcc-libs-multilib und binutils-multilib sind installiert. Sonst ist auch alles da was man üblicherweise zum Kompilieren von Programmen braucht.

Gruß,
Peter
 
Moin und Willkommen im Forum

Die mit make menuconfig erstellte Datei ist versteckt und heisst .config .
Mit ls -la .config siehste die.
Such mal, meinetwegen mit vi in dieser Datei: FREETZ_VERBOSITY_LEVEL
Dann hinter dem Gleichheitszeichen = eine 2 eintragen, Esc
Code:
:x
und RETURN drücken (speichern & beenden).
Und dann make ausführen für eine ausführliche Fehlermeldung.

hdwh
 
Vielen Dank für die Info, in der .config nachzusehen hätte mir auch wirklich selber einfallen können...
vi-Bedienung ist übrigens kein Problem für mich, das kann man nach fast 10 Jahren Linux ;-)

Leider bin ich jetzt nicht viel schlauer als vorher, das Problem stellt sich jetzt wie folgt dar:
Code:
$ make
cmd() { PATH="/data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-4.4.6_uClibc-0.9.29/mips-linux-uclibc/bin:/data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };        if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/kernel/ref-iks-16mb-7390_04.90/linux-2.6.19.2 \
        CROSS_COMPILE="mips-unknown-linux-gnu-" \
        KERNEL_MAKE_PATH="/data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl" \
        ARCH="mips" \
        KERNEL_LAYOUT="16mb" \
        prepare
mips-unknown-linux-gnu-gcc: /data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin/../lib/gcc/mips-unknown-linux-gnu/3.4.6/specs: Value too large for defined data type
mips-unknown-linux-gnu-gcc: /data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin/../lib/gcc/mips-unknown-linux-gnu/3.4.6/specs: Value too large for defined data type
make[1]: Entering directory `/data/tools/FritzBox/freetz-1.2/source/kernel/ref-iks-16mb-7390_04.90/linux-2.6.19.2'
make[1]: warning: -jN forced in submake: disabling jobserver mode.
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  CC      arch/mips/kernel/asm-offsets.s
mips-unknown-linux-gnu-gcc: /data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin/../lib/gcc/mips-unknown-linux-gnu/3.4.6/specs: Value too large for defined data type
make[2]: *** [arch/mips/kernel/asm-offsets.s] Error 1
make[1]: *** [prepare0] Error 2
make[1]: Leaving directory `/data/tools/FritzBox/freetz-1.2/source/kernel/ref-iks-16mb-7390_04.90/linux-2.6.19.2'

ERROR: Build failed.
make: *** [source/kernel/ref-iks-16mb-7390_04.90/.prepared] Error 1

Offenbar wird versucht, den Kernel zu kompilieren und irgendein Datentyp kann hier einen Wert nicht halten, weil er zu klein ist.
Habe ich vielleicht doch ein wichtiges Paket auf dem build-system vergessen oder ist mein gcc vielleicht "zu neu"?
Kann mir hier irgendjemand einen wertvollen Tipp geben?
In Sachen Cross-Compiling bin ich leider absolut blutiger Anfänger und ich weiß nicht mal wo ich hier anfangen soll, das Problem zu suchen...

Gibt es irgendwo vielleicht auch eine kleine Anleitung, wie ich mir eine toolchain zusammenbasteln kann, mit der ich statisch gelinkte Binaries erzeugen kann, die auf meiner Fritz!Box laufen? Fürs erste würde es mir voll und ganz ausreichen, wenn ich mir dropbear und openvpn für meine Box kompiliert bekomme...auf freetz bin ich eigentlich nur gekommen, weil ich hier ein komplettes build-System bekomme, Ziel ist es für mich erstmal, mir lauffähige Binaries erzeugen lassen zu können.
Komplett die modifizierte Firmware laden will ich eigentlich erst, wenn die neueste Firmware 05.50 von freetz problemlos unterstützt wird.
 
Zuletzt bearbeitet:
Da du anscheinend ein "echtes" Linux nimmst, ich aber die Virtualbox-Ubuntu Crosscompileumgebung, kann ich dir leider nicht weiterhelfen.
Aber, kann es sein, dass du nur eine Umgebungsvariable für deinen Compiler anpassen müsstest?
 
Also vorweg: In der .config "rumpfuschen" ist nicht der beste Tipp, denke ich.

Besser: Nutze das Menuconfig, so wie es gedacht ist:

Advanced options ---> Build system options ---> Verbosity level (0-2)


Habe wegen des Fehlers nur kurz in die FIRMWARES der 1.2-er Version geschaut. Sollte die 7390 nicht die Version "84.04.91" nutzen?!?

EDIT: Um nur statische Programme zu übersetzen, würde ich vorschlagen:
Code:
freetz-trunk auschecken
make menuconfig: Wählen der Box und am besten gleich als Pakete wählen dropbear ( statisch und für "ohne freetz" ;-)) und OpenVPN statisch
make dropbear-precompiled
make openvpn-precompiled
 
Zuletzt bearbeitet:
Keine Panik, MaxMuster, der TE hat 10 Jahre Linuxerfahrung, die .config ist nur eine Textdatei.
Nach der manuellen Änderung kann man immernoch make menuconfig aufrufen und abspeichern, um auf Nummer Sicher zu gehen.
Den Tip hab ich jetzt auch nur so rausgehauen, weil ich grad nicht make menuconfig aufrufen kann, aber in die .config meiner Boxen per Fernzugriff kieken kann.
 
Habe ich vielleicht doch ein wichtiges Paket auf dem build-system vergessen oder ist mein gcc vielleicht "zu neu"?

Ic hglaube nicht, dass Dein gcc zu neu ist, zumal die Meldung vom Cross-Compiler kommt.
Was steht denn in der Datei /data/tools/FritzBox/freetz-1.2/toolchain/build/mips_gcc-3.4.6/mips-unknown-linux-gnu/bin/../lib/gcc/mips-unknown-linux-gnu/3.4.6/specs drin?
 
Habe wegen des Fehlers nur kurz in die FIRMWARES der 1.2-er Version geschaut. Sollte die 7390 nicht die Version "84.04.91" nutzen?!?

Der Meinung war ich auch, ich habe auch FRITZ.Box_Fon_WLAN_7390.84.04.91.image heruntergeladen und ins dl/fw Verzeichnis abgelegt. Ohne die geht gar nichts.

@ RalfFriedl: Aufgrund der Länge der Datei hänge ich die hier mal mit an (Endung .txt ergänzt, damit das klappt)...was genau ist darin für dich von Interesse?

Ich habe hier auf meinem PC übrigens den GCC 4.8.0 drauf. Liegt da vielleicht doch die Wurzel des Problems?
 

Anhänge

  • specs.txt
    4.3 KB · Aufrufe: 2
Zuletzt bearbeitet:
EDIT: Um nur statische Programme zu übersetzen, würde ich vorschlagen:
Code:
freetz-trunk auschecken
make menuconfig: Wählen der Box und am besten gleich als Pakete wählen dropbear ( statisch und für "ohne freetz" ;-)) und OpenVPN statisch
make dropbear-precompiled
make openvpn-precompiled

Das klappt wie am Schnürchen - dazu aber noch ein paar Anfängerfragen:

1. Neben dropbear und openvpn wurde offenbar auch noch openssl kompiliert. Brauche ich die openssl-Binary auch?
2. Im openvpn-Verzeichnis liegen folgende Dateien:
Code:
./etc/default.openvpn:
box_crt.def
box_key.def
ca_crt.def
crl_pem.def
dh_pem.def
openvpn.cfg
openvpn.inetd
openvpn.save
openvpn_conf
openvpn_dynamic_conf
static_key.def

./etc/init.d:
rc.openvpn

./usr/lib:
cgi-bin

./usr/sbin:
openvpn
Wohin mit den ganzen configs die hier im ./etc-Verzeichnis liegen? Da ich keine freeze-Firmware, sondern nur die Binaries habe, kann ich in /etc auf der Fritzbox nicht schreiben. Kommt davon was nach /var/tmp ? Was davon brauche ich überhaupt?

Schon mal vielen Dank an alle, die mich bis hierher begeleitet haben - ihr habt mir das Leben deutlich einfacher gemacht!
 
1. Die OpenSSL Binaries brauchst du nicht (wurde nur für die SSL-Libraries gebaut), aber du hast das ja alles "statisch" drin ;-).
2. Du brauchst nur das OpenVPN Binary (in .../usr/sbin). Alles andere ist für die Freetz-GUI und die "Diensteverwaltung".

Die Configs, Keys/Zertifikate (und Binaries) packst du entweder ins RAM (/var/tmp, das ist dann natürlich "flüchtig"), auf einen USB-Stick oder schiebst es bei einer 7390 auf den internen Speicher...
 
Zu 1. : Danke, hab ich mir gedacht, war mir da aber nicht absolut sicher.
Zu 2. : Wo genau sucht das openvpn Binary denn nach den configs, keys und certs? Klappt das wenn es einfach in /var/tmp liegt oder muss was anderes her?
Dropbear z.B. sucht von Haus aus in /var/tmp nach dem sftp-server Binary, aber ist das bei openvpn jetzt auch so?
Bin leider nicht zuhause und kann mir das grade nicht "live" ansehen, würde es aber gern morgen früh voll ans Laufen bekommen.

Wie ich die Daten auf dem internen Speicher ablege und dann nach /var/tmp beim Start der Fritz!Box verlinken kann o.ä. ist kein Problem, ich habe schon ein Skript das beim Start läuft und Ähnliches macht. Es geht wirklich nur darum wo openvpn die Dateien erwartet, alles Weitere ist mir mittlerweile klar.
 
Dem OpenVPN gibst du alle Pfade mit.
Aufruf ist dann (bei einer Config in /var/tmp): "<Pfad zum>/openvpn --config /var/tmp/ovpn.conf"
Es steht dann z.B. in der Config "secret /var/tmp/my.key" für einen statischen Key auch in /var/tmp.
 
Aufgrund der Länge der Datei (specs) hänge ich die hier mal mit an (Endung .txt ergänzt, damit das klappt)...was genau ist darin für dich von Interesse?

Von Interesse ist, dassdie Fehlermeldung auf diese Datei hinweist. Vom Inhalt her ist sie aber fast identisch mit meiner, außer dem Unterschied Big/Little Endian. Sieht also ganz normal aus.
Aber anscheinend bist Du auch so weiter gekommen.
 
Also ich habe es geschafft, mir die Pakete, die ich haben wollte, zu übersetzen und auf die Box zu bekommen. Der OpenVPN-Server läuft mittlerweile auch, aber ich habe da wohl noch ein Konfigurations-Problem - mein Client sagt zwar, dass er verbunden sei und bekommt eine IP zugewiesen, aber ich kann weder vom LAN aus den Client anpingen noch vom Client aus irgendwas im LAN.
Mein erklärtes Ziel ist es, einzelne Clients von aussen in mein LAN über das VPN einzubinden.
Die Fritz!Box hat die IP-Adresse 192.168.0.1, DHCP wird im Bereich 101-120 vergeben, die VPN-Clients sollen im Bereich 201-220 landen.
Das tap0-Interface vom openvpn habe ich mittels 'brctl addif lan tap0' zur lan-Brücke der Fritz!Box hinzugefügt.
Der Test-Client ist ein Android-Smartphone, was aber grundsätzlich kein Problem sein sollte.

Vielleicht kennt sich hier ja jemand gut mit OpenVPN aus und kann mir sagen, was ich verbockt habe?

server.ovpn:
Code:
# set the path to the tap device
dev tap
#dev-node /var/media/ftp/.mod/dev/tap0
dev-node /dev/tun
mssfix
tun-mtu 1500
 
# TCP or UDP server?
proto udp
port 1194
 
# CA and key files
ca /var/media/ftp/.mod/conf/openvpn/ca.crt
cert /var/media/ftp/.mod/conf/openvpn/server.crt
key /var/media/ftp/.mod/conf/openvpn/server.key
crl-verify /crl.pem # this is opened after the chroot
 
# Diffie hellman parameters
dh /var/media/ftp/.mod/conf/openvpn/dh2048.pem
 
# bridge setup
server-bridge 192.168.0.1 255.255.255.0 192.168.0.201 192.168.0.220
mode server
tls-server
push "dhcp-option DNS 192.168.0.1"
push "route 192.168.0.0 255.255.255.0"
 
ifconfig-pool-persist ipp.txt
client-to-client
 
# compression?
comp-lzo
 
# The maximum number of concurrently connected clients we want to
# allow.
max-clients 10
 
# It's a good idea to reduce the OpenVPN daemon's privileges after
# initialization.
user nobody
group nobody

# Put openvpn in a jail.
chroot /var/media/ftp/.mod/conf/openvpn
 
# The persist options will try to avoid accessing certain resources on
# restart that may no longer be accessible because of the privilege
# downgrade.
persist-key
persist-tun
 
# where to log
log-append /var/media/ftp/.mod/conf/openvpn/openvpn.log
 
# verbose level for debugging
;verb 4
 
# make sure the connection is kept alive
keepalive 10 120

client.ovpn
Code:
# Specify that we are a client and that we will be pulling certain
# config file directives from the server.
client
 
# The hostname/IP and port of the server.
remote MEINE-IP 1194
 
proto udp
dev tap
 
pull
 
mssfix
tun-mtu 1500
 
# SSL/TLS parms.
tls-client
ca /mnt/extSdCard/pgzh/openvpn/ca.crt
cert /mnt/extSdCard/pgzh/openvpn/client.crt
key /mnt/extSdCard/pgzh/openvpn/client.key
 
ns-cert-type server
 
# Keep trying indefinitely to resolve the host name of the OpenVPN
# server. Very useful on machines which are not permanently connected
# to the Internet such as laptops.
resolv-retry infinite
 
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nobody
 
# Try to preserve some state across restarts.
persist-key
persist-tun
 
# Enable compression on the VPN link.
comp-lzo
 
# debug level
;verb 4
 
mute-replay-warnings
mute 20

Im Server-Log findet sich nach dem Verbinden des Clients:
Code:
Fri May 31 12:27:29 2013 client/109.43.0.112:15294 MULTI_sva: pool returned IPv4=192.168.0.201, IPv6=(Not enabled)
Fri May 31 12:27:32 2013 client/109.43.0.112:15294 send_push_reply(): safe_cap=940

Aber ein ping klappt nicht:
Code:
$ ping 192.168.0.201
PING 192.168.0.201 (192.168.0.201) 56(84) bytes of data.
From 192.168.0.90 icmp_seq=1 Destination Host Unreachable

Hier mal noch die routing-tables:
server:
Code:
# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.180.1   *               255.255.255.255 UH    2      0        0 dsl
192.168.180.2   *               255.255.255.255 UH    2      0        0 dsl
192.168.179.0   *               255.255.255.0   U     0      0        0 guest
192.168.0.0     *               255.255.255.0   U     0      0        0 lan
109.192.236.0   *               255.255.252.0   U     2      0        0 dsl
169.254.0.0     *               255.255.0.0     U     0      0        0 lan
default         *               0.0.0.0         U     2      0        0 dsl

client:
Code:
default via 100.66.85.1 dev rmnet0 
100.66.85.1 dev rmnet0  scope link 
192.168.0.0/24 via 192.168.0.1 dev tap0 
192.168.0.0/24 dev tap0  proto kernel  scope link  src 192.168.0.201

EDIT: Ein zusätzliches
Code:
ifconfig tap0 promisc up
hat das ganze Problem gelöst - auf einmal kann ich pingen, ssh-Verbindungen funktionieren, als wäre das Smartphone über WLAN und nicht übers Funktnetz verbunden. Falls jemand trotzdem noch konstruktive Kritik für meine Configs hat wäre ich natürlich dankbar, ist meine erste openvpn-config.

Auf jeden Fall vielen, vielen Dank an euch alle, ihr habt wirklich sehr geholfen! :)
 
Zuletzt bearbeitet:
Herzlichen Glückwunsch !!!
Dann hab ich ja mal einen Ansprechspartner wenn ich mich mal endlich mit VPN beschäftige. ;)
 
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.