A la Découverte du Raspberry Pi

Le  Raspberry Pi est un mini-ordinateur de la taille d’une carte de crédit aux capacités étonnantes. Il est alimenté par un câble USB et  compte une carte SD pour seul disque dur. De fait, le Pi est très peu gourmand en énergie en plus d’être totalement silencieux. Avec son CPU overclockable jusqu’à 1 Ghz et ses 512 MB de RAM,  il offre donc un parfait compromis pour un usage media center ou serveur personnel, le tout à base de Linux puisque c’est actuellement un dérivé de Debian qui permet au Pi de délivrer le plus de watts. Cependant, la beauté du Pi réside avant tout dans sa versatilité. Pour 30 euros et un peu d’huile de coude, le Pi peut se transformer en caméra digitale, en station météorolique, en tablette, en laptop, en super-computer clusterisé ou même en un controleur de décorations de noël

 

une belle framboise

une belle framboise

Présentation

Du point de vue connectivité, le Pie rassemble une sortie HDMI, une sortie RCA, une sortie Jack, un lecteur de carte SD, deux ports USB 2.0, un port Ethernet ainsi qu’un port USB mini-B pour l’alimentation, il y a donc de quoi faire. Il faut également savoir que le Pi est vendu dans son plus simple appareil, sans boitier, pour une trentaine d’euros sur internet.

Rasbpbian + XBMC dites-vous?

J’utilise actuellement un Pi Model B (avec 512 MB de RAM, à la différence du A qui en compte deux fois moins) comme media center et seedbox, avec pour projet d’en faire un serveur VPN en plus de tout cela (afin de contourner les blocages de certains protocoles sur le réseau de Sciences Po par exemple). Les performances de lecture sont très satisfaisantes même sur des vidéos en 1080p (qualité Blue-Ray) sous XBMC et l’utilisation desktop sous LXDE est fluide bien qu’un peu poussive pour certaines applications graphiques. Pour la seedbox, j’utilise transmission-daemon.

la connectique du Pi

la connectique du Pi

Il faut bien comprendre que le Pi n’a pas pour vocation de faire tourner un environnement de bureau. L’idée derrière ma configuration est d’installer Raspbian (une adaptation de Debian Wheezy pour le hardware du Pi) afin de pouvoir faire tourner les applications serveur qui m’intéressent (la seedbox, le VPN et à terme un serveur Telldus) en contrôlant le tout via SSH (donc en ligne de commande depuis un autre terminal). En surcouche graphique, j’y fais tourner XBMC afin de profiter d’un média center capable d’organiser et de lire les torrents de la seedbox sur une TV HD. Je controle XBMC et la seedbox respectivement via une application Android, XBMC Remote et la version web de transmission, accessible depuis n’importe quel navigateur. Ainsi, je n’ai pas besoin de clavier pour faire fonctionner le Raspberry Pi.

Tout cela vous tente ? L’installation et la configuration de la machine prennent un peu de temps mais ce n’est rien de sorcier pour les habitués de la ligne de commande, pour les autres, il faut bien commencer quelque part ! Voici donc un résumé de toutes les étapes pour avoir un Pi sous Raspberry + XBMC remplissant les fonctions de seedbox et media center.

Installation de Raspbian

Prérequis

Afin de faire tourner un Pi vous aurez besoin de :

Référrez-vous à cette liste des périphériques compatibles avec le Raspberry Pi afin de vous guider dans vos achats dans le détail 

  • Une carte SD 16Go minimum (pour être à l’aise)
  • Un cable ethernet
  • Un cable HDMI
  • Un clavier USB
  • Un boîtier pour le Pi (optionnel et les legos c’est bien plus cool)
  • Un disque dur externe (optionnel)

 Mise en place de l’OS

Dans un premier temps, nous devons préparer la carte SD. Téléchargez une image de Raspbian, dé-zippez le tout puis décompressez l’image à la racine de la carte SD. Regardez ici pour de plus amples instructions en fonction du système d’exploitation.

Une fois cela fait, branchez tous les périphériques puis lancez le Pi. Au démarrage, Raspbian vous demandera un login puis un mot de passe. Par défault, ces derniers sont respectivement pi et raspberry. Au premier lancement, il vous faut étendre le système de fichier (Expand Filesystem dans le menu), pour cela, le système va automatiquement vous présenter le menu de raspi-config, si ce n’est pas le cas, lancez vous-même sudo raspi-config dans un terminal puis selectionnez ‘Extend Filesystem’

