lundi 31 janvier 2011

Ajout de ldd sous Synology

Par défaut, il n'y a pas LDD sur le synology DS-207+
Voici une méthode simple pour en obtenir un:
Ouvrir sa boite linux préférée, et taper:
which ldd
Copier le fichier renvoyé sur le synology
Eventuellement l'ouvrir et éditer la première variable RTLDLIST pour enlever la lib 64 bits si vous avez pris votre ldd depuis un 64 bits
Il vous faut bash :
ipkg install bash
Et voilà. Utilisation de LDD:
bash ldd mon_executable

Edit:
J'ai aussi découvert ce lien :
http://benjamin-balet.info/multimedia/synology/il-ny-a-pas-dutilitaire-ldd-sur-mon-syno/ qui permet d'obtenir sensiblement les mêmes résultats avec des paquets ipkg.

Compilation de rsyncrypto pour le Synology DS-207+

Ce week end, j'ai décidé de compiler rsyncrypto pour le Synology DS-207+. Je vous livre la procédure suivie sur mon Ubuntu.

NB: je n'ai pas testé l'option pour zipper les contenus mais je livre quand meme la procédure qui devrait fonctionner meme si elle n'est pas complète

Tout d'abord, télécharger le toolchain pour cross compiler sous Ubuntu: http://en.sourceforge.jp/projects/sfnet_dsgpl/downloads/DSM%203.0%20Tool%20Chains/Marvell%2088F5281%20Linux%202.6.15/gcc343_glibc232_88f5281.tgz/

Passer root:
sudo su
Décompresser l'archive dans un répertoire: moi dans /home/user/src/
tar xzvf ../Downloads/gcc343_glibc232_88f5281.tgz
mv usr/local/arm-marvell-linux-gnu/ .

Se mettre en mode de développement:
cd arm-marvell-linux-gnu/bin
PATH="$PATH:/home/user/src/arm-marvell-linux-gnu/bin/:/usr/bin:/bin"

Télécharger argtable 2.12 et compiler:
http://www.icewalkers.com/Linux/Software/51540/argtable.html
tar xzvf /home/user/Downloads/argtable2-12.tar.gz
cd argtable2-12
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
cp src/.libs/libargtable2.so* ../../lib/
cd ..

Télécharger openssl et le compiler (juste pour avoir la lib et les headers, je suis sur qu'il y a un moyen plus simple basé sur un retrieve depuis le syno, mais ceci marche pour moi)
http://www.openssl.org/source/openssl-1.0.0c.tar.gz
tar xzvf /home/user/Downloads/openssl-1.0.0c.tar.gz
cd openssl-1.0.0c/
export cross=arm-marvell-linux-gnu-
./Configure dist
make CC="${cross}gcc" ARCH=arm AR="${cross}ar r" RANLIB="${cross}ranlib"
cp libcrypto.a ../../lib/
cd ..

Télécharger rsyncrypto (moi j'ai chopé les sources via la commande SVN indiquée sur sourceforge) et compiler:
cp -r path_to_rsyncryptoSVN/rsyncrypto/tags/V1.12/ rsyncrypto
cd rsyncrypto
./bootstrap
ln -s ../openssl-1.0.0c/include/openssl/ .
ln -sf /home/user/src/arm-marvell-linux-gnu/bin/argtable2-12/src/argtable2.h /home/user/src/arm-marvell-linux-gnu/include/argtable2.h
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
make all-am
cd ..

Copier les fichiers générés vers le synology
cp rsyncrypto/rsyncrypto{,_recover} argtable2-12/src/.libs/libargtable2.so.0.1.7 SYNOLOGY

su le DS207+:
ln -s libargtable2.so.0.1.7 libargtable2.so.0
ln -s libargtable2.so.0.1.7 libargtable2.so
mv libargtable2.so* /lib
ldconfig

Pour gzip: le gzip fourni doit marcher mais ne sera pas optimisé pour l'utilisation avec rsyncrypto. Du coup il est conseillé de télécharger le patch suivant:
télécharger gzip 1.3.13
http://article.gmane.org/gmane.comp.gnu.gzip.bugs/258
URL du patch:
http://svn.exactcode.de/t2/trunk/package/archiver/gzip/gzip.rsync.patch
copier la section du patch à proprement parler: (starting at --- +++ lines), remplacer tous les 'b/' avec des '' et placer le fichier obtenu dans le répertoire src de gzip (nommé patch)
patch -p0 < patch
J'ai aussi du modifier le temps de la compilation le fichier/home/brehon/src/arm-marvell-linux-gnu/bin/../lib/gcc/arm-marvell-linux-gnu/3.4.3/../../../../arm-marvell-linux-gnu/sys-include/getopt.h
Pour ajouter ligne 150 (sous le #ifndef):
#ifdef YANNICK
et ligne 164 (sous la déclaration __getopt_internal)
#endif /*Yannick*/
La compilation se fait ensuite comme précédemment
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
et on peut copier les fichiers générés vers le syno :) voilà.

Enjoy

PS: edit: les fichiers compilés sont mis à disposition ici: http://dl.free.fr/alw7TCU1a . s'ils n'y sont plus, contactez moi pour une copie.