Archive pour la catégorie ‘Technique’

vcgencmd sur un Raspberry Pi avec une image Debian auto-fabriquée

J’ai acheté il y a quelque temps déjà un Rasperry Pi sur lequel j’ai mis une Debian Wheezy « standard » – comprenez « pas une Raspbian ». Pour cela j’ai suivi l’excellent tuto de Hödlmoser : http://blog.kmp.or.at/2012/05/build-your-own-raspberry-pi-image/
Mais ce n’est pas le sujet de ce post :)

Raspi_Colour_R.resized

 

Un outil permettant d’accéder à un bon nombre de paramètre du firmware du Raspberry existe : il s’agit de vcgencmd.
Dans mon cas, je voulais m’en servir pour récupérer la température interne du Raspberry, fournie par un capteur intégré au CPU.

 

Je suis tombé sur les problèmes suivant :
vcgencmd n’était pas connu dans mon PATH. Bon ce n’est pas très grave, il suffit de l’appeler avec son chemin complet : /opt/vc/bin/vcgencmd, ou mieux, d’ajouter /opt/vc/bin au PATH. J’ai choisi de carrément ajouter /opt/vc/bin dans le PATH créé dans le fichier /etc/profile, qui sert de « PATH de base ».

problème de librairie partagée non trouvée :

root@raspberrypi:~# /opt/vc/bin/vcgencmd
/opt/vc/bin/vcgencmd: error while loading shared libraries: libvcos.so: cannot open shared object file: No such file or directory

IL y a deux solutions à ce problème. Choisissez celle que vous préférez, inutile d’appliquer les deux.

La première solution (qui est plutôt une solution de contournement) que j’ai mise en oeuvre est de créer le script suivant dans /usr/local/bin (mais vous pouvez le placer dans n’importe quel dossier, pourvu qu’il soit dans votre PATH) :

#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/vc/lib
export LD_LIBRARY_PATH
exec /opt/vc/bin/vcgencmd $@

Ce script positionne correctement la variable LD_LIBRARY_PATH pour lancer l’utilitaire vcgencmd. Le fait de placer ce script dans un dossier de votre PATH corrigera aussi le premier problème qui était que vcgencmd n’était pas connu dans le PATH.

La deuxième solution est d’ajouter la librairie manquante aux « PATH des librairies partagées système » de Linux.
Pour cela, créez un fichier dans /etc/ld.so.conf.d/. Le nom du fichier doit finir par .conf (vcgen.conf par exemple).
Dans ce fichier, il n’y a qu’une ligne à mettre :

/opt/vc/lib

Passez la commande ldconfig pour appliquer les changements.
Le dossier /opt/vc/lib/ est maintenant utilisé pour la recherche des librairies partagées et la librairie manquante, libvcos.so, sera trouvée.
Il faut tout de même ajouter /opt/vc/bin/ à votre PATH ou bien créer un script (ou un lien) dans un dossier de votre PATH pour lancer la commander vcgencmd sans avoir à écrire tout le chemin.

 

L’avantage de la 1ère solution est que le dossier /opt/vc/lib ne sera scruté que lorsque vous lancerez la commande vcgencmd (via le script). L’inconvénient c’est que c’est un peu brouillon, et que vous risquez de retomber sur le même problème pour un autre programme qui aurait besoin de cette librairie partagée, ou bien d’une autre librairie partagée contenue dans /opt/vc/lib.
Pour la 2ème solution c’est l’inverse : elle est plus universelle car toutes les librairies partagées de /opt/vc/lib seront scrutées pour tous les programmes. L’inconvénient est que du coup, il y a une petite perte de performances. C’est négligeable lorsque l’on ajoute seulement un dossier qui contient quelques librairies partagées comme ici, mais ajouter de nombreux dossiers, contenant chacun de nombreuses librairies, peut affecter les performances du système puisque ce dernier va scruter toutes les librairies partagées indiquées (jusqu’à trouver la bonne) quand il devra chercher une librairie partagée.

 

Au final, j’ai choisi :
– d’ajouter /opt/vc/bin/ au « PATH de base » créé dans /etc/profile
– la 2ème solution pour le problème de la librairie partagée manquante

 

PS : quand même, un petit exemple d’utilisation de vcgencmd pour récupérer la température interne du Raspberry :

root@raspberrypi:~# vcgencmd measure_temp
temp=56.8'C

 
 

