[gelöst] libgpg-error will nicht mit ins Image

StephanG

Neuer User
Mitglied seit
25 Feb 2007
Beiträge
35
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich möchte den ds-mod mit vpnc ans Laufen bringen.
Dazu benötige ich die libgpg-error, habe sie also im menuconfig ausgewählt und dann mit
Code:
make libgpg-error-precompiled
erstellen lassen.

Das hat auch geklappt bei mir unter Kubuntu 6.10 (trotz Aussage von danisahne)

Sie landet auch im Verzeichnis root/usr/lib, jedoch findet sie nicht den Weg ins fertige Image.

Hier ein der relevante Teil der Ausgabe von "make"
Code:
installing mod base
  copying files
  installing libs
    libuClibc-0.9.28.so
    libpthread-0.9.28.so
    libm-0.9.28.so
    libnsl-0.9.28.so
    libcrypt-0.9.28.so
    libdl-0.9.28.so
    libutil-0.9.28.so
    ld-uClibc-0.9.28.so
    libgcrypt.so.11.2.1
  adding favicons (dsl123)

Das Problem hab ich auch schon hier gelesen, aber da hat, soweit ich das überblicken kann, keiner explizit drauf geantwortet (vielleicht weil es auf Englisch war? :) ).

Was geht hier schief?

Danke schonmal,
Stephan
 
Zuletzt bearbeitet:
StephanG schrieb:
Das hat auch geklappt bei mir unter Kubuntu 6.10 (trotz Aussage von danisahne)
Schon gesehen, dass mein Posting, auf das du dich beziehst über ein Jahr alt ist?

Du mußt die Lib auch im menuconfig unter Advanced Options auswählen.

Mfg
danisahne
 
danisahne schrieb:
Schon gesehen, dass mein Posting, auf das du dich beziehst über ein Jahr alt ist?

Ups, hatte nur auf den Monat geguckt :)

Du mußt die Lib auch im menuconfig unter Advanced Options auswählen.

Hab ich doch gemacht (und im ersten Posting bereits erwähnt), allerdings erst NACHDEM ich das erste mal make precompiled aufgerufen hatte.
Hab aber das make precompiled dann nochmal gestartet, nachdem ich es im menuconfig ausgewählt hatte, jedoch leider, wie oben beschrieben, ohne Erfolg.

Sollte in dem Fall aber nicht ein
Code:
make libgpg-error-precompiled
reichen?

Sonst noch ein Vorschlag?
 
Da läuft was mit dem sed schief. Leider sind diese regulären Ausdrücke nichts für mich...
Code:
+ for i in '$(cd "${ROOT_DIR}" && find lib usr/lib -type d -name .svn -prune -false , -type f -name "*.so*")'
++ basename usr/lib/libgpg-error.so.0.1.4
+ bn=libgpg-error.so.0.1.4
+ lib=libgpg-error
++ echo [B]libgpg-error[/B]
++ sed -e 's/-[\.0-9a-z]*$//'
+ lib=[B]libgpg[/B]
+++ echo libgpg
+++ tr '\-+' _x
++ eval 'echo "[B]$DS_LIB_libgpg[/B]"'
+++ echo y
+ '[' y == y ']'
+ '[' 2 -ge 2 ']'
+ echo ' libgpg-error.so.0.1.4'
libgpg-error.so.0.1.4
++ dirname usr/lib/libgpg-error.so.0.1.4
+ dn=usr/lib
+ '[' -d build/modified/filesystem/usr/lib ']'
+ cp -a ./root/usr/lib/libgpg-error.so ./root/usr/lib/libgpg-error.so.0 ./root/usr/lib/libgpg-error.so.0.1.4 build/modified/filesystem/usr/lib/
MfG Oliver
 
Code:
sed -e 's/-[\.0-9a-z]*$//'

Das heißt, dass alle Zeichen, die ein Punkt oder zwischen 0 und 9 sind oder zwischen a und z sind, nach dem '-' einfach entfernt werden.

So wird dann aus "libgpg-error" einfach "libgpg".

Wann bzw. wo wird das denn ausgeführt?

Ich kann die Stelle bei mir nicht finden.
 
vermutlich in ./fwmod

Perfekt.

Hab jetzt in ./fwmod Zeile 776 abgeändert von
Code:
lib="$(echo "$lib" | sed -e 's/-[\.0-9a-z]*$//')"
in
Code:
lib="$(echo "$lib" | sed -e 's/-[0-9][\.0-9a-z]*$//')"

So wird nur was hinter dem letzten '-' gelöscht, wenn das erste Zeichen eine Zahl ist.

Jetzt kommt die lib auch richtig ins Image.

