UPDATE: 25/09/2011 – Corrections des paths
WARNING: On the right side, you can translate this article with « Google Translate »,
BE CAREFUL, Google modify paths and names. For good scripts, thank you for using the French original.
But:
Installer Java sur un NAS Synology DS210+ et équivalent avec processeur PowerPC SPE également connu sous le nom de « e500″/ »MPC8500 » et « e200″/ »MPC5xx ».
Problèmes:
- Synology ne fourni pas de package java compatible ou fonctionnel.
- Toucher le moins possible à la configuration du nas.
Solution possible:
Trouver une distribution linux compatible PowerPC SPE avec par exemple OpenJDK et l’installer en chroot sur le nas.
Prérequis:
- Un NAS à base de PowerPC SPE
- une connexion ssh configurer vers le NAS.
Version rapide:
Télécharger l’ archive du répertoire préconfiguré avec OpenJdk d’une distribution linux Debian pour architecture PowerPC SPE:
[download id= »1″]
ou
[download id= »2″]
Décompresser cette archive sur votre nas sous le répertoire /volume1/@local/debian et créer les points de montages correspondant:
NAS> mkdir -p /volume1/@debian NAS> cp chrootgnuspe_OpenJDKPublic.tgz /volume1/@debian NAS> cd /volume1/@local/debian NAS> tar xzvf chrootgnuspe_OpenJDKPublic.tgz NAS> mkdir -p /opt/debian
vous devez donc avoir /volume1/@debian/chrootgnuspe/bin, /volume1/@debian/chrootgnuspe/boot, …etc.
le ‘@’ évite que ce répertoire soit visible dans des partages réseaux.
il ne nous reste plus qu’à monter ce répertoire en chroot…
Pour nous simplifier la tâche, 2 scripts.
initDebChroot.sh sert à initialiser cette nouvelle installation au démarrage.
#!/bin/ash mount -o bind /volume1/@debian /opt/debian mount -o bind /dev /opt/debian/chrootgnuspe/dev mount -o bind /proc /opt/debian/chrootgnuspe/proc chroot /opt/debian/chrootgnuspe /bin/bash
loadDebChroot.sh permettant de se reconnecter en chroot, on aurait pu faire un alias, mais un des buts est de ne pas modifier le nas.
#!/bin/ash chroot /opt/debian/chrootgnuspe /bin/bash
Nous allons maintenant tester notre plateforme.
Commençons par monter tout le nécessaire et changer de répertoire racine (chroot):
Nas>./initDebChroot.sh
Nous voici dans notre environnement debian.
Dans l’archive précédemment téléchargée se trouve un hello world en java, testons-le.
#cd /root ~# ll total 12 -rw-r--r-- 1 root root 421 Nov 11 22:13 FirstApp.class -rw-r--r-- 1 root root 109 Oct 19 22:06 FirstApp.java ~# javac FirstApp.java ~# java FirstApp Hello World ~#
Voilà, vous avez un kit de développement java fonctionnel sur votre nas !!
Etant basé sur une distribution debian, vous pouvez utiliser toutes les commandes de gestion de paquet, apt-*. Vous pourrez ainsi en faire un serveur web avec jetty, tomcat, installez svn, git, un serveur dns, et que sais-je.
Amusez-vous bien.
Remerciements:
Rien n’aurait été possible sans le travail de Sebastian Andrzej Siewior pour son portage vers PowerPC SPE et de ces posts sur http://lists.debian.org/debian-powerpc/2009/02/msg00128.html . Il m’a permis de bénéficier d’une distribution complète sur ce nas et d’en faire une plateforme de dev utilisable.
Références:
http://wiki.debian.org/PowerPCSPEPort
A venir, une version plus détaillée de ce tutorial expliquant comment générer soit-même ce répertoire.
My French is not that good, so I will do this in English 😉
Thank you very much for your chroot image and explanation!!!! And for still having the repository online!
I got through very much trouble to compile the software « tvheadend » for my Synology DS209+II (also has the SPE enabled e500v2 cpu). The tvheadend software needs at least GCC 4.1 to compile while the Synology toolchain contains too old a version. Building a cross-compile toolchain using « crosstool-ng » worked but I still got trouble due to the library hell.
Using your Debian, compiling tvheadend and running it from the chroot works!!! 😉
Thank you for your comment, good luck to your installation!
Alexandre
Salut et merci pour le tuto.
je viens d’investir dans un DS211+ et je voudrais savoir si la manip’ peut être faite sur ce modèle.
De plus, pourrais tu m’indiquer l’invasion faites par l’installation d’un os concurrent sur le NAS (utilisation RAM, DD) et si la garantie est perdue après l’installation ?
Merci
1. Oui cette manipulation peut être réalisée sur un DS211+, par contre tu ne pourras pas utiliser le bootstrap que je fourni. Ton processeur est de type ARM donc il te faut des binaires compilés pour de l’ARM.
Pour connaître l’architecture d’un modèle :
Quel processeur pour quel modèle ?
2. Cette technique est non invasive, car tu ne fais que lancer des binaires qui sont sur tes disques, et non sur ta rom.
3. Vu que tu ne modifie pas le matériel ni le soft, je ne vois pas pourquoi la garantie ne fonctionnerait plus. Un simple formatage de tes disques remet tout à 0. Par contre les exécutables que tu installes peuvent endommager ton matériel. Pour précision, je ne fourni pas de garantie avec cette manip.
Thanks for the tutorial. I had some isseus but got it to work eventually. Still, if this is the fast version, would the slow version be to compile openjdk yourself. I’d like to try that but can’t find a way to do it the right way anywhere. My ds508 doesn’t have the right libc library either which in this chroot version is 2.7 I believe. Anyways, what the slow version?
Full version is to explain how to generate the bootstrap from a debian repository rather than downloading an archive ready that does not necessarily correspond to your processor architecture.
When I have a little more time … I write it…
To be short, you need:
_on computer with ubuntu or debian or anything else, create a bootstrap for your synology processor architecture (see debian tutorial for that).
_transfert your small bootstrap on your nas.
_finish process by downloading all package you need.
the only difficult part is choosing the right target architecture.
Salut, n’aurais tu pas par le plus grand des hasard la même chose pour DS411J ????
Je t’invite à créer un bootstrap pour ton architecture processeur Marvell Kirkwood mv6281 1.2Ghz ARM. Regardes les tutos à ce sujet sur les wiki debian ou ubuntu.
Hi, could you just provide the links you’ve mentioned? I’m willing to get OpenJDK 6 running on my DS411J for a bigger plan that is to run JDOwnloader on it. If I can get OpenJDK 6 installed on this NAS I will start coding a CLI (command line interface) for JDownloader…
Just point me to the right direction and I will try it…
Gabriel.
a more complete documentation:
http://pellelatarte.fr/2011/06/nas-synology-debian-en-chroot-apache-et-mysql/
Bonsoir,
Je rencontre une erreur :
DS210:~# java -v
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
quelle est la solution?
re,
Pourquoi faire un montage sur les partitions?
#!/bin/ash
mount -o bind /volume1/@local /opt
mount -o bind /dev /opt/debian/chrootgnuspe/dev
mount -o bind /proc /opt/debian/chrootgnuspe/proc
chroot /opt/debian/chrootgnuspe /bin/bash
J’ai réussi à compiler mais obliger de faire ce montage en partitions.
Un tuto sur java et un ds101 avait déjà été fait sans l’installation d’un autre OS.
http://www.nslu2-linux.org/wiki/DS101/JavaOnDS101G
Cdlt
Les montages sont fait pour avoir un environnement complétement viable.
Si ces derniers ne sont pas fait, après le chroot, votre environnement n’a pas accès, par exemple, au périphérique du système ou aux processus actifs.
Le tuto cité, de mémoire, ne fonctionne pas sur ce modèle. La version ppc fournit pas ibm est incompatible.
Un autre avantage de la technique décrite, est qu’elle ne limite pas seulement à Java, mais permet d’avoir accès à la suite complète des applications Debian ou autre.
Bonjour,
1) une problèmatique survient à mon esprit concernant l’environnement actuelle de synology : Ces montages ne sont pas compatibles avec « Optware et ses Packages », pouvons nous faire en sorte que la compatibilité soit assuré?
2) Comment lancer le script « initDebChroot.sh » au démarrage ? Si on le place dans /usr/syno/etc/rc.d/ cela fonctionne?
Comment faire éventuellement le NOGO (revenir à l’état précédent)?
3) Pourquoi avoir localisé les sources dans « /volume1/@local » et « /opt/debian/chrootgnuspe/ »? Pourquoi pas un seul dossier? Pourquoi pas un lien symbolique à l’aide de la commande « ln -s … »?
4) J’ai un problème de mise à jour des sources en effectuant un « apt-get update ». Le lien des sources est-il toujours valide? Une clef d’identification est expirée comment en récupérer une nouvelle?
Merci pour cette super contribution.
ps: projet installer jetty et garder intact les données et les application ou services installés sur le serveur synology ds210+.
Romain
Mon but est d’avoir une alternative à « Optware et ses Packages » que je trouve trop limité. En chroot une debian « presque » complète est dispo.
Pour cela il faut améliorer le script et se référer au docs de Synology
@local n’est pas visible en partage réseau, et /opt est plus « pratique », évite de modifier la structure DSM, les goûts et les couleurs….
la source de la version debian est assez ancienne, il faut maintenant faire repointer les repositories sur les officiels.
Merci.
bon j’ai modifié le script pour enlever « debian » et ca fonctionne presque : maintenant j’ai juste un petit soucis d’apt-get…
mais je ne sais pas le résoudre 🙁
apt-get update
Get:1 http://download.breakpoint.cc lenny Release.gpg [197B]
Get:2 http://download.breakpoint.cc lenny Release [5358B]
Ign http://download.breakpoint.cc lenny Release
Get:3 http://download.breakpoint.cc lenny/main Packages/DiffIndex [509B]
Ign http://download.breakpoint.cc lenny/contrib Packages
Ign http://download.breakpoint.cc lenny/non-free Packages
Err http://download.breakpoint.cc lenny/contrib Packages
404 Not Found
Err http://download.breakpoint.cc lenny/non-free Packages
404 Not Found
Fetched 6064B in 1s (4921B/s)
W: GPG error: http://download.breakpoint.cc lenny Release: The following signatures were invalid: KEYEXPIRED 1286964596 KEYEXPIRED 1286964596 KEYEXPIRED 1286964596
W: Failed to fetch http://download.breakpoint.cc/debian/linutronix-lenny-gnuspe/dists/lenny/contrib/binary-gnuspe/Packages 404 Not Found
W: Failed to fetch http://download.breakpoint.cc/debian/linutronix-lenny-gnuspe/dists/lenny/non-free/binary-gnuspe/Packages 404 Not Found
Merci de votre remarque, je vais corriger les paths dans l’article.
J’ai fait cet article il y a longtemps, depuis, le projet Debian a incorporé ce portage d’architecture dans la branche officielle, donc il doit être possible de changer les repositories vers debian. Ce qui devrait corriger le apt-get update,
ce qui veut dire que l’on doit changer le fichier source.list ?
yep
Hi, first I have to thank you for this tutorial! It really kick me on to try and play with.
There is small inaccurancy in presented script initDebChroot.sh. Right version according to your tutorial might look like this:
There is still one problem to full portability of your solution. How can I get back to original NAS environment? If I use « exit » I get back to original ash but can’t use anything like « reboot », « mount » etc. I get an error like this:
reboot: /lib/libc.so.6: version `GLIBC_2.4′ not found (required by reboot)
Any idea how to get things back without manual reboot of the NAS?
you don’t need to reboot your nas…if you are connected to your nas by ssh (putty or what else) your session will be automatically reset when you close your window.
Alexandre you are right, but my problem was little different. I solved it at last Saturday. I tell you what kind of problem I had. I have my NAS bootstrapped like this describe. So that bootstrap use /opt for bind its files in it. So I changed bind of yours folder to e.x. /local and I can exit from chroot by typing « exit » with no errors.
due to missing package like Java, I removed optware and I wrote this article… If you have a debian why do you want a limited optware?
# apt-get update
Hit http://ftp.fr.debian.org squeeze Release.gpg
Hit http://ftp.fr.debian.org squeeze Release
W: Failed to fetch http://ftp.fr.debian.org/debian/dists/squeeze/Release Unable to find expected entry main/binary-gnuspe/Packages in Meta-index file (malformed Release file?)
es tu sur Alexandre que maintenant gnuspe existe dans les portage officiel de debian ?
http://wiki.debian.org/PowerPCSPEPort
un exemple d’accès direct à un mirroir:
http://ftp.de.debian.org/debian-ports/pool-powerpcspe/main/
Tiens moi au courant si ça fonctionne 😉
…server said ‘/debian-ports/dists/sid/main/binary-gnuspe/Packages: No such file or directory
en fait je pense que le pb vient du nom de la distribution recherchée
binary-gnuspe
As tu une idée de comment changer le nom de la distribution pour pointer vers binary-powerpcspe ?
http://www.hera.cc/2011/09/apt-get-update-sur-debian-powerpc-spe/
bon courage.
Lorsque je suis dans l’environnement de chrootgnuspe (en appelant un des 2 scripts), le jdk fonctionne bien. Cependant, j’aurais besoin d’avoir accès aux packages gcc et binutils. Lorsque je demande de l’info à propos de ces packages (avec ‘aptitude show x’ ou ‘apt-get -s install x’), il semble y avoir des conflits.
Est-ce possible d’installer les bonnes versions de gcc et binutils sans déranger le setup de environnement? Ce qu’il me faudrait alors c’est un url où trouver ces packages.
Ou bien, est-ce quand même possible d’installer les versions disponibles de gcc et binutils (i.e. en solutionnant les conflits un par un) sans que cela dérange le setup java de l’environnement au final?
Est-ce que d’autres usagers ont eu à faire face à cette situation?
Bonsoir,
Lorsque j’essaie sur mon nas 410, j’ai une erreur pour touver libjli.so
nas410:/# /usr/lib/jvm/java-6-openjdk/jre/bin/java
/usr/lib/jvm/java-6-openjdk/jre/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
Cette erreur apparait lorsque /proc est vide.
Pour un raison que je ne comprend pas la double indirection ne fonctionne pas.
/proc -> /volume1/@debian/chrootgnuspe/proc
/volume1/@debian/chrootgnuspe /opt/debian
Donc dans mon cas /volume1/@debian/chrootgnuspe/proc/ est correct, mais /opt/debian/chrootgnuspe/proc/ est vide ! ( mais pas le /dev )
Donc j’ai simplifié un peu le script, et la ca marche.
mount -o bind /dev /volume1/@debian/chrootgnuspe/dev
mount -o bind /proc /volume1/@debian/chrootgnuspe/proc
chroot /volume1/@debian/chrootgnuspe /bin/bash
bonjour,
de quel version de java s’agit-il, et est-ce que c’est compatible avec mon ds508
merci
à l’aide !!!
j’ai suivi le tuto, mais je ne sais pas comment lancer un serveur dlna dans un tuto expliqué ici. http://bubbleguuum.free.fr/upnpserver/#faq8
Bonjour,
Est-ce possible avec un DS210j ? Merci d’avance.
Salut
Est-il juste il pas créer JAVA_HOME?
C’est pour Minecraft.
Merci
I have no idea what to do about Minecraft.
Sorry,
Alexandre
Hi Alex
I solved the problem with JAVA_HOME not defined, but do I put the cripts:
initDebChroot.sh and loadDebChroot.sh in /volume1/@debian/?
And this is what i got after
Nas> ./initDebChroot.sh
Nas:~# ls -1
FirstApp.class
FirstApp.java
jetty
Nas:~#
Thanks