Liens utiles :
– A propos de LD_LIBRARY_PATH : http://www.cc.dtu.dk/?page_id=304
– Ajouter des librairies partagées à Linux : http://blog.andrewbeacock.com/2007/10/how-to-add-shared-libraries-to-linuxs.html
– A propos de vcgencmd : http://elinux.org/RPI_vcgencmd_usage
– Pour créer sa propre image Debian pour son Raspberry : http://blog.kmp.or.at/2012/05/build-your-own-raspberry-pi-image/

Munin : configurer le temps de rafraîchissement

Par défaut, le temps de rafraîchissement des données dans Munin est de 5 min. Dans certains cas, ce temps n’est pas adapté aux mesures que l’on veut effectuer.
A partir de la version 2.0 de Munin, il est possible de configurer ce temps, moyennant tout de même quelques manipulations.

Dans cet article, je vais vous montrer comment configurer Munin pour avoir un rafraîchissement toutes les minutes, mais vous pouvez configurer une autre période.
Il n’est pas possible facilement de descendre en dessous de la minute. Si vous voulez descendre sous la minute, il faudra bidouiller cron comme ici par exemple.
 
Attention : tous les plugins doivent partager la même périodicité, donc ils doivent tous êtres compatibles avec la périodicité que vous choisissez.

 

Etape 1

Arrêter munin. Si un noeud est présent sur le serveur Munin, arrêter aussi munin-node.

/etc/init.d/munin stop
/etc/init.d/munin-node stop

Si possible, arrêter les cron de munin et munin-node. Mettez en commentaire les lignes concernées dans /etc/cron.d/munin et /etc/cron.d/munin-node.
Si pour une raison ou une autre il ne vous est pas possible de faire cette dernière manipulation, ce n’est pas très grave (vous aurez juste des erreurs qui vont sortir dans les logs).

 

Etape 2

Dans /etc/munin/munin.conf, ajouter :

update_rate 60      # en secondes

# permet de configurer le nombre de données gardées dans les
# fichiers rrd (donc la taille des fichiers, et la granularité des données)
graph_data_size custom 1d, 5m for 1w, 15m for 1y, 1h for 5y  
# Voir aussi :
# http://munin-monitoring.org/wiki/format-graph_data_size
# http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html

 

Etape 3

Adapter le cron de munin : dans /etc/cron.d/munin modifier la ligne :

*/5 * * * *     munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi

par la ligne :

*/1 * * * *     munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi

 

Etape 4

Dans /var/lib/munin : supprimer tous les fichiers (laisser les dossiers)
Supprimer les fichiers (.rrd) dans les dossiers correspondant aux noms des domaines

 

Etape 5

Supprimer les logs (c’est plus simple pour retrouver les nouvelles erreurs) dans /var/log/munin
Attention : laisser les fichiers munin-cgi-graph.log et munin-cgi-html.log (ou bien les recréer vides avec les droits -rwxr-x— 1 www-data www-data)

 

Etape 6

Redémarrer munin et munin-node :

/etc/init.d/munin start
/etc/init.d/munin-node start

Décommentez les lignes dans les fichiers /etc/cron.d/munin et /etc/cron.d/munin-node le cas échéant.

 
Voilà, normalement c’est tout bon!

 

Quelques remarques importantes

Tous vos graphes seront réinitialisés, vous perdrez toutes les données mesurées jusqu’à maintenant.
La taille des fichiers RRD peut augmenter considérablement en fonction des paramètres que vous choisissez à l’étape 2. Je vous conseille de lire http://munin-monitoring.org/wiki/format-graph_data_size.
Mettre un temps de rafraîchissement très court sur une grosse installation peut affecter considérablement les performances de votre serveur.

Installation de MyTinyTodo sur Debian avec Apache/MySQL

J’ai vu un article sur le blog de Nicolargo à propos d’un outil en ligne, libre et qu’il est possible d’auto-héberger qui permet la gestion de ses « todo-lists » personnelles : mytinytodo. Je ne reviendrai pas sur cet article très bien fait, voici simplement la méthode d’installation de mytinytodo sur le couple Apache/MySQL (l’article de Nicolargo traite de l’installation sur NGinx/SQLite).

Toutes les commandes de cet article sont passées en tant que root.

 

Prérequis

Avoir un apache qui fonctionne, avec les sites dans /var/www/
Si ça n’est pas déjà fait, installer le paquet php5-mysql :

apt-get install php5-mysql

Avoir un MySQL fonctionnel.

 

Installation

Configuration MySQL

Se connecter à MySQL :

mysql -p

Dans MySQL, passer les commandes suivantes :