Vielleicht will das ja einer der Chefs im ds-mod aktualisieren?

Jetzt muß ich nur noch ein bisschen weiter an anderen Problemen des vpnc basteln...

Grüße,
Stephan
 
Was hast du denn für ein Problem mit dem vpnc?

MfG Oliver
 
olistudent schrieb:
Was hast du denn für ein Problem mit dem vpnc?

Ich habe das vpnc-0.4.0-Paket von deinem Beitrag hier nach ./addon kopiert.

make precompiled und make laufen durch.

Folgende Fehlermeldung erscheint, wenn ich aus dem Webinterface den vpnc starte:

Code:
Starting vpnc...warning: unknown configuration directive in /mod/etc/vpnc.conf at line 13

BusyBox v1.3.1 (2007-03-05 12:44:55 CET) multi-call binary

Usage: ip [OPTIONS] {address | link | route | tunnel | rule} {COMMAND}

ip [OPTIONS] OBJECT {COMMAND}
where  OBJECT := {link | addr | route | tunnel |rule}
OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }


----SCHNIPP: die letzten 5 Zeilen kommen hier mehrmals vor----


iptables v1.3.6: Couldn't load target `standard':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.6: Couldn't load target `standard':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.6: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
VPNC started in background (pid: 2526)...
done.

Ich habe jetzt noch festgestellt, dass iptable_nat.ko nicht im Image ist, obwohl ich es im menuconfig ausgewählt habe.
Unter kernel/modules-8mb_26-04.29/lib/modules/2.6.13.1-ohio/kernel/net/ipv4/netfilter finde ich es auch nicht bei mir. Da sind nur ganz viele andere .ko-Dateien.
Es erscheint auch nicht in der Ausgabe von make unter "installing modules"

Vorschläge?
 
Dann wird es wohl beim "make kernel-precompiled" nicht gebaut. Schau mal mit "make kernel-menuconfig" nach, ob es aktiviert ist.
Und dann fehlt noch was für den ip-Befehl. Da solltest du mal mit "make busybox-menuconfig" nachschauen, ob was aktiviert werden muss.

MfG Oliver

edit: 1. Das iptables-Modul ist nich als Modul ausgewählt.
2. busybox ip braucht route. (edit2: Oder in der Datei vpnc-script die Zeile "IPROUTE="`which ip 2> /dev/null`"" auskommentieren)
 
Zuletzt bearbeitet:
Danke, jetzt bin ich schonmal ein wenig weiter gekommen.

Hab jetzt ein paar mehr Pakete ausgewählt.

Außerdem habe ich noch die Dateo vpnc-script abgeändert ab Zeile 392 in
(vorher stand statt "FORWARD" "forwarding_rule" und statt "POSTROUTING" "postrouting_rule")
Code:
start_vpn_nat() {
	iptables -A FORWARD -o $TUNDEV -j ACCEPT
	iptables -A FORWARD -i $TUNDEV -j ACCEPT
	iptables -t nat -A POSTROUTING -o $TUNDEV -j MASQUERADE
}

stop_vpn_nat() {
	iptables -t nat -D POSTROUTING -o $TUNDEV -j MASQUERADE
	iptables -D FORWARD -i $TUNDEV -j ACCEPT
	iptables -D FORWARD -o $TUNDEV -j ACCEPT
}

Jetzt bekomme ich aber folgenden Fehler beim starten von vpnc aus der Weboberfläche:

Code:
Starting vpnc...warning: unknown configuration directive in /mod/etc/vpnc.conf at line 13
ip: RTNETLINK answers: No such process
ip: RTNETLINK answers: No such device
ip: need at least destination address
VPNC started in background (pid: 2013)...
done.

Der Fehler "ip: need at least destination address" kommt daher, dass im vpnc-script folgender Befehl in Zeile 137 steht:

Code:
$IPROUTE route | grep '^default' | fix_ip_get_output > "$DEFAULT_ROUTE_FILE"

($IPROUTE ist hier = "ip")

"ip route" erzeugt auf der Box dann den Fehler, während in meinem Ubuntu "ip route" die existierenden Routen anzeigt.
Wie behebe ich dieses Problem?

Die FritzBox bekommt zwar ne IP vom Cisco-Server, jedoch kann ich keine Seiten aufrufen.
Ein Ping von der FritzBox auf heise.de geht auch nicht.
Ich muss dann erst die Box neustarten, damit ich wieder Zugriff aufs Internet habe.

Ich kenne mich mit dem ganzen iptables-Kram leider nicht aus...

Wer kann mir da weiterhelfen?
 