Si vous êtes branché par ethernet vous n’avez pas vraiment besoin de connecter le Pi avec un moniteur, dès lors du premier démarrage vous pourrez vous connecter en SSH au Pi et faire toutes les manipulations nécessaires à l’installation depuis un autre terminal plus confortable. Pour vous connecter en SSH, vous n’avez besoin que de l’adresse IP locale du Pi.

Pour cela, vous pouvez soit lancer la commande ifconfig depuis le Pi, soit scanner votre réseau locale pour connaître les périphériques connectés (utilisez nmap sous Unix, je vous laissez chercher pour les autres). Depuis un terminal sous UNIX on se connecte en SSH avec la commande suivante:
ssh pi@192.169.X.XXX 

 

Configuration de l’OS

On va commencer par changer la configuration du clavier (par défaut Raspbian est en QWERTY), suivez les instructions après avoir lancé:
sudo dpkg-reconfigure keyboard-configuration
Une fois cela fait, on va changer le mot de passe par défaut du Pi grâce à:
sudo raspi-config 
Sélectionnez ensuite “Change User Password” et suivez les instructions.

Ensuite, il vous faut mettre à jour l’appareil via les commandes:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

appuyez sur ‘y’ puis entrée pour confirmer votre choix à chaque prompt.

A présent nous allons configurer l’overclocking et la mémoire vidéo. Retournez dans sudo raspi-config et sélectionnez ‘Overclock’ dans le menu. Vous pouvez ensuite selectionner un niveau d’overcloacking, je vous recommande d’être assez conservateur dans votre choix et d’y aller progressivement en fonction de la chauffe de l’appareil et de la stabilité du système. Commencez par 800MhZ pour voir, puis augmentez progressivement.

Enfin, ils nous faut éditer /boot/config.txt puis ajouter un paramètre d’attribution de mémoire video via les commandes suivantes:
sudo nano /boot/config.txt

Rajoutez à la fin du fichier:
gpu_mem=128

Note : sous nano, il faut faire control + x puis répondre ‘y’ puis entrée pour sauvegarder un fichier. 

Enfin, on va mettre en place une adresse IP fixe sur le Pi afin de ne pas avoir à changer à chaque reboot les configurations des SSH et autres logiciels intéragissant avec le Pi. Pour cela, nous devons éditer /etc/network/interfaces
sudo nano /etc/network/interfaces
Faites en sorte que votre fichier ressemble à ça :
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.36 #IP STATIQUE A GARDER VOUS POUVEZ LA CHANGER
netmask 255.255.255.0
network 192.168.1.1
broadcast 192.168.1.255
gateway 192.168.1.254
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


C’est le moment de faire un petit reboot des familles histoire de voir si tout s’est bien passé.

sudo reboot

On a à présent un OS fonctionnel et un minimum sécurisé. Passons à l’installation de XBMC.

 

Installation de XBMC

A présent nous allons installer le media player, j’ai nommé XBMC. Vous avez deux choix : compiler ou installer un paquet. La compilation a l’air d’offrir de meilleures performances que l’installation par paquet mais elle peut prendre jusqu’à 12H… j’ai donc choisi d’installer par paquet et je tiens à dire que XBMC fonctionne très bien sur mon Pi. Pour les plus courageux, la compilation c’est par ici, sinon, suivez le guide.

 XBMCpicture

Installation via dépôt & paquets

On commence par ajouter le dépôt du paquet:

sudo nano /etc/apt/sources.list.d

On ajoute sur une nouvelle ligne:
deb http://archive.mene.za.net/raspbian wheezy contrib
Puis on lance tour à tour:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
sudo apt-get update
sudo apt-get install xbmc

Ensuite a besoin d’éditer
sudo nano /etc/udev/rules.d/99-input.rules
On rajoute à la fin du fichier
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"

 

Au démarrage

A présent vous avez deux choix lorsque votre Pi démarre:
1- lancer l’environnement graphique de Raspbian (LXDE) avec la commande startx
2- lancer XBMC avec la commande xbmc-standalone

Il est à noter que même lorsque xbmc est lancé vous pouvez accéder aux fonctionnalités de Raspbian en vous connectant via SSH, c’est tout le but de cette configuration. 