CREATE DATABASE mytinytodo;
GRANT ALL privileges ON mytinytodo.* TO 'mytinytodo'@'localhost';
SET password FOR 'mytinytodo'@'localhost' = password('mytinytodopwd');
quit

Vous pouvez bien sur changer le nom de la base de données, de l’utilisateur et du mot de passe, mais pensez à bien reporter ces changements à l’étape de configuration de mytinytodo.

Installation de mytinytodo

Passer les commandes suivantes :

cd /var/www/
wget http://mytinytodo.googlecode.com/files/mytinytodo-v1.4.2.zip
unzip mytinytodo-v1.4.2.zip
rm mytinytodo-v1.4.2.zip
cd /var/www/mytinytodo/lang/
wget http://www.mytinytodo.net/lang/zip/fr.zip
unzip fr.zip
rm fr.zip
sudo chown -R www-data:www-data /var/www/mytinytodo

Configuration de mytinytodo

Allez à l’adresse : http://votre_adresse/mytinytodo/setup.php
Choisissez MySQL et les options suivantes :

Le Password est « mytinytodopwd » que vous avez configuré dans MySQL.

Finalisation

Supprimer /var/www/mytinytodo/setup.php :

rm /var/www/mytinytodo/setup.php

 

Utilisation

Là, je vous recommande la lecture de l’article de Nicolargo, je ne ferai pas mieux =)
Vous pouvez bien sur aussi aller vous balader sur le site de mytinytodo et notamment sur la page de démo.

 

Références

Blog de Nicolargo : http://blog.nicolargo.com/
Site de mytinytodo : http://www.mytinytodo.net

Installation de GateOne : nouveau client SSH en HTML5

J’ai déjà parlé dans un précédent article d’ajaxterm, un client SSH web, et de la manière de l’intégrer à Apache.

Un nouveau client SSH web vient de sortir : GateOne. Grosse différence : il est en HTML5 ! Enfin, il y a toujours du python derrière, mais le client, dans un navigateur, utilise bien l’HTML5. Par contre, il est encore en beta, et j’ai des soucis avec le clavier français par exemple (ce qui n’est pas très pratique, notamment pour les mots de passe…). Bon, c’est très prometteur, et ces bugs de jeunesse devraient être corrigés assez rapidement.

Procédure d’installation (sur Debian, mais ça devrait être à peu près pareil sur d’autres distributions, au gestionnaire de paquets près) :

1) Mise à jour de la distribution :

apt-get update
apt-get upgrade

2) Installation des prérequis :

apt-get install python-pip dtach python-pyopenssl python-kerberos python-dev git build-essential
pip install tornado pyopenssl

3) Téléchargement des sources :

git clone https://github.com/liftoff/GateOne.git

4) Installation :

cd GateOne/
python setup.py install

5) Lancement de GateOne :

cd /opt/gateone/
./gateone.py

Si, comme moi, vous avez déjà quelque chose qui tourne sur le port 443 (apache, à priori…) vous aurez l’erreur suivante :

Traceback (most recent call last):
File "./gateone.py", line 1212, in
main()
File "./gateone.py", line 1203, in main
http_server.listen(options.port, options.address)
File "/usr/local/lib/python2.6/dist-packages/tornado/netutil.py", line 100, in listen
sockets = bind_sockets(port, address=address)
File "/usr/local/lib/python2.6/dist-packages/tornado/netutil.py", line 265, in bind_sockets
sock.bind(sockaddr)
File "", line 1, in bind
socket.error: [Errno 98] Address already in use

En effet, GateOne écoute sur le port 443 par défaut. Le fichier de configuration est généré à la première utilisation, mais on peut maintenant l’éditer :

vim server.conf

Remplacer le port spécifié par un port libre. Vous pouvez maintenant relancer GateOne, et y accéder à l’adresse : https://ip.de.votre.serveur:port

Une dernière astuce : je conseille de lancer GateOne avec la commande nohup, histoire qu’il continue de fonctionner après que vous ayez quitté le terminal dans lequel vous l’avez lancé :

nohup ./gateone.py &

Pour l’arrêter, il faudra par contre killer le process du coup.

Voilà, on attend maintenant la correction des quelques bugs qui restent!

 

Sources :
http://korben.info/client-ssh-html5.html
http://tiennot.fr/romain/index.php?post/2011/10/15/Installer-Gate-One-Client-SSH-en-HTML5
https://github.com/liftoff/GateOne
http://liftoff.github.com/GateOne/About/index.html

NAS Synology: Debian en chroot, apache et mysql

