Dans cet article, je vais reprendre les étapes pour installer ipkg sur un NAS Synology DS211. On peut trouver la procédure générique sur pas mal de sites, mais cet article me permet de l’avoir toujours sous la main adapté à mon modèle ^^. De plus j’ai eu un problème suite au bootstrap sur le DSM 4.0 et j’ai mis un peu de temps à trouver la solution.
Sources :
- Bootstrap :
http://www.nas-forum.com/forum/topic/18553-bootstrap-ds211/
- Correction de l’erreur ipkg :
http://www.nas-forum.com/forum/topic/26393-messages-derreurs-ipkg/#entry1319132478
ATTENTION : cet article est fournit à titre informatif et sans aucune garantie, toute manipulation est à faire à vos risques et périls. De plus il est impératif d’avoir un backup de ses données avant toute manipulation de ce type sur un NAS.
Ouvrir une session SSH sur le NAS.
Se placer dans le volume1:
cd /volume1
Puis choisir un des deux méthodes suivante :
Méthode 1 (celle que j’ai utilisée) :
Lancer le téléchargement d’un bootstrap compatible :
wget ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh
Puis renommer et exécuter le xsh:
mv syno-mvkw-bootstrap_1.2-7_arm.xsh bootstrap.xsh sh *bootstrap*.xsh
Vous allez obtenir un message d’erreur:
Error: CPU not Marvell Kirkwood, probably wrong bootstrap.xsh
En effet le processeur n’est pas le bon, mais dans notre cas, ce n’est pas un problème, nous allons donc faire un petit hack du script :
vi bootstrap.sh
Il faut aller à la ligne 21 et retirer le « -KW pour passer de ce code:
if ! grep Feroceon-KW /proc/cpuinfo >/dev/null 2>&1; then
à
if ! grep Feroceon /proc/cpuinfo >/dev/null 2>&1; then
Note : pour enregistrer le fichier et quitter sous vi, et taper « :wq » sans les »
Méthode 2 :
A cette adresse vous trouverez les liens vers les bootstrap pour un grand nombre de NAS Synology : http://tools.forret.com/synology/bootstrap.php
Télécharger celui qui convient et le renommer
wget http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh mv syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh bootstrap.xsh
Quel que soit la méthode choisie :
(re)lancer le bootstrap:
sh bootstrap.sh
Puis vérifier la présence du dossier init.d:
mkdir -p /opt/etc/init.d
On reboot le Syno.
Une fois le syno rebooté, lancer l’update d’IPKG:
ipkg update
Puis nettoyer l’installation:
rm -f *bootstrap*.xsh rm -r /volume1/tmp
Normalement c’est terminé, mais voila ce que j’obtenais avec un ipkg update :
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz An error ocurred, return value: 1. Collected errors: ipkg_download: ERROR: Command failed with return value 41: `wget --passive-ftp -q -P /opt/ipkg-oVTLET http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz'
Première étape : vérifier vos variables d’environnement
Un petit echo $PATH pour voir :
echo $PATH /opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
Ce qui compte, c’est voir « /opt/bin:/opt/sbin: ». Attention, autre point important, ces valeurs doivent impérativement apparaître en tête.
Si ce n’est pas le cas, il faut modifier le fichier /etc/profile (avec vi par exemple). Par sécurité, j’ai également modifié le fichier /root/.profile
Ensuite, on reboote le Synology.
Seconde étape : S’assurer que les packages libidn et wget-ssl sont correctement installés
Notre modification du profil fait que la commande ipkg est désormais reconnue, on peut donc lancer ipkg sans spécifier son répertoire d’installation. Mais ipkg a besoin des packages libidn et wget-ssl. Si ces packages sont absents, on obtient ceci lorsqu’on fait un ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz ipkg: /opt/ipkg-Ou9T0w/Packages.gz: No such file or directory file_copy: ERROR: failed to copy /opt/ipkg-Ou9T0w/Packages.gz to /tmp/ipkg.UXnnIV/optware.gz An error ocurred, return value: 1.
Normalement, le bootstrap installe ces deux packages, mais il peut arriver que cela foire. Donc on va les installer à la main. Dans un premier temps, on récupère les deux fichiers dans le repository correspondant à votre installation. C’est facile, il suffit de se rendre sur la page indiquée en réponse à la commande ipkg update. Pour moi, il s’agit donc de http://ipkg.nslu2-li…cross/unstable/ mais cela dépend évidemment de votre Synology.
Connecté en root dans un terminal, on fait donc :
cd /volume1/@tmp wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/libidn_1.25-1_arm.ipk wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/wget-ssl_1.12-2_arm.ipk
Puis on installe :
ipkg install libidn_1.21-1_arm.ipk
et donc, logiquement
ipkg install wget-ssl_1.12-2_arm.ipk
Note : Si vous obtenez un message indiquant un dépendance manquante, rendez vous avec un navigateur sur la page http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ et chercher le package. Puis vous le téléchargez et vous l’installez avant libdn et wget-ssl
Pour cette deuxième installation, si vous n’avez pas correctement renseigné votre variable $PATH, vous allez avoir une erreur de dépendance wget. C’est tout simplement parce que wget existe alors à deux endroits dans votre Synology, et que la version utilisée n’est pas la bonne. Petite vérification :
which wget /opt/bin/wget wget -V GNU Wget 1.12 built on linux-gnueabi.
Tout va bien, on utilise la bonne version (celle dans /opt/bin). Mais si on obtient ceci :
which wget /usr/syno/bin/wget > wget -V GNU Wget 1.10.1
C’est que la variable $PATH n’est pas bien renseignée, et que les valeurs « /opt/bin:/opt/sbin » ne sont pas en tête de ligne dans le fichier /etc/profile. Il faut corriger votre profil pour éviter ce problème, donc retour à l’étape un si c’est le cas.
Après ces deux étapes, vous devriez obtenir un ipkg opérationnel. En tout cas pour moi c’est OK maintenant :
ipkg update Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz Inflating http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gz Updated list of available packages in /opt/lib/ipkg/lists/cross Successfully terminated.