Je vous laisse à present chercher comment utiliser XBMC, c’est assez intuitif. Je recommande les applications android XBMC Remote et JuiceSSH afin de prendre la main sur XBMC et Raspbian depuis votre téléphone ou votre tablette. Vous n’aurez besoin que de l’ip locale de votre Pi, comme définie plus haut.

 

Installation de Transmission-Daemon

Transmission-daemon s’installe sur le Pi et permet d’avoir une interface web (accessible par navigateur) pour gérer les torrents depuis une autre machine. La configuration est un peu longue, mais croyez-moi, cela en vaut la peine. Je me suis très largement inspiré de ce tutoriel pour vous délivrer ces instructions.

voici le résultat : un transmission-daemon fonctionnel !

voici le résultat : un transmission-daemon fonctionnel !

 

On commence par installer transmission-daemon

sudo apt-get install transmission-daemon

Puis, on s’occupe des permissions de fichier inhérentes à transmission, ici, le ‘user’ est pi. De plus, je préfère avoir deux dossiers pour mes torrents : un pour les torrents en cours de téléchargement, un autre pour ceux qui sont terminés (de cette façon, un coup de ‘mv *’ dans le dossier COMPLETED me suffit à déplacer mes fichiers au bon emplacement sur mon media center). Ainsi ici DIR/TORRENT/PROGRESS fait office de dossier pour les torrents en cours, tandis que DIR/TORRENT/COMPLETED est destiné aux torrents terminés. En réalité, ils se trouvent chez moi dans /media/HDD/Torrents/XXX (les disques durs externes sont montés dans /media/), à vous donc de remplacer :

sudo usermod -a -G debian-transmission pi
chgrp debian-transmission DIR/TORRENT/PROGRESS
chgrp debian-transmission DIR/TORRENT/COMPLETED
chmod 770 DIR/TORRENT/PROGRESS
chmod 770 DIR/TORRENT/COMPLETED

Ensuite, on a besoin d’arrêter le daemon pour modifier ses droits :

sudo service transmission-daemon stop
sudo adduser pi debian-transmission

Puis, on change USER=pi (par défaut c’est USER=USERNAME je crois, dans l’en-tête du fichier)
sud nano /etc/init.d/transmission-daemon

sudo chown pi -R /var/lib/transmission-daemon/info/Change les droits sur le fichier de config’ de transmission. Puis on passe un coup de chown sur PROGRESS et COMPLETED :
sudo chown pi -R /DIR/TORRENT/PROGRESS
sudo chown pi -R /DIR/TORRENT/COMPLETED
sudo chown pi -R /etc/transmission-daemon/settings.json
sudo service transmission-daemon start

On y est presque, maintenant il faut qu’on édite la configuration de transmission en tant que telle. Veuillez editer /etc/transmission-daemon/settings.json :
sudo nano /etc/transmission-daemon/settings.json

Le fichier de configuration est assez simple à comprendre. Pour nos besoins, nous allons éditer 5 éléments:

  1.  rpc-username : choisissez un username qui vous sera demandé lors de la connection au daemon
  2. rpc-password : pareil pour le mot de passe
  3. rpc-whitelist : ici on indique les adresses ip autorisées à utiliser le daemon, pour choisir toutes les ip locales on rentre 192.1.168.1.*
  4. download-dir : DIR/TORRENT/COMPLETED, à remplacer.
  5. incomplete-dir : DIR/TORRENT/PROGRESS, à remplacer.

La syntaxe présentée ici n’est pas la bonne, veillez à bien respecter celle du json (imitez les autres lignes du fichier).

A présent nous n’avons qu’à recharger le daemon :
sudo service transmission-daemon reload

Vous devriez pouvoir désormais vous connecter au serveur transmission à l’adresse suivante : http://192.168.1.XXX:9091/ (XXX étant le dernier digit de l’ip statique que vous avez donné à votre Pi).

Conclusion

Et voila ! Vous avez à présent un Rasbian + XBMC fonctionnel avec un serveur de torrent. Cependant, le tout ne fonctionne qu’en local, ce qui est déjà super, mais ce serait bien mieux de pouvoir gérer le Pi depuis Sciences Po ou n’importe où ailleurs. Cela sera pour un autre tutoriel sur DynDNS et tutti quanti…