Le système d’exploitation embarqué dans les NAS Synology, le DSM, est un système plutôt sympathique à utiliser, et qui permet de s’éviter des heures de configuration. Activer un serveur ftp en 2 clics est assez appréciable.

Quand on veut aller plus loin, avoir une configuration apache particulière, utiliser screen + irssi, et toutes ces choses qui ne sont pas prévus par le fabriquant, cela devient plus compliqué. Même si obtenir un accès SSH root est très facile, on tombe sur des consoles qui ne sont pas en UTF-8, avec un busybox énervant, un système de paquet obsolète avec un choix limité. Et surtout, on risque de casser le système en bidouillant la configuration, qui est assez tentaculaire, et régénérée en partie à chaque changement dans l’interface.

Il y a une solution que je trouve assez élégante à ce problème, c’est d’installer une Debian en parallèle du système de base, grâce à debootstrap et un chroot. Dit comme ça, ça a l’air bien compliqué, mais en réalité, c’est plus simple et moins risqué que de triturer le DSM, avec en bonus, toute la puissance de Debian. Le principe est que nous allons ’embarquer’ une Debian sur le NAS, qui va tourner dans un compartiment restreint, le chroot. Nous aurons donc les deux systèmes qui tournent en parallèle, les deux faisant des appels au même noyaux, celui du DSM.

Mise en place de Debian

Il va nous falloir une Debian qui tourne quelque part pour générer un système de base. Si vous n’en avez pas, vous pouvez l’installer dans une machine virtuelle le temps de faire la manip (Debian net-install et Virtualbox font très bien l’affaire). Un fois ceci fait, on va utiliser debootstrap de nous générer une archive minimale pour notre architecture cible, l’ARM :

sudo apt-get install debootstrap
mkdir sdebian
sudo debootstrap --foreign --arch armel squeeze sdebian
sudo tar -cvzfp sdebian.tar.gz sdebian

Transférez l’archive obtenue sur votre NAS, placez la dans /volume1/, connectez vous au NAS grâce à telnet et désarchivez la :

tar -xvzfp sdebian.tar.gz

Mise en place du chroot

Debian aura besoin de faire des appels au noyau linux du DSM. Nous allons donc rendre accessible dans le chroot les répertoires spéciaux comme /proc, /dev …

On va utiliser un petit script shell qui va nous permettre de faire les quelques opérations nécessaires et d’entrer dans le chroot. Éditez un fichier chroot.sh, et copiez y les commandes suivantes:

CHROOT=/volume1/sdebian
mount -o bind /dev $CHROOT/dev
mount -o bind /proc $CHROOT/proc
mount -o bind /dev/pts $CHROOT/dev/pts
mount -o bind /sys $CHROOT/sys

cp /etc/resolv.conf $CHROOT/etc/resolv.conf

# Si installation d'un apache sur le port 80 dans Debian,
# voir la suite de l'article
# /usr/syno/etc.defaults/rc.d/S97apache-user.sh stop

chroot $CHROOT /bin/bash

Executez le en root, et vous serez dans le chroot. Il reste maintenant à finaliser l’installation de Debian :

/debootstrap/debootstrap --second-stage

Générez un fichier sources.list correct grâce à http://debgen.simplylinux.ch, et placez le dans /etc/apt/sources.list.

Une petite mise à jour de Debian:

apt-get update
apt-get upgrade

Ajout d’un compte utilisateur:

adduser babar

J’ai du corriger quelques droits d’accès qui se sont perdus dans la bataille. Il y en a probablement d’autres, à vous de corriger si nécessaire.

chmod 777 /tmp
chmod +t /tmp

Installation du minimum vital:

apt-get install openssh-server htop most uptimed screen irssi

Pour que la Debian soit fonctionnelle, il faut maintenant faire tourner un certain nombre de services. Sur une Debian normale, ces services sont lancés par init, mais ce n’est pas notre cas. Il faudra donc les lancer manuellement. Éditez un fichier services.sh que vous placerez dans votre $HOME, et placez y le contenu suivant :

/etc/init.d/rsyslog start
/etc/init.d/mtab.sh start
/etc/init.d/cron start
/etc/init.d/ssh start
/etc/init.d/uptimed start
# Si installation d'apache et de mysql, voir la suite de l'article
# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

Et voilà, votre Debian est fonctionnelle ! Vous avez virtuellement deux systèmes qui tournent en parallèle. Si votre NAS s’éteint, vous devrez lancer le script chroot.sh, qui vous emmène dans la Debian, puis le script services.sh. Si vous vous connectez en telnet, vous tomberez sur le DSM, et en ssh, sur Debian.