Das Problem ist, dass das DSL-Device nicht die externe IP hat, wie das Skript das erwartet.
Vielleicht kannst du dir hier was abschauen.
Mit iptables hab ich leider auch noch so meine Probleme.

MfG Oliver
 
Vielleicht kannst du dir hier was abschauen.
Das klappt leider so nicht bei mir.

Bin aber gerade dabei, ein bisschen mit dem vpnc-script herumzuspielen.

Ist es wirklich nötig, dass ich nach jeder kleinen Änderung ein komplettes Image erstellen muß und dann ein Firmware-Upgrade durchführen?

Kann man dass nicht irgendwie temporär woanders auf der Box speichern, sodass ich es dort direkt ändern kann?

Das würde mir einige Wartezeit ersparen...

EDIT: Habs selbst hinbekommen: hab einfach nen Symlink von /etc/default.vpnc/vpnc-script auf /var/flash/vpnc-script gesetzt.
Dann das Image gebaut und Firmware aktualisiert.

Jetzt dürfte ich schneller zur Lösung kommen :)
 
Zuletzt bearbeitet:
Es gibt das mini_fo-Package. Damit kannst du überall schreiben. Das hält jedoch nur bis zu einem Reboot.

MfG Oliver
 
Bei einer Datei hättest du auch einfach mit `mount -o bind ...' eine Datei in /var/ drübermounten können.
 
Komme irgendwie nicht weiter.

Kann mir da jemand mit den ip und iptables Befehlen weiterhelfen?

Habe jetzt erstmal die iptables Klamotten rausgelöscht aus dem vpnc-script.
Sehen denn wenigstens die Routen von ip schon ok aus?

vor vpnc:

Code:
/ $ ip route show
192.168.180.1 dev dsl  metric 2
192.168.180.2 dev dsl  metric 2
192.168.178.0/24 dev lan  src 192.168.178.254
192.168.0.0/24 dev lan  src 192.168.0.1
default dev dsl  metric 2

nach vpnc:

Code:
/ $ ip route show
192.168.180.1 dev dsl  metric 2
192.168.180.2 dev dsl  metric 2
192.168.178.0/24 dev lan  src 192.168.178.254
192.168.0.0/24 dev lan  src 192.168.0.1
default dev tun0

Welches Device der Fritz!Box ist wofür?
(tun0 ist ja vom vpnc, mehr weiß ich allerdings auch nicht...)
 
StephanG schrieb:
Sehen denn wenigstens die Routen von ip schon ok aus?

Leider nein. Das Script hat die normale Default-Route durch eine Default-Route über das VPN ersetzt. Das bedeutet aber, dass der VPNC den VPN-Server gar nicht mehr erreichen kann - er hat sich also den Ast unter Hintern abgesägt :-)

So wie es aussieht, kann das Script aber den aktuellen Default-GW nicht richtig ermitteln, oder? Das Script ist aber auch ein Hack (sorry, falls der original Autor das liest ;-))...

Probier mal, den angehängten Patch auf das Script loszulassen, mittels:
bzcat PFADZUMPATCHFILE | patch PFADZUM/vpnc-script

Vielleicht hilft das ja schon, ich hab vpnc leider nicht laufen...
 

Anhänge

Der Patch ist für das Skript vom 0.3.3, oder? Ich hatte da ein "neues" Skript dazugepackt. Eventuell hatte da jemand was für die FB geändert und ich das nur nicht gecheckt...

MfG Oliver
 
Danke, aber abgesehen davon, dass du dich auf vpnc 0.3.3 beziehst, ändert dein Patch ja nur Sachen im else-Zweig von
Code:
if [ -n "$IPROUTE" ]; then

Bei mir ist aber $IPROUTE == "/bin/ip", also nicht leer.
D.h. auch, dass "ip route" verwendet wird, statt nur "route".

Folgender Code ergibt bei mir $ORIGDEFGW == "dsl". Soll das so sein?
Code:
	orig_route_syntax_gw=$route_syntax_gw
	ORIGDEFGW=$(netstat -r -n | grep '^0.0.0.0' | awk '{print $2}')
	if [ "$ORIGDEFGW" = "0.0.0.0" ] ; then
		ORIGDEFGW=$(netstat -r -n | grep '^0.0.0.0' | awk '{print $8}')
		route_syntax_gw=dev
	fi

Bin also leider immer noch nicht weiter gekommen...
 
Kommentier die Zeile mit dem IPROUTE="..." mal aus. Deshalb hatte vorher keiner Probleme mit dem "ip route".

MfG Oliver
 
Kostenlos!

Statistik des Forums

Themen
248,853
Beiträge
2,302,886
Mitglieder
378,501
Neuestes Mitglied
Dalle85