encFS 1.3.2 für FB7270
Hi leutz.....
also soweit so gut.....habe mal ein bisschen rumprobiert und siehe da....es ist mir sogar gelungen
EncFS 1.3.2 samt
librlog gegen die
uclibc++ zu bauen....auf den ersten blick schien auch alles zu funktionieren...
hab das ganze dann auf die FB kopiert und dort mich nochmal vergewissert, dass es nur gegen die uclibc++ dynamisch gelinkt worden ist.....was der fall war......die encfs binary lies sich auch ohne probleme ausführen und beim einbinden eines verschlüsselten ordners ins filesystem lief auch alles ganz gut.....passwortabfrage etc.....ordner wurde unter mount ordnungsgemäß angezeigt.....alles klar dachte ich....
leider stürzte die
uclibc++-Version dann jedesmal ab, wenn man in den so gemounteten ordner gewechselt bin.....d.h. einfach mal nen ls im ordner gemacht und schon war der prozess encfs weg.....in mount wurde es zwar noch richtig angezeigt....jedoch kam die Fehlermeldung: "Transport lost"...oder so, wenn man sich im gemounteten Ordner befand....irgendwer ne idee, was da falsch läuft??....
denn wenn ich ehrlich bin, habe ich keine ahnung wie man EncFS fehlerfrei gegen die uclibc++ bauen kann....oder ob dies überhaupt möglich ist.....zumal der uclibc++ in freetz ja auch die eine oder andere option genommen wurde (siehe menuconfig im source von uclibc++)
naja....da es ja
keine probleme gab, wenn ich die
große c++-lib verwende, will ich kurz im folgenden beschreiben, was ich gemacht habe, damit das kompilieren von EncFS ohne fehler durchlief.....sorry, dass ich keine fertige Makefile erstellt habe.....würde ich zwar machen, wenn mir jemand mal sagen könnte, wie das am besten geht und welche umgebungsvariablen zu setzen sind.....
ich denke so wirds ja auch erstmal gehen.....ev. könnte dann
EnFS 1.3.2 ins freetz-paket mit aufgenommen werden?!
zunächst erstmal die sourcen besorgen:
Umgebungsvariable $PATH auf freetz-toolchain ../toolchain/target/bin setzen....
fangen wir mit der stressfreien teil an....
librlog....kompiliert ohne patch und veränderungen des configure scripts ohne Probleme gegen die c++lib:
Code:
./configure --enable-static --enable-shared --prefix=/media/disk/FritzBox-dev/rlog-mipsel --disable-docs --with-gnu-ld --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux CFLAGS="-Os -pipe -march=4kc -Wa,--trap" CXXFLAGS="-Os -pipe -march=4kc -Wa,--trap" CC=mipsel-linux-gcc CXX=mipsel-linux-g++
dann eben
make && make install......
danach die so erstellte
librlog....samt symbolischen verknüpfungen, dem lib-verzeichnis sowie dem include verzeichnis in die
freetz-toolchain kopieren.....
/toolchain/target/lib ..
/include usw.....sollte klar sein...
kommen wir nun zum eingenlichen....den
EncFS 1.3.2 sourcen.....damit das configure-script ordnungsgemäß durchläuft, habe ich den teil auskommentiert, welcher ein kleines testprogramm startet, welches die
libfuse version und verfügbarkeit testet...was natürlich nicht geht, wenn man für mipsel kompiliert....aufgrund dessen selbst nochmal nachschauen, ob die libs für
FUSE auch in der toolchain vorhanden sind....
fuse ist im freetz paket enthalten, und muss sich danach auch auf der Box befinden....
desweiteren habe ich die datei
encfsctl.cpp im ordner
encfs in den sourcen noch verändern müssen.....dort wird im Zeile
540-547 die funktion
ngettext verwendet....diese stellt eine erweiterung der funktion
gettext dar, wobei zusätzlich erkannt wird ob singular oder plural verwendet wird und dementsprechend die Ausgabe auch noch modifiziert wird.....
meiner meinung nach spielerei.....zumal beim kompilieren sich der freetz-kompiler darüber beschwert, dass er er eben
ngettext nicht kennt....also habe ich das ganze durch
gettext ersetzt und den syntax dort auf die einfache funktion angepasst.....
die beiden genannten veränderungen habe ich auch zusammen in eine
patchfile gepackt (
encfs-1.3.2-cross-patch.diff), welche ihr euch im anhang runterladen könnt....d.h. EncFS sourcen patchen....
Code:
patch -p0 -i encfs-1.3.2-cross-patch.diff
danach in den
EncFS-source ordner wechseln und configure-script durchrennen lassen....
Code:
CPPFLAGS='-I/media/disk/freetz-trunk/toolchain/target/include' LDFLAGS='-L/media/disk/freetz-trunk/toolchain/target/lib' LIBS='-pthread -liconv' ./configure --prefix=/media/disk/FritzBox-dev/encfs-mipsel --disable-nls --enable-shared --with-gnu-ld --without-libintl-prefix --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux CXX=mipsel-linux-g++ CFLAGS="-Os -pipe -march=4kc -Wa,--trap" CXXFLAGS="-Os -pipe -march=4kc -Wa,--trap"
besonders wichtig ist hier der flag:
LIBS='-pthread -liconv'....da ansonsten das configure script abbricht und sich beschwert, dass es
kein fuse-paket findet....kein plan warum das so ist, aber mit diesen beiden zusätzlichen LIBS läuft es einwandfrei durch und kompiliert auch ordnungsgemäß....
dann
make && make install eben......
für EncFS wird neben
librlog (siehe oben) noch die folgenden libs benötigt...
- libfuse im freetz-paket enthalten....sollte vorher installiert werden, damit in crosstoolchain vorhanden!
- openssl ebenfalls im freetz-paket enthalten....vorher prüfen ob auch bereits installiert und in toolchain vorhanden....
so....das wars erstmal....viel spaß beim nachbauen.....und ev. bekommt es ja einer von euch hin, das ding gegen die kleine, kompakte uclibc++ so zu bauen, damit es auch damit läuft.....
für die installation auf die FritzBox (d.h. kopieren der benötigten libs, samt der großen c++lib sowie der binarys ins image) bitte die Infos aus meinem vorherigen thread entnehmen....
gruß
Kontr-Olli