Installation d’apache et de mysql

Le DSM fait déjà tourner deux apache, un pour l’interface web, l’autre pour les web station et photo station. L’un des deux écoute sur le port 80, et redirige vers l’interface web (port 5000/5001) si nécessaire. Si vous voulez faire tourner un apache sur le port par défaut, il va falloir faire deux choses:

  • Allez dans l’interface d’administration et activez la web station
  • Arrêtez le deuxième apache par telnet:
/usr/syno/etc.defaults/rc.d/S97apache-user.sh stop

Après installation d’apache et de mysql, pensez à dé-commenter les lignes correspondantes dans les deux scripts. On a perdu au passage les web et photo stations, mais si vous voulez un apache personnalisé, c’est probablement que vous n’en avez pas besoin. Si vous changez d’avis, vous pouvez toujours réactiver le service apache du DSM, la configuration est restée intacte.

Conclusion

A l’usage, c’est une solution très efficace. Les services avancés du NAS d’un coté, la simplicité et la puissance de Debian de l’autre. La différence se situe au niveau de l’occupation en RAM, même si cela reste bien raisonnable. Après 20 jours d’uptime, l’occupation mémoire est de 170Mo sur 512Mo, sachant que Linux à tendance à ne pas trop nettoyer la mémoire s’il n’en a pas besoin.

Source:

http://www.seken.co.uk

Edit: meLIanTQ a proposé une solution pour un lancement automatique du chroot au démarrage du NAS: Le commentaire

Installer ajaxterm sur un NAS Synology et y accéder en https

Ajaxterm est un terminal dans une page web, accessible donc simplement par un navigateur web. Les avantages? Il est accessible de partout, quelque soit le proxy, pare-feu, antivirus, ou n’importe quelle protection mise en place, du moment que le http/https passe. Les inconvénients : c’est un peu lent, et pas sécurisé si vous ne passez pas par de l’https.

J’ai un peu galéré, mais j’ai fini par réussir à installer ajaxterm sur mon NAS Synology et à configurer son accès en https. Comme ça peut servir à d’autres (private : je vise personne :D ), voilà ma méthode.

1) Installation de python 2.5

Ajaxterm nécessite python pour fonctionner, donc il faut l’installer :

ipkg install python25

2) Installation d’ajaxterm

Téléchargez ajaxterm :

wget http://antony.lesuisse.org/software/ajaxterm/files/Ajaxterm-0.10.tar.gz

Extraire les fichiers :

tar -xzf Ajaxterm-0.10.tar.gz

Éditez le fichier ajaxterm.py et modifiez la ligne suivante en remplaçant localhost par l’IP de votre NAS :

qweb.QWebWSGIServer(at,ip='localhost',port=int(o.port),threaded=0,log=o.log).serve_forever()

Je ne sais pas pourquoi, je n’ai pas réussi sans cette manip. 127.0.0.1 ou localhost ne fonctionnent pas, il faut vraiment mettre l’IP de votre NAS sur votre LAN (192.168.0.X en général).

Copiez le dossier Ajaxterm-0.10 où bon vous semble, ajaxterm ne « s’installe » pas plus que ça. Tout ce qui est nécessaire est dans ce dossier, que vous pouvez mettre n’importe où.

Pour lancer ajaxterm, c’est tout simplement, dans le dossier Ajaxterm-0.10 :

nohup python2.5 ajaxterm.py

A ce stade, vous pouvez normalement accéder à ajaxterm à l’adresse : http://ip.de.votre.nas:8022/
ajaxterm

Mise en place de l’accès https par apache

Etant donné qu’il y a déjà un apache d’installé sur les NAS Synology, configuré de manière (très) particulière, et qu’il sert à accéder à l’interface d’administration du NAS, on va éviter de le casser :)
J’ai opté pour l’installation d’un second apache, avec ipkg :

ipkg install apache

Ce nouvel apache ne sera pas accessible sur le port 80 puisque celui-ci est déjà utilisé par l’apache d’origine. Par contre, il est à l’écoute sur le port 8000, et vous devriez avoir accès à la célèbre page « It works! » à l’adresse http://ip.de.votre.nas:8000

Pour info, l’arrêt/relance de ce nouvel apache se fait avec les commandes suivantes :

/opt/sbin/apachectl start
/opt/sbin/apachectl stop

Editez la configuration https d’apache : /opt/etc/apache2/extra/httpd-ssl.conf
Il faut apporter les modifications suivantes :

--------------------------------------------------------------------
Listen 443
Listen 4430 (vous pouvez mettre un autre port)
--------------------------------------------------------------------
<VirtualHost _default_:4430>
NameVirtualHost *:4430
<VirtualHost *:4430>
--------------------------------------------------------------------
DocumentRoot "/opt/share/www"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog "/opt/var/apache2/log/error_log"
TransferLog "/opt/var/apache2/log/access_log"
ServerName localhost
--------------------------------------------------------------------

Et ajouter les lignes suivantes juste avant la balise :

--------------------------------------------------------------------
ProxyRequests Off
    Order deny,allow
    Allow from all

ProxyPass /ajaxterm/ http://ip.de.votre.nas:8022/
ProxyPassReverse /ajaxterm/ http://ip.de.votre.nas:8022/
--------------------------------------------------------------------

Une dernière chose : il est plus propre d’utiliser le certificat déjà présent sur le nas. C’est tout simple :

rm /opt/etc/apache2/server.crt
rm /opt/etc/apache2/server.key
ln -s /usr/syno/etc/ssl/ssl.crt/server.crt /opt/etc/apache2/server.crt
ln -s /usr/syno/etc/ssl/ssl.crt/server.key /opt/etc/apache2/server.key

Relancez apache, et normalement c’est tout bon! Vous avez accès en https à votre ajaxterm à l’adresse suivante : https://ip.de.votre.nas:4430/ajaxterm/

ajaxtermhttps

Remarques

– Ajaxterm semble ne pas fonctionner sous Firefox 3.6 sous Linux. Je n’ai pas encore trouvé pourquoi. Ca fonctionne par contre correctement sous Chrome et Firefox 4.0 sous Linux, et sous toutes les versions de Firefox sous Windows (en fait ça fonctionne sans doute dans toutes les autres configurations…)
– Je ne suis pas sur de la fiabilité de la configuration apache donnée ici. Elle fonctionne mais je ne vous garantie pas qu’elle est sure à 100% vu que je n’ai pas encore vraiment compris l’organisation particulière de la configuration d’apache installée avec ipkg.

Incruster des sous-titres dans un film avec mencoder

Un mini-post ultra rapide sur une technique pour incruster des sous-titres dans un film au format avi avec mencoder :

mencoder -sub fichier_sous_titres.srt -fontconfig -font Arial -subfont-text-scale 4  -oac mp3lame -lameopts cbr=128 -ovc xvid -xvidencopts bitrate=900 film_original.avi -o film_avec_sous_titres.avi

On retrouve cette commande dans la doc Ubuntu.

NAS Synology : go root n00b!! (et faites un truc utile tant qu’à faire)

J’ai fini par craquer, et je me suis acheté un nouveau jouet : un NAS Synology DS411j \o/
Voilà la bête (la photo est plus moche que toutes celles que vous trouverez sur le net mais c’est moi qu’a fait!) :
DS411j

Bref. Tout ça pour dire que je suis vraiment pas déçu de l’engin. Silencieux (ou pourrait dormir à coté je pense), compact pour un 4 baies, et surtout niveau fonctionnalités, c’est un festival. Voici donc un premier article dédié au DS411j, sachant que bien sûr tout ce que je dis dois s’appliquer à n’importe quel NAS Synology à priori. Il y en aura surement d’autres, au fur et à mesure que je casserai bidouillerai des trucs. Dans cet article :
– accès root en SSH au NAS
– installation d’un gestionnaire de paquets : ipkg
– utilisation de base d’ipkg et exemple d’installation de quelques logiciels

Accès root en SSH :

Pour commencer, il faut activer le SSH dans le panneau de configuration du NAS. Ca se passe dans Panneau de configuration -> Terminal, cochez la case « Activer le service SSH ». Le SSH sera alors actif pour l’utilisateur « admin » (celui créé à l’initialisation du NAS) et pour l’utilisateur « root ». Le mot de passe de root est le même que celui que vous avez mis pour admin. Il est sans doute possible d’utiliser le SSH avec d’autres utilisateurs, mais j’ai pas tout compris à la gestion des utilisateurs encore, donc pour le moment ça sera root. De toutes façons, on en a besoin pour la suite.
C’est tout, le SSH est activé.

Installation d’un gestionnaire de paquets : ipkg

Le seul manque que j’ai remarqué pour le moment est l’absence d’un gestionnaire de paquet installé de base. Mais comme il est possible (et pas trop compliqué) d’en mettre un, pour les quelques geek qui s’en serviront, c’est pas très gênant.
Apparemment, le gestionnaire de paquets « officiel » de Synology est ipkg. Son utilisation ressemble beaucoup à l’apt-get de Debian. Il est peut-être possible d’en installer un autre, mais ça doit être un peu (beaucoup?) plus compliqué. Le processus d’installation d’ipkg est donné sur le wiki de Synology, mais je vous en fait une version française.
– Vérifiez quel type de CPU est installé sur votre NAS : ici
– Connectez vous en SSH (utilisateur root) à votre NAS
– Téléchargez le bootstrap (script d’installation d’ipkg) qui correspond à votre CPU : ici. Conseil, faites le avec wget. Par exemple, pour le DS411j :

wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unst
able/syno-mvkw-bootstrap_1.2-7_arm.xsh

– Exécutez le script que vous venez de télécharger. Exemple, pour les CPU de type ARM :

sh syno-mvkw-bootstrap_1.2-7_arm.xsh

– Enjoy !

Utilisation de base d’ipkg et exemple d’installation de quelques logiciels

2 commandes de base, qui sont les mêmes que pour apt-get :
– Mise à jour de la table répertoriant les paquets disponibles :

ipkg update

– Mise à jour de tous les paquets ipkg installés sur votre NAS dans leur dernière version
Et pour installer un paquet, c’est encore comme apt-get :

ipkg install <nom du paquet>

Deux exemples :
– Parce que ça peut servir ^^ (ça aurait pu y être de base d’ailleurs…) :

ipkg install man

– Parce que vi c’est bien, et vim c’est mieux :

ipkg install vim

Conclusion (provisoire!)

Le premier truc qui me vient à l’esprit : franchement, il est bien cool ce NAS. Si vous hésitez entre plusieurs marques, je recommande donc sans aucune hésitation Synology (après le modèle à vous de voir ce dont vous avez besoin, les fonctionnalités sont globalement les mêmes sur tous). Et la suite est plus que prometteuse ! To be continued !

Gérez et publiez vos collections avec GCstar !

En cherchant un moyen de répertorier mes CD je suis tombé sur un logiciel vraiment très bon : GCstar.
C’est bien sûr un logiciel libre, et il a pour but de vous aider à gérer toutes vos collections, aussi variées soient-elles. Un certain nombre de collections sont prédéfinies (films, BD, CD, livres, musique, …) mais vous pourrez définir vous-même un nouveau type de collection si besoin.
GCstar est annoncé pour fonctionner aussi bien sous Linux que sous Windows et MacOS mais je n’ai essayé que la version Linux.

La grande force de GCstar est son moteur de recherche intégré, basé sur des plugins (très simples d’ailleurs). Pour les CD, cela vous permet par exemple de ne rentrer que le titre d’un CD que vous voulez ajouter à la bibliothèque, et GCstar va chercher toutes les informations (artiste, chansons, pochette, durée..) qu’il trouve sur des sites que vous aurez défini (Amazon par exemple). C’est en fait la définition de ces sites qui se fait par l’ajout de plugins.

La publication en ligne de votre collection n’est pas gérée directement par GCstar, mais il existe un outil tout fait et près à l’emploi pour ça : GCweb
Il y a même une démo de l’outil ici.

Puisque c’est pour cela que je l’ai choisi, je vais détailler les étapes permettant d’ajouter vos CD à votre bibliothèque et la mise en ligne de votre collection.
Un résumé de la démarche :
– Installer GCstar (sans blague….)
– Créer une nouvelle collection
– Ajouter le plugin de recherche des informations sur Amazon
– Ajouter vos CD
– Envoyer les fichiers de GCstar sur votre serveur web
– Mettre en place GCweb
– Enjoy

– Installer GCstar
Ca se fait très simplement via la Logithèque Ubuntu pour ceux qui sont sur Ubuntu, pour les autres tout est expliqué sur le site de GCstar

– Créer une nouvelle collection
Pareil, rien de sorcier. Sélectionnez « Collection musicale » (astuce : sauf si vous voulez faire une autre collection hein :D ) et c’est parti.

– Ajouter le plugin de recherche des informations sur Amazon
Par défaut, GCstar inclut la recherche sur Discogs et Musicbrainz. Si ça vous suffit vous pouvez sauter cette étape, mais j’ai l’impression que Amazon est quand même plus complet. Donc pour Amazon, c’est sur le forum de GCstar que ça se passe. Pour ceux qui n’ont pas envie de créer un compte pour accéder aux pièces jointes du forum, j’ai fait une copie ici. Il suffit d’ajouter les fichiers contenus dans cette archive dans le dossier /lib/GCPlugins/GCmusics/. Sous Ubuntu, le chemin complet est /usr/share/gcstar/lib/GCPlugins/GCmusics/.
Vous l’aurez compris, les plugins pour les autres types de collection se trouveront dans /lib/GCPlugins/XXXX.

– Ajouter des CD
Là rien de bien sorcier. Pour choisir vos méthodes de recherche des informations, allez dans Configuration/Préférences/Internet, c’est le menu « Sites où récupérer les fiches ». Pour ajouter un CD, cliquez sur « Ajouter », entrez le titre, l’auteur dans la barre de recherche (là où il y a marqué « Nouvel album ») et cliquez sur « Télécharger ». Une liste des résultats de la recherche apparait, choisissez celui qui vous convient et validez.

– Envoyer les fichiers de GCstar sur votre serveur web
Envoyez le fichier .gcs et le dossier _pictures (sous Ubuntu dans /home/votre_user par défaut) dans le dossier « collections » de l’arborescence de GCweb. Vous pourrez mettre à jour ces fichiers plus tard, si vous complétez votre collection (il faudra simplement envoyer les nouveaux fichiers sur le serveur).

– Mettre en place GCweb
Il vous faudra avant tout un serveur web fonctionnel. GCweb n’a pas de restriction pour un serveur web en particulier, mais il faut que le serveur gère le PHP5 et qu’il ait la librairie GD2 ou supérieure. Un serveur web sous Linux est conseillé pour les tris par date, qui risquent de ne pas fonctionner sur une autre plateforme.
Pour la démarche : il suffit d’envoyer le contenu de l’archive sur votre serveur web. Avec un navigateur, allez ensuite à l’adresse de votre serveur, à l’emplacement où vous avez mis les fichiers de GCweb. Vous aurez une page de configuration. Remplissez les champs en fonction de vos préférences et de votre configuration.
Une fois que votre configuration vous satisfait, allez à l’adresse de votre serveur web. Normalement, votre collection est en ligne. Il est conseillé de carrément supprimer le fichier config.php (que vous avez renommé pendant l’étape de configuration de GCweb) pour éviter que quelqu’un s’en serve. Gardez-en une copie quelque part, mais pas à un endroit accessible depuis internet.

-Enjoy !
Si vous avez des questions, n’hésitez pas à aller sur le forum de GCstar. Vous pouvez aussi m’en poser dans les commentaires, j’essayerai d’y répondre.

Compiler Gimp avec LLVM/Clang et analyse statique

Clang, qui utilise l’infrastructure de LLVM, est un compilateur pour la famille de langage du C. Son but est d’offrir une alternative moderne à GCC. Avec Clang arrive notamment un très sympathique analyseur statique du code source. Nous allons appliquer ça à Gimp.

Pour ça, j’ai lâchement copié et adapté la procédure donné par Campbell Barton, de la team Blender. (http://wiki.blender.org/index.php/User:Ideasman42/BlenderClang).

Voici ce que ça donne à la sauce Gimp:

Etape 1: compiler LLVM/Clang

J’ai d’abord essayé avec la version fournis dans ArchLinux, mais Clang s’arrêtait avec une fatal error. Ça se passe bien mieux avec la version de développement. Pour la récupérer, le script de Campbell Barton fonctionne très bien.

Etape 2: configurer la compilation de Gimp

Déjà, il faut ajouter les binaires de LLVM dans le PATH:

export PATH=$PATH:/opt/llvm/bin

La seule différence avec une compilation classique, c’est qu’on demande explicitement le compilateur de CLang:

CC=ccc-analyzer ./autogen.sh --prefix=/opt/gimp/

Etape 3: compiler

Si vous voulez juste compiler, la procédure ne change pas.

make -j3

Si vous voulez lancer en même temps une analyse statique, il faut utiliser scan-build:

scan-build -o clang make -j3

Attention, une compilation avec analyse statique prend pas mal de temps (3h40 avec mon Core 2 Duo E4500).

Etape 4: profit !

L’analyseur statique de LLVM va probablement trouver tout un tas de bug dans le code. Il y a bien sûr des faux positifs, mais c’est dans l’ensemble remarquablement bien fait ! Vous trouverez le résultat de l’analyse de master que j’ai fait aujourd’hui ici: http://pellelatarte.fr/dawa/gimp-llvm/