(Raspbian) de base - Mon Club-Elec

Transcription

(Raspbian) de base - Mon Club-Elec
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base
Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr
L'objectif
•
•
Le Raspberry est un mini-PC aux caractéristiques physiques impressionnantes : poids 45g, consommation 3W, petite taille. L'idée est donc de pouvoir
préserver ce « potentiel » de légèreté et de simplicité sans avoir besoin d'ajouter de nombreux périphériques pour contrôler le système. Ajouter des
périphériques encombrants à une petite plateforme lui fait perdre une bonne partie de son intérêt !
L'idéal serait donc de n'utiliser que l'indispensable à savoir une alimentation 5V régulé et une connexion réseau sans fil (par wifi) pour pouvoir contrôler le
RaspberryPi à distance. C'est ce que nous allons faire ici : configurer le système de base pour le rendre accessible à distance et sans fil permettant de le
contrôler depuis un poste fixe et lui préservant ainsi toutes ses caractéristiques de légèreté, petite taille et basse consommation.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 1 / 52
Ce que l'on va faire ici : le système final obtenu
La procédure décrite ici permet d'obtenir un Raspberry Pi :
Caractéristiques générales du système
> qui démarre en autologin à la mise sous tension
> avec autoconnexion réseau wifi ou éthernet à la mise sous tension
> avec accès au bureau distant activé par serveur VNC qui démarre automatiquement au démarrage ce qui permet l'accès sans fil et à distance au RaspberryPi
laissé en situation réelle d'utilisation et libérant les 2 ports USB disponibles pour des périphériques USB (webcam, clé wifi...) A noter que le simple copier/coller
de texte entre le poste fixe et le RaspberryPi est actif...
> en résolution 800x600 modifiable si besoin
> basé sur le système Raspbian (Base Debian + LXDE – Openbox ) installé initialement qui n'utilise que 40 Mo au démarrage (mesure avec htop)
Fonctionnalités systèmes utiles
> avec Capture vidéo par webcam activée (et donc retour vidéo distant sans fil)
> Lecture de fichier son facile ( et donc déclenchement de sons, bruitages, etc...)
> synthèse vocale installée
> enregistrement de son
> reconnaissance vocale en mode connecté
Système de développement
> IDE Arduino 1.0.1 opérationnel et communication avec carte UNO opérationnelle et donc fonction de programmation distante sans fil et à distance de la
carte Arduino + visualisation Terminal Série + saisie de chaîne via le Terminal Série, etc...
> IDE Processing 1.5.1 opérationnel avec communication série opérationnelle avec la carte Arduino et donc :
> accès par ligne de commande programmée aux fonctions de synthèse vocale, etc... déclenchable depuis Arduino...
> fonctions de datalogging texte et image simplifié
> accès à la reconnaissance vocale google à partir d'une entrée son de la webcam
> etc...
Fonctionnalités systèmes avancées :
> partage de fichier NFS opérationnel (et donc transfert de fichier sans fil par simple copier/coller depuis le poste fixe Gnu/Linux) Utile pour des fichiers sons, des
codes etc...
> +/- sécurisation SSH
Remarque
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 2 / 52
Vous pourriez très bien vous contentez d'utiliser une image du système tout prêt comme celle que je mets en ligne. Mais je vous conseille très fortement de
personnaliser vous-même le système de base, au moins une fois, pour comprendre la procédure et vous familiarisez avec Gnu/Linux.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 3 / 52
Schéma fonctionnel de synthèse
•
Au final, on va obtenir le système fonctionnel suivant, accessible sans fil et par wifi, programmable à distance, ce qui ouvre pas mal de possibilités de
combinaisons utilisant tout ou partie des fonctionnalités disponibles tant au niveau du RaspberryPi que d'Arduino.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 4 / 52
Principe d'installation en ligne de commande
•
On commence par lancer le RaspberryPi avec tous ses périphériques branchés, comme pour l'installation initiale. Connexion internet active obligatoire !
•
Pour la suite, nous allons utiliser l'installation des différents paquets logiciels utiles, en ligne de commande. Pour ce faire, il suffit d'ouvrir un Terminal, ce
qui se fait par un double clic sur l'icône LXTerminal présente sur le bureau du RaspberryPi. On obtient alors une fenêtre avec une invite.
Ce qu'il faut au minimum savoir concernant le système Gnu/Linux (Raspbian) installé sur le RaspberryPi
•
•
Un système Gnu/Linux repose sur l'assemblage de « morceaux » logiciels, que l'on va assembler entre eux à la façon d'un lego. Pour assurer une cohérence
d'ensemble, ces paquets compilés sont stockés sur des serveurs appelés « dépôts ». En fonction des besoins, on va ajouter des paquets au système.
Sur le système Gnu/Linux, un utilitaire va permettre de gérer ces paquets : il s'agit d'apt qui dispose de plusieurs commandes notamment :
•
◦ apt-get install nompaquet pour installer un paquet
D'autre part, un système Gnu/Linux repose sur un système de droits accordés à un utilisateur donné. L'utilisateur lambda ne peut pas faire tout ce qu'il veut
sur le système. Seul un administrateur (ou « root ») peut réaliser toutes les opérations. Dans certaines situations, on donne à un utilisateur donné les droits
« root » à l'aide de la commande sudo qui sera placée avant la commande à exécuter.
•
Enfin, certaines commandes de base sont à connaître : cd pour se déplacer dans les répertoires, ls pour lister un contenu de répertoire, etc...
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 5 / 52
Pour faire simple...
•
Pour vous faire comprendre simplement ce qu'est la distribution Debian (et donc Raspian), imaginez un stock de 35000 pièces de Lego différentes :
•
A partir de toutes ces « pièces logicielles », appelées « paquets » qui sont stockés dans les dépôts, il est possible d'enrichir à la demande le système de base.
Une fois le système de base installé, vous disposez d'un système fonctionnel mais limité à l'essentiel. Ici, nous allons l'enrichir de façon à lui ajouter des
fonctions utiles (accès distant, wifi, vidéo, synthèse vocale, etc...) tout en gardant un système de petite taille (on a que 8Go sur la carte SD et 256 Mo de
RAM... donc va falloir la jouer « fine et rusée »!). Suivez le guide... !
Nous allons ici améliorer la distribution Raspian de base pour l'adapter à nos besoins...
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 6 / 52
Mise à jour du système
•
La première chose à faire va être de mettre le système à jour avec la commande :
$ sudo apt-get update
•
Noter que çà peut prendre un certain temps. Une fois fait, on peut fermer le terminal.
Remarque
Pour l'installation de nouveaux paquets, en fait aller à l'essentiel sur le RaspberryPi : tout paquet de plus de 10 Mo est à éviter... sauf cas particulier.
Sinon, on peut aussi installer le gestionnaire de mise à jour avec la commande
$ sudo apt-get install update-manager
puis le lancer manuellement
$ sudo update-manager
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 7 / 52
Petites adaptations de base du système installé
•
Une chose simple à faire et plutôt utile en pratique est de mettre la barre des tâches en partie supérieure. Pour ce faire, clic droit sur la barre des tâches et
choisir l'option « Paramètres su tableau de bord :
•
Dans la fenêtre qui s'ouvre, cliquer sur l'onglet « taille » et cocher position « Haut » puis fermer.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 8 / 52
•
Le tableau de bord est désormais en position haute ce qui sera plus pratique pour un contrôle à partir d'un petit écran notamment (netbook, tablette) :
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 9 / 52
Installation de quelques logiciels système utiles
Htop, un moniteur système léger
•
htop est un moniteur système léger qui permet d'avoir des informations sur l'usage de la RAM, etc...
•
Installation :
$ sudo apt-get install htop
•
Utilisation :
$ htop
•
Résultat :
•
Intéressant pour avoir des informations sur le système. Premières caractéristiques du système : moins de 50 Mo de RAM utilisés sur 184 Mo... Ok.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 10 / 52
Geany, un éditeur de texte et de code léger
•
Geany est un éditeur de texte et de code léger. Utile pour modifier facilement les fichiers de configuration ultérieurement.
•
Installation :
$ sudo apt-get install geany
•
Utilisation :
$ geany
•
Résultat :
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 11 / 52
Modifier la résolution d'affichage par défaut
•
Par défaut, la résolution de l'affichage utilisé, notamment par connexion vidéo RCA, peut être assez petite. Il devient alors intéressant de fixer cette
résolution manuellement. La résolution de l'affichage se fait via un fichier de configuration (comme beaucoup de paramétrages sur un système
Gnu/Linux). On va donc ouvrir ce fichier :
$ cd /boot/
$ sudo geany config.txt
•
décommenter framebuffer_width et framebuffer_height et fixer les valeurs voulues. 800 x 600 c'est pas mal :
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 12 / 52
+/- xfce4-power-manager, un gestionnaire d'énergie
•
xfce4-power-manager est un gestionnaire d'énergie et de mise en veille léger.
•
Installation
$ sudo apt-get install xfce4-power-manager
•
Utilisation : pour les réglages :
$ xfce4-power-manager-settings
•
Résultat : on pourra régler au besoin le gestionnaire de façon à ce que l'écran ne passe pas en veille, etc...
•
+/- activer le chargement au lancement via menu Préférences > Paramètres de la session .
En fait, il n'est pas évident que ce gestionnaire soit vraiment utile sur le raspberryPi
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 13 / 52
Autres logiciels ?
•
Des logiciels habituels tels que chromium, firefox, etc... sont trop gourmands pour être utilisés sur le RaspberryPi. Les essais sont peu concluants.
•
Une bonne source d'inspiration en fonction de ses propres besoins : http://harbhag.wordpress.com/2010/07/02/best-lightweight-applications-for-linux/
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 14 / 52
Rendre le système accessible à distance
•
Nous voilà enfin au cœur du sujet : rendre le système accessible à distance par « accès au bureau distant » par réseau ethernet ou sans fil.
•
Le RaspberryPi est un système minimal et ne dispose que de 2 ports USB qu'il vaut mieux réserver pour des périphériques plutôt que de les utiliser pour un
clavier et une souris... De plus, tout l'intérêt du RaspberryPi est sa petite taille, sa légèreté et il est dommage de perdre tous ces atouts en l'encombrant de
périphériques de contrôle encombrants...C'est pourquoi maintenant que le système est installé et opérationnel, on va le rendre accessible à distance sur un
réseau à partir de n'importe quel autre système (Windows, Linux, MacOsX et même une tablette Android si on veut... )
•
Comme çà on va pouvoir ensuite travailler sur RaspberryPi... sans le toucher, via le réseau éthernet ou sans fil... par accès au bureau distant. On va donc
commencer par installer un serveur VNC (VNC est une technologie ancienne mais robuste qui permet d'accéder à distance au bureau d'un PC) :
$ sudo apt-get install vino
•
Ensuite, on va configurer les préférences du serveur vino en lançant l'utilitaire de paramétrage (pas en sudo +++) :
$ vino-preferences
•
Dans la fenêtre obtenue, autoriser visionnage et contrôle du bureau distant, désactiver la confirmation de l'accès et activer accès distant avec mot de passe et
mettre un mot de passe de son choix. Puis clic sur « fermer »
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 15 / 52
•
On peut à présent tester l'accès distant manuellement à l'aide de la commande (pas sudo +++) :
$ /usr/lib/vino/vino-server
•
On peut alors tester la connexion depuis le poste fixe. Pour connaître l'adresse ip du RaspberryPi, saisir la commande ifconfig dans un Terminal et chercher
l'adresse de l'interface eth0 (de la forme inet adr : xxx.xxx.xxx.xxx) Utiliser cette adresse pour se connecter depuis le poste fixe.
Capture de la fenêtre VNC sur le poste fixe client : cool non ?
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 16 / 52
•
L'idéal est bien sûr de pouvoir lancer vino au démarrage automatiquement. On va ouvrir à nouveau un fichier de configuration.
$ sudo geany /etc/xdg/lxsession/LXDE/autostart
•
Puis ajouter la ligne @/usr/lib/vino/vino-server puis enregistrer et relancer le RaspberryPi (clic sur le bouton d'arrêt dans la barre des tâches) :
•
Normalement, au lancement suivant, vous pouvez vous connecter directement au RaspberryPi, une fois qu'il a redémarré !
A ce stade, vous pouvez débrancher la souris, le clavier, l'écran (gardez-le connecté quand même pour le moment..) et travailler sur votre RaspberryPi
directement à partir du poste fixe via le réseau éthernet !
Ceci veut aussi dire que vous pouvez utiliser votre RaspberryPi sur un réseau de bloc CPL dans votre maison : vous dans votre bureau, le RaspberryPi à la cave ou
au grenier. Et vous pouvez en mettre plusieurs sur le réseau si vous arrivez à en avoir... !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 17 / 52
Installation de fonctionnalités système utiles
•
A présent nous allons poursuivre l'installation de fonctionnalités utiles.
Vidéo par webcam : logiciel de capture Guvcview
•
•
Pour pouvoir utiliser facilement une webcam sur le RaspberryPi, je vous conseille d'utiliser guvcview, un utilitaire léger et efficace.
Installation :
$ sudo apt-get install guvcview
•
Utilisation :
◦ connecter à présent une webcam sur la port USB. La seule contrainte est l'utilisation d'une webcam qui sera reconnue « out-of-the-box » par la
distribution Raspbian utilisée. Moi j'ai utilisé sans problème une Hercules Dualpix Exchange, une Logitech C270, une Eye PS3... D'une manière
générale, toute webcam compatible avec le driver uvc devrait fonctionner. Voir la liste complète ici : http://www.ideasonboard.org/uvc/
◦ Il est préférable de lancer guvcview en ligne de commande car les paramètres par défaut risque de faire bugguer la capture vidéo (eh oui, on est sur un
petit système...) :
$ guvcview -s 320x240
◦ Sinon, on peut lancer depuis le menu Applications > Son et vidéo > guvcview mais les paramètres par défaut ne sont pas supportés très longtemps par le
RaspberryPi (648x480@25fps...)
◦ On obtient 1 fenêtre de réglage et une fenêtre vidéo : aller dans l'onglet « Video et fichier » et régler la vitesse à 10 fps voir 5fps et la taille à 320x240
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 18 / 52
•
Cocher également la case « afficher » si vous souhaitez que le débit d'image s'affiche dans le titre de la fenêtre vidéo. Pratique.
•
Il suffit ensuite de limiter la taille de la fenêtre VNC sur le poste fixe pour n'avoir que l'image vidéo de visible. Mettez la fenêtre au premier plan et le tour
est joué ! Vous pouvez même surveiller vos poissons rouges si vous voulez !
Capture de la fenêtre VNC sur le poste fixe. La taille est réduite à celle de la vidéo.
Conseils techniques :
•
•
Plus vous utiliserez une résolution petite et plus la fluidité sera au rendez-vous
Vous pouvez également capturer une image ou une vidéo à tout moment avec l'interface guvcview
•
Pour connaître la bande passant utilisée par la connexion VNC, utiliser l'utilitaire cbm
A ce stade vous disposez d'un système permettant l'accès sans fil au retour vidéo en provenance du Raspberry Pi !
Mettez « la bête » sur un robot mobile ou dans la nacelle d'un petit ballon sonde : vous ferez des trucs déjà très sympa !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 19 / 52
Matériel nécessaire pour les fonctions utilisant la sortie audio
•
Le Raspberry dispose d'une sortie audio jack 3,5mm. Pour pouvoir utiliser les sons avec le RaspberryPi, la solution la plus simple consiste à utiliser une
paire d'enceintes de PC. Choisir un modèle avec ampli intégré et alimentation dédiée et si possible miniature. On pourrait aussi utiliser un simple casque
audio.
•
Noter qu'en situation « embarquée », sur un robot ou autre, il pourra être intéressant d'utiliser une petite carte ampli avec un simple haut-parleur.
Exemple avec kit Velleman ampli 2x5W MK190 (dispo chez Gotronic – réf 01359)
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 20 / 52
Synthèse vocale
Introduction
•
Avec la synthèse vocale, on rentre dans un domaine qui fait toujours un peu rêver : un robot, une application qui parle, çà lui donne un petit côté humain...
Il est possible de le faire avec des cartes d'extension dédiées, notamment avec Arduino, mais les coûts sont tout de même assez élevés, et en tout cas
beaucoup plus qu'un simple RaspberryPi...
•
La bonne nouvelle, c'est que le système Raspbian que nous avons installé sur RaspberryPi est capable de réaliser la synthèse vocale à partir de
chaînes de caractères : nous allons donc ajouter de ce pas cette possibilité à notre système embarqué.
Une fois que la synthèse vocale sera installée sur le raspberryPi, il sera ensuite possible de déclencher la synthèse vocale à partir d'Arduino comme nous le verrons
ultérieurement. Vous pourrez ainsi annoncer la distance d'un obstacle, dire quelque chose à l'appui sur un bouton poussoir, etc...
Non, non, vous ne rếvez pas !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 21 / 52
Solution 1 : synthétiseur vocal espeak et son interface graphique gespeaker
•
Ce synthétiseur de voix permet la synthèse de voix à partir de chaine texte. Il offre plusieurs vois masculines et feminines. Son un peu métallique
cependant. Il existe également une interface graphique appelée gespeaker.
•
Installation :
$ sudo apt-get install libportaudio0
$ sudo apt-get install espeak
$ sudo apt-get install gespeaker
•
Utilisation :
◦ soit lancement en interface graphique depuis le menu Application > Son et Vidéo > Gespeaker. On obtient une interface permettant de générer de la
synthèse vocale.
◦ soit lancement en ligne de commande :
$ espeak -v fr -s 140 'lecture de texte avec ispik'
•
Note : lors de l'installation initiale de espeak sur le raspberryPi, il semblait que les voix n'étaient pas installées au bon endroit.
◦ Pour les trouver : find / -name 'espeak-data' -type d
◦
Ensuite se placer dans le répertoire où elles se trouvent : cd /usr/lib/arm-linux-gnueabihf/espeak-data
◦
puis créer répertoire de destination attendu : sudo mkdir /usr/share/espeak-data
◦
puis copier le contenu : sudo cp * /usr/share/espeak-data/ -r
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 22 / 52
Solution 2 : synthétiseur vocal picotts
•
picottts est un synthétiseur vocal qui donne une bonne qualité de voix féminine. C'est la voix d'Android. A priori pas dispo avec raspbian... Ceci étant, il
devrait être possible de compiler les sources... à suivre..
•
•
Une documentation utile est disponible ici : http://forums.debian.net/viewtopic.php?f=16&t=38976
Tout d'abor ajouter le dépôt des sources :
$ sudo geany /etc/apt/sources.list
Coller les 2 lignes :
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
Ensuite, mettre à jour avec :
$ sudo apt-get update
•
$
$
$
$
$
$
$
$
$
$
Ensuite :
apt-get update
apt-get install fakeroot
apt-get build-dep libttspico-utils
cd
mkdir my_build/
cd /my_build/
apt-get source libttspico-utils
ls
cd svox-1.0-<version>/
dpkg-buildpackage -rfakeroot -us -uc
Ensuite c'est parti pour un moment... compter un bon 1/4h d'heure... On est quand même en train de faire une compil' sur le raspberryPi lui-même...
excusez du peu...
Puis ensuite, on peut faire l'install
$ cd
$ cd my_build
$ ls
On obtient plusieurs fichiers *.deb :
libttspico0..armhf.deb
libttspico-data..all.deb
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 23 / 52
libttspico-dev...armhf.deb
libttspico-utils...armhf.deb
Il faut installer dans l'ordre pico0, pico-data et pico-utils (le pico-dev n'est pas indispensable) avec :
sudo dpkg -i <packagename>_<version>_<architecture>.deb
ce qui donne :
$ sudo dpkg -i libttspico0..armhf.deb
$ sudo dpkg -i libttspico-data..all.deb
$ sudo dpkg -i libttspico-utils...armhf.deb
Ensuite, on peut tester la synthèse vocale Pico sur notre système RaspberryPi :
$ pico2wave -l fr-FR -w test.wav « Salut les amis. Je mappelle pico »
$ aplay test.wav
Et bingo, çà marche !! Pas belle la vie ? Donc la synthèse vocale pico est opérationnelle sur le RapberryPi... beaucoup mieux que la voix métallique de Espeak,
même si c'est déjà sympa quand même.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 24 / 52
Lecture de fichiers sons : lecteur polyvalent mplayer
•
Pour lire des fichiers sons, notamment des bruitages de toutes sortes, il est nécessaire d'utiliser un lecteur de fichier son. Un lecteur polyvalent est le lecteur
mplayer, aussi bien pour la vidéo que les fichiers audio.
•
Installation
$ sudo apt-get install mplayer
$ sudo apt-get install mencoder
•
Utilisation : en ligne de commande, mplayer suivi du nom du fichier à lire :
$ mplayer mes_sons/r2d2.mp3
•
$
$
$
$
Vous trouverez dans l'archive suivante plusieurs sons utiles à tester : http://www.mon-club-elec.fr/mes_downloads/mes_sons.tar.gz
cd
mkdir Telechargements
cd Telechargements/
wget http://www.mon-club-elec.fr/mes_downloads/mes_sons.tar.gz
•
puis ouvrir le gestionnaire de fichier et extraire l'archive. Amusez-vous bien !
Remarque
A ce stade, vous disposez d'une possibilité très intéressante : il vous suffit de télécharger des fichiers de sons de bruitages (r2d2, alarmes, etc...) et, sans besoin de
les convertir, vous pouvez les lire directement sur le raspberryPi.
Vous pouvez ainsi ajouter toutes sortes d'effets sonores à vos applications en quelques minutes !
Vous pouvez également lire des fichiers audio de votre choix.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 25 / 52
Fonctions utilisant l'entrée audio
•
Note technique : RaspberryPi ne dispose pas d'une entrée audio.... mais les webcams intègrent le plus souvent une entrée audio. Donc, il est tout à fait
possible de disposer d'une entrée son sur le RaspberryPi
•
Pour gérer les entrées audio sur le aspberryPi, le plus simple est d'utiliser alsamixer , utilitaire qui s'appelle en ligne de commande
$ alsamixer
•
On obtient une interface sommaire qui permet de gérer les niveaux, entrées, sorties à l'aide des touches de fonctions :
•
Note : j'ai tenté d'installer PulseAudio qui est une bonne interface pour gérer les entrées sorties/audio mais cela a posé des problèmes (plus de son...)
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 26 / 52
Enregistrement sons
•
Plusieurs solutions possibles : rec, arecord, … à utiliser selon ses besoins. Le plus simple est d'utiliser arecord déjà installé.
•
Installation : installer le paquet alsa-utils qui contient arecord. Déjà installé par défaut.
$ sudo apt-get install alsa-utils
Utilisation : $ arecord <params>
•
$ arecord
Information : $ man arecord
•
◦
-l donne la liste des périphériques
◦
-t type de fichier parmi voc, wav, raw,au
◦
- r débit en Hz
◦
- d durée de l'enregistrement en secondes
◦
-V activation vumètre = ne marche pas..
◦
-c nombre de canaux 1 par défaut
◦
-f cd (16 bit little endian, 44100, stereo)
Exemples :
•
$ arecord -d 5 test.wav
$ arecord -d 5 -r 16000 -f cd test.wav # enregistre 5 secondes en qualité CD à 16000hz dans fichier test.wav
PS : utilisation de -f cd limite les « craquements » de début et fin d'enregistrement...
Note technique : par défaut, mon micro de webcam n'était détecté. J'ai créé le fichier .asoundrc avec la commande
$ geany .asoundrc
et copier coller le code suivant qui indique d'utiliser le micro de la webcam hw:1,0 pour la capture par défaut :
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:1,0"
}
}
Plus de détails ici : http://wiki.audacityteam.org/wiki/USB_mic_on_Linux
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 27 / 52
Conversion de fichier son
•
Un utilitaire polyvalent : sox
•
Installation : le paquet sox
$ sudo apt-get install sox
•
Utilisation :
$ sox test.wav fichier.flac rate 16k # convertit le fichier *.wav en fichier *.flac avec échantillonage 16000hz
•
Information : $ man sox
Reconnaissance vocale
•
En combinant l'enregistrement de son et la conversion, il est possible sur le RaspberryPi d'utiliser la reconnaissance vocale de Google sous réserve d'être
connecté à internet (via le routeur) !
•
Il suffit d'enregistrer un fichier son puis de l'envoyer vers le serveur Google pour obtenir la chaîne texte correspondante. A suivre...
$ arecord -d 5 -r 16000 -f cd test.wav
$ sox test.wav fichier.flac rate 16k
$ wget -q -U "Mozilla/5.0" --post-file fichier.flac --header="Content-Type: audio/x-flac; rate=16000" -O "http://www.google.com/speech-api/v1/recognize?lang=fr&client=chromium" | sed 's/^.*\[{.*:"\(.*\)",".*$/\1/'
•
Exécuter les commandes suivantes en parlant après la première : la 3ème commande doit renvoyer le texte correspondant à ce que vous avez dit !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 28 / 52
Installation de Python
▪ Pour développement Python
•
•
Procédure sous Linux (voir ici : http://python-gtk-3-tutorial.readthedocs.org/en/latest/install.html) :
> installer libgtk-3-0 (déjà par défaut sur Raspbian et sous Xubuntu 12.04 LTS)
•
•
> installer python3 (déjà par défaut sur Raspbian et sous Xubuntu 12.04 LTS)
> installer gobject-introspection (pas installé par défaut sur Raspbian et sous Xubuntu 12.04 LTS)
•
Ajouter cependant :
◦ python-serial
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 29 / 52
Installer le système de développement embarqué (Arduino, Processing)
•
A présent, nous allons aborder ce que je considère comme l'une des choses les plus intéressantes en ce qui concerne le RaspberryPi :
◦ l'installation de l'IDE Arduino qui va donc permettre de contrôler, programmer Arduino à distance et sans fil !!
◦ l'installation de l'interface Processing qui va permettre de contrôler le système assez facilement à partir d'Arduino !!
•
Il va devenir ainsi possible :
◦ d'utiliser la puissance de calcul du raspberryPi pour positionner des moteurs (traqueur solaire par exemple),
◦ d'enregistrer des données sous forme de fichier texte facile à réutiliser et même à les visualiser par simple accès au bureau du RaspberryPi,
◦ de capturer des images, de la vidéo, des sons à partir d'évènements Arduino ou à intervalles réguliers
◦ de déclencher des sons, de la synthèse vocale à partir d'Arduino,
◦ etc...
Rien que la programmation à distance de l'Arduino vaut largement le prix du raspberryPi : des modules à plus de 60€ existent pour obtenir cette fonction
mais sans le retour vidéo, ni la synthèse vocale, ni la lecture des fichiers sons, etc...
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 30 / 52
Installation et test de l'IDE Arduino
•
L'IDE Arduino est un logiciel qui permet de programmer et d'interagir avec Arduino, une petite carte électronique facile à programmer.
•
On commence l'installation en installant l'openjdk car l'IDE Arduino est un programme java (çà dure un moment.... !) :
$ sudo apt-get install openjdk-7-jdk
•
Ensuite on installe tout simplement le paquet arduino contenu dans les dépôts et qui intègre la version 1.0.1 de l'IDE
$ sudo apt-get install arduino
• Ainsi sont installés les paquets suivants (dépendances):
• g++ (le compilateur GNU C++)
• gcc-avr (compilateur C pour les microcontrôleurs AVR)
• avr-libc
• avrdude
• binutils-avr
• libftdi1
• libjna-java
• librxtx-java
• Utilisation :
• soit en ligne de commande : $ arduino
• soit, le plus simple, à partir du menu applications > programmation > Arduino
• Fignolages : la taille de la fenêtre Arduino peut être trop grande par défaut. On va donc configurer la taille de la fenêtre Arduino au démarrage :
• en ligne de commande, saisir :
$ geany .arduino/preferences.txt
• modifier les valeurs des lignes :
• editor.window.height.default=400
• editor.window.height.min=200
• enregistrer et relancer Arduino.
Remarque
A ce stade, vous disposez d'un système permettant la programmation distante de l'Arduino et en tout cas le contrôle distant de l'exécution d'un programme
Arduino, l'interaction potentielle en direct avec Arduino à partir du Terminal série, etc... Une solution très efficace pour développer en situation, sur un robot par
exemple. Quelques limites cependant : la compilation est plus lente... et il ne faut pas ouvrir trop de fenêtres à la fois..
Pour de gros programmes, il sera donc préférable de programmer l'arduino à partir du poste fixe pour ensuite interagir avec l'Arduino à partir du raspberyPi.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 31 / 52
Capture de la fenêtre VNC sur le poste fixe : l'IDE Arduino est bel et bien exécuté sur le raspberryPi et est contrôlé à distance. RAM utilisée : 90Mo
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 32 / 52
Installation des librairies Arduino utiles
•
Une fois Arduino installé, il est intéressant d'installer des librairies Arduino utiles : notamment, j'aime bien installer mes librairies personnelles Utils, Cdbot,
etc...
•
Comme Arduino a été installé automatiquement, où se trouve le répertoire Arduino ? La documentation du package Debian correspondant donne
l'information : /usr/share/arduino/libraries
La procédure consiste alors à enregistrer les librairies dans le répertoire de son choix, transitoirement puis ensuite à exécuter la commande :
•
$ sudo cp chemin/de/la/lib/nomlib
/usr/share/arduino/libraries -r
•
Le -r c'est pour copier le répertoire entier...
•
Et c'est bon normalement. Relancer Arduino : la librairie doit être présente dans le menu Sketch > import library
Installation et test de Processing
Installation
•
Processing est un environnement de développement « véritable couteau suisse » permettant notamment l'interfaçage avec la carte Arduino mais également
l'utilisation de librairies permettant de réaliser des interfaces ou encore de contrôler le système Gnu/Linux en ligne de commande programmée.
•
L'installation se fait en plusieurs étapes :
◦ L'installation nécessite l'openjdk et le paquet librxtx-java déjà installés précédemment
◦ Télécharger l'archive de Processing 1.5.1 (version Linux 32 bits) sur le site de Processing : http://processing.org/download/ à l'aide du navigateur
installé sur votre RaspberryPi
◦ ensuite ouvrir le dossier de l'archive et l'extraire
◦ Une fois fait, nous allons utiliser la bonne librairie java.
▪ Effacer ou renommer le sous répertoire Processing-1.5.1/java
▪ Remplacer ce répertoire par un lien symbolique vers le java du système :
ln -s /usr/lib/jvm/java-7-openjdk-armhf java
◦ Enfin, nous allons également remplacer la librairie Serial utilisée par défaut pour une version compatible ARM :
▪ supprimer ou renommer le fichier Processing-1.5.1/modes/java/libraries/serial/library/linux32/librxtxSerial.so
▪ Supprimer et renommer le fichier Processing-1.5.1/modes/java/libraries/serial/library/RXTXcomm.jar
▪ A présent, copier la bonne version dans le même sous-répertoire avec la commande
$ sudo cp /usr/share/java/RXTXcomm.jar Telechargements/Processing-1.5.1/modes/java/libraries/serial/library/
•
Voilà, c'est terminé ! Ouf... !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 33 / 52
•
Pour info, j'ai suivi la procédure trouvée ici : http://scruss.com/blog/2012/08/12/controlling-an-arduino-from-raspberry-pi-using-processing/
•
Fignolages : comme pour Arduino, il faut réduire la taille de la fenêtre utilisée par défaut. On va donc configurer la taille de la fenêtre Processing au
démarrage :
◦ en ligne de commande, saisir :
$ geany .processing/preferences.txt
◦ modifier les valeurs des lignes :
▪ editor.window.height.default=400
▪ editor.window.height.min=200
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 34 / 52
Lancement de Processing
•
Pour lancer Processing, ouvrir un terminal et saisir la commande (à adapter en fonction de l'endroit où vous avez mis Processing ) :
$ cd Telechargements/processing-1 .5.1/
$ ./processing
•
•
Vous pouvez ignorer le message indiquant que l'on n'utilise pas pas Sun java
Ensuite lancer l'un ou l'autre exemple, notamment le cube RGB : Le fameux cube RGB 3D marche... mais c'est vraiment très lent.... CPU à fond, etc...
•
A priori pour de petites interfaces graphiques avec Control P5 (voir ci-après) çà doit être bon ou bien un programme Processing pour gestion du système
depuis Arduino mais guère plus...
Capture de la fenêtre VNC sur le poste fixe : l'exemple RGB lancé occupe 116Mo de RAM.
L'effet « monocoeur » du raspberryPi se fait ici clairement ressentir puisque l'on obtient un mouvement à 1 image que toutes les 2 ou 3 secondes !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 35 / 52
Installation et test de librairies Processing utiles
•
Au vu des capacités réduites du raspberryPi lors de l'exécution du cube RGB, exemple « fétiche » permettant de se faire une bonne idée de la puissance de
calcul, il est illusoire de vouloir installer des choses trop complexes. On se limitera à l'essentiel potentiellement utile.
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 36 / 52
La librairie pour interfaces graphiques : ControlP5
L'interface Processing est surtout orientée graphisme et traitement d'image : elle ne comporte pas d'outils standards pour créer des interfaces GUI. Plusieurs
librairies existent pour cela, l'une d'entre elle étant controlP5.
>Télécharger l'archive ici : http://www.sojamo.de/libraries/controlP5/ : choisir l'archive Processing 1.5.1 si on utilise cette version
> Créer un dossier controlP5 et extraire dedans l'archive
> Copier coller le dossier controlP5 dans le répertoire ~/Téléchargements/Processing-1-5/modes/java/librairies
> Relancer Processing : la librairie doit être présente dans le menu Sketch > Import Library
> Lancer un programme de test depuis le menu File > Examples > controlP5
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 37 / 52
La librairie UDP hypermédia
•
Cette librairie est utile pour réaliser des communications réseau en UDP (protocole allégé par rapport à TCP). Un complément utile à la librairie réseau
Processing
•
•
Dispo ici : http://ubaa.net/shared/processing/udp/
A installer dans mode/java/librairies
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 38 / 52
La librairie GLAP-Box
•
Librairie perso qui permet de faire communiquer simplement Arduino avec Processing. Cette librairie permet de déclencher / contrôler les applications
système simplement à l'aide de chaînes de caractères en provenance d'Arduino.
•
•
Dispo ici : http://www.mon-club-elec.fr/pmwiki_reference_lib_glapbox/pmwiki.php?n=Main.HomePage
A installer dans mode/java/librairies
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 39 / 52
Librairie Processing pour la capture vidéo : Gstreamer ?
=> à revoir – ne marche pas...
Tester quand même Gstreamer au moins pour capture vidéo...
intéressant pour datalogging d'images
La librairie GSVideo implémente dans Processing le framework « GStreamer » qui dispose de toutes les fonctions utiles pour la lecture vidéo. A la différence de
QuickTime utilisé par défaut, Gstreamer est opensource et libre. Il est prévu de Gstreamer soit utilisé par défaut à partir de Processing 2.0, mais en attendant, il est
nécessaire d'installer la librairie GSVideo
Voir le site officiel de Gstreamer : http://gstreamer.freedesktop.org/
Pré-requis : paquets nécessaires
• Les paquets de la librairie gstreamer doivent être installés :
Voici la liste des paquets installés sur une Xubuntu 12.04 qui « marche » avec gsvideo
ii gir1.2-gstreamer-0.10
ii gstreamer0.10-alsa
ii gstreamer0.10-ffmpeg
ii gstreamer0.10-fluendo-mp3
ii gstreamer0.10-gnomevfs
ii gstreamer0.10-gnonlin
ii gstreamer0.10-nice
ii gstreamer0.10-pulseaudio
ii gstreamer0.10-tools
ii gstreamer0.10-x
0.10.36-1ubuntu1
0.10.36-1ubuntu0.1
0.10.13-1
0.10.15.debian-1ubuntu1
0.10.36-1ubuntu0.1
0.10.17-2
0.1.1-2ubuntu1
0.10.31-1ubuntu1
0.10.36-1ubuntu1
0.10.36-1ubuntu0.1
Description: GObject introspection data for the GStreamer library
GStreamer plugin for ALSA
FFmpeg plugin for GStreamer
Fluendo mp3 decoder GStrmer plugin
GStreamer plugin for GnomeVFS
non-linear editing module for GStreamer
ICE library (GStreamer plugin)
GStreamer plugin for PulseAudio
Tools for use with GStreamer
GStreamer plugins for X11 and Pango
Attention c'est gstreamer0.10-plugins- pour la suite...
ii gstreamer0.10-plugins-bad
0.10.22.3-2ubuntu2.1
GStreamer plugins from the "bad" set
ii gstreamer0.10-plugins-base
0.10.36-1ubuntu0.1
GStreamer plugins from the "base" set
ii gstreamer0.10-plugins-base-apps
0.10.36-1ubuntu0.1
GStreamer helper programs from the "base" set
ii gstreamer0.10-plugins-good
0.10.31-1ubuntu1
GStreamer plugins from the "good" set
ii gstreamer0.10-plugins-ugly
0.10.18.3-1ubuntu1
GStreamer plugins from the "ugly" set
Attention c'est libgstreamer pour la suite...
ii libgstreamer-perl
0.16-1build1
ii libgstreamer-plugins-bad0.10-0
0.10.22.3-2ubuntu2.1
GStreamer shared libraries from the "bad" set
ii libgstreamer-plugins-base0.10-0
0.10.36-1ubuntu0.1
GStreamer libraries from the "base" set
ii libgstreamer-plugins-base0.10-dev
ii libgstreamer0.10-0
ii libgstreamer0.10-dev
0.10.36-1ubuntu0.1
0.10.36-1ubuntu1
0.10.36-1ubuntu1
Perl interface to the GStreamer media processing framework
GStreamer development files for libraries from the "base" set
Core GStreamer libraries and elements
GStreamer core development files
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 40 / 52
Gstreamer fonctionne avec cette liste sous Madbox 12,04 LTS
Installer la librairie GSVideo
> Récupérer l'archive : http://sourceforge.net/projects/gsvideo/files/gsvideo/
Prendre la version 1.5.1 si on utilise Processing 1.5.1
> Extraire de copier/coller le répertoire GSVideo dans le répertoire ~/Téléchargements/Processing-1-5/modes/java/librairies
> Relancer Processing : la librairie doit être présente dans le menu Sketch > Import Library
Programme de test
> Aller dans le menu Files > Examples et choisir un exemple,
> par exemple, Movie > Speed, ce qui donne :
Voilà, GSVideo est installé : avec une webcam, vous pourrez faire à présent de la capture de flux video avec la GLAP-Box dans Processing !
Infos utiles
> Le site officiel pour les dernières infos : http://gsvideo.sourceforge.net/
> PS : Andres Colubri, l'auteur de la librairie, fait partie de l'équipe Processing 2.0 et est en charge de l'implémentation à venir dans la future version Processing
2.0.
> Bon à savoir : Gstreamer est très intéressant également pour la lecture de « flux vidéo » sur un réseau, grâce à la gestion de « pipeline » Gstreamer
(enchaînement d'instructions de traitement). On pourra ainsi lire un flux de caméra IP directement dans Processing ou encore streamer un flux webcam sur le
réseau local depuis Processing !
> L'utilisation des pipeline avec Gstreamer est un sujet très intéressant en soi !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 41 / 52
Opengl :
installer libegl...
La vision par ordinateur
à priori, on oublie avec le raspBerryPi...
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 42 / 52
Configuration du wifi avec wicd : pour rendre le raspberyPi accessible sans fil
Installation de wicd
• A présent, voyons comment activer le wifi afin de rendre le système accessible sans fil. Plutôt que d'utiliser l'utilitaire fourni par défaut avec Raspbian pour
la configuration du wifi, je suggère d'utiliser wicd, une interface indépendante de l'environnement graphique, légère et stable. Une limite cependant : ne
permet pas VPN (mais lancement manuel reste possible) , ni double connexion wifi et ethernet simultanée d'après mes essais... en fait si... !
• Connecter une clé wifi au RaspberryPi (la libération des ports USB vous permet normalement de le faire...)
• Ouvrir un terminal (via l'accès au bureau distant, vous travaillez sur le RaspberryPi depuis votre poste fixe!) :
$ sudo apt-get install wicd
• Etre sûr que l'utilisateur courant est bien ajouté au groupe udev (ici l'utilisateur par défaut est pi) :
$ sudo adduser pi netdev
Lancement et paramétrage de l'interface wicd
•
Lancer l'interface wicd de configuration :
$ wicd-client
•
•
Pour ne pas perdre l'accès éthernet au RaspberryPi lors du lancement du wifi, il faut pouvoir utiliser simultanément la connexion wifi et ethernet avec wicd.
Pour cela, il faut aller dans les préférences (petite flèche vers le bas dans le coin à droite) , et laisser vide le champ « interface filaire » qui contient eth0 par
défaut. Valider.
•
Ensuite, configurer la ou les interfaces wifi que vous voulez utiliser (bien utiliser WEP si codage WEP...) (dans propriétés)
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 43 / 52
•
cocher « se connecter automatiquement » pour que la connexion se fasse automatiquement à la détection du réseau
•
tester la connexion par appui sur « connecter »
• Noter que le démarrage automatique de wicd-client se fera au prochain démarrage.
• Débrancher le câble réseau éthernet et rebooter : vous devez normalement pouvoir accéder au RaspberryPi par wifi (attention : l'adresse IP peut avoir
changé et un scan réseau avec l'utilitaire nmap côté poste fixe permettra de la connaître).
• Remarque : par défaut pour que l'autoconnexion se fasse en wifi : il faut que le réseau éthernet soit déconnecté ! Sinon, c'est le réseau filaire qui est utilisé.
Normalement, si vous avez activé la connexion simultanée comme indiqué précédemment, ceci ne doit pas poser de problème.
• Besoin de plus d'infos sur wicd ? Voir ici notamment : http://www.linuxcore.fr/2012/03/wicd-internet/
A présent, vous disposez également du contrôle sans fil de votre RaspberryPi directement à partir du poste fixe via le réseau wifi !
Cool non ?
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 44 / 52
Fonctions avancées systèmes
Installation du partage de fichier NFS : le raspberryPi en serveur NFS
•
J'ai déjà décrit la procédure sous Ubuntu en détail ici : Mise en place d'un partage de fichier NFS via réseau wifi entre le PC embarqué et le PC fixe,
Installation des paquets nécessaire
•
On commence donc par installer les paquets nécessaire pour transformer le RaspberryPi en serveur NFS : nfs-kernel-server et nfs-common (est installé en
même temps que nfs-kernel-server). Ce qui donne en ligne de commande :
$ sudo apt-get install nfs-kernel-server nfs-common
Paramétrage du dossier partagé
•
On va partager ici le répertoire /home/pi/ du RaspberryPi (serveur). On commence par éditer du fichier /etc/exports
$ sudo geany /etc/exports
•
Ajouter dans le fichier exports (pour pouvoir partager sur des réseaux ayant comme racine 192.168.0, .1 ou .2 - à adapter à votre situation) :
# pour avoir tous les droits root :
/home/pi 192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.0.x en lecture / écriture
/home/pi 192.168.1.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.1.x en lecture / écriture
/home/pi 192.168.2.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.2.x en lecture / écriture
•
Une fois que fait, pour que les modifs soient prises en compte, on fait :
$ sudo exportfs -a
•
ou mieux
$ sudo exportfs -ra
•
avec
◦ -a : exporte tous les répertoires
◦ -r : ré-exporte tous les répertoires
Configuration autorisations dans hosts.deny
•
On ouvre hosts.deny et on interdit tout par défaut
$ sudo geany /etc/hosts.deny
•
Ajouter les lignes
#pour partage NFS
# Tout interdire sur portmap, nfsd et mountd
# les autoriser par hosts.allow
portmap:ALL
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 45 / 52
lockd : ALL
mountd:ALL
rquotad : ALL
statd : ALL
#nfsd:ALL
Configuration autorisations dans hosts.allow
•
On ouvre hosts.allow et on autorise les adresses voulues :
$ sudo geany /etc/hosts.allow
•
On ajoute les lignes :
#partage NFS
#Autoriser ces clients à se connecter avec services portmap, nfsd, moundt
portmap:ALL
lockd:192.168.
mountd:192.168.
rquotad:192.168.
statd:192.168.
#nfsd:192.168.
Activation de rcpbind
•
•
Lors du lancement du serveur NFS, il y a un warning avec portmapper... sur le raspberryPi. En fait, il semble que le service rpcbind ne fonctionne pas par
défaut sur le raspberryPi. Voir ici : http://www.raspbian.org/RaspbianFAQ « On the current version of Raspbian, rpcbind (part of the portmap package) does
not start by default. This is presumably done to control memory consumption on our small systems. However, it isn't very big and we need it to make an
NFS mount. »
Pour l'activer manuellement :
$ sudo service rpcbind start
•
Pour l'activer au démarrage, ce qui est préférable :
$ sudo update-rc.d rpcbind enable
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 46 / 52
Redémarrage serveur NFS
•
On relance NFS
$ sudo /etc/init.d/nfs-kernel-server reload
•
ou mieux, on redémarre le service :
$ sudo /etc/init.d/nfs-kernel-server restart
+/- Activation ipv6
•
Au démarrage du serveur NFS, on a un message de warning indiquant que nfsd ne supporte pas ipv6. A priori, çà n'a pas d'impact sur ipv4 donc çà doit
marcher. Ceci étant, pour résoudre çà :
•
soit on l'installe en manuel avec :
$ sudo modprobe ipv6
•
soit on charge ipv6 au démarrage avec :
$ sudo geany /etc/modules
•
Ajouter la ligne
ipv6
Vérification
•
Pour vérifier que tout est ok, on peut faire :
$ rpcinfo -p
Récupérer adresse ip du RaspberryPi
•
Une fois fait, il suffit de monter le raspberryPi sur le poste client pour pouvoir échanger des copier coller des fichiers. On commence par retrouver l'adresse
ip du raspberryPi avec la commande
$ ifconfig
Accéder au partage de fichier depuis le client Gnu/Linux
Attention : la suite de la procédure se passe sur le poste fixe qui accède au Raspberry Pi
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 47 / 52
Installation des paquets utiles
•
Installer les paquets : nfs-common (et nfs-server tant qu'on y est... ? )
$ sudo apt-get install
Création d'un point de montage sur le client
•
Dans une console, on crée un répertoire pour le montage :
$ sudo mkdir /mnt/nfs
Montage du serveur (le RaspberryPi) sur le client (le poste fixe)
On utilise ici l'adresse du serveur : 192.168.1.x C'est l'adresse obtenue par ifconfig sur le raspberryPi On peut également obtenir cette adresse par nmap.
$ sudo mount -t nfs 192.168.1.x:/home/pi/ /mnt/nfs
ou
$ sudo mount -t nfs -o rw 192.168.1.x:/home/pi/ /mnt/nfs
Voilà, si pas de message d'erreur, c'est bon... Ne pas oublier le / avant le nom du chemin de montage après l'adresse...
A noter, pour automatiser le montage NFS depuis le poste client, on pourra utiliser un sccript comme par exemple :
#!/bin/bash
# script montage NFS
# par XH - Aout 2011
echo "--- script de Montage NFS côté client ---" $disque
read -p "Quelle est l'adresse du serveur NFS (192.168.x.x ou équiv.) ? " adresse #saisie de l'adresse
echo "L'adresse IP du serveur NFS à monter est :" $adresse
read -p "Quel est le répertoire du /home du serveur NFS à monter sur le client (/xavier ou /glapbox/Bureau ou équiv) ?" repertoire #saisie du répertoire
echo "Le répertoire du /home du serveur NFS à monter sur le client est :" $repertoire
echo "Le script va monter "$adresse":/home"$repertoire"/ sur /mnt/nfs"
read -p "<OK>" # pour attendre entrée pour continuer
sudo mount -t nfs -o rw $adresse:/home$repertoire/ /mnt/nfs
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 48 / 52
echo "Opération terminée"
read -p "<OK>" # pour attendre entrée pour sortir
exit 0 ;
Test
•
+/- Saisir dans la console pour voir si le montage nfs est bien en place :
$ mount | grep nfs
•
ce qui donne
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.1.3:/home/xavier/ on /mnt/nfs type nfs (rw,addr=192.168.1.3)
•
Aller dans le répertoire /mnt/nfs : on doit voir le contenu de RaspberryPi ! On peut dès lors réaliser des échanges de fichiers entre la RaspberryPi
et le PC de contrôle en toute simplicité !
•
On pourra également créer un lanceur sur le bureau du client vers le répertoire /mnt/nfs pour accéder facilement au contenu du répertoire. A noter que pour
ouvrir un dossier à partir d'un lanceur, il faudra faire :
• sous Ubuntu : nautilus /rep
•
sous xubuntu : thunar /rep
Bon à savoir
Si on veut démonter le partage NFS du côté client, dans un terminal on fait :
$ sudo umount /mnt/nfs
Sécurisation SSH
A venir...
Notamment exemple de connexion VNC
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 49 / 52
Serveur LAMP
A venir...
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 50 / 52
Cloner le système obtenu
HowTo avec Clonezilla
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 51 / 52
Le système final obtenu
La procédure que nous avons suivi nous a permis successivement de mettre en place :
• l'accès au bureau du raspberryPi à distance par réseau éthernet ou wifi
•
•
la synthèse vocale
la lecture de fichier sons et donc de bruitages sonores
•
•
la capture de sons et donc potentiellement la reconnaissance vocale par serveur internet
le logiciel Arduino et donc les fonctions de programmation et de contrôle à distance d'Arduino
•
•
le logiciel Processing et donc les fonctions d'interaction entre Arduino et le système embarqué
l'activation et la configuration du wifi permettant d'utiliser le raspberryPi à distance et sans fil à partir de n'importe quel type de plateforme
•
le partage de fichier entre le poste fixe sous Gnu/Linux et le raspberryPi par simple copier/coller
Au final, on obtient une solution polyvalente de développement.
Dès lors que l'on n'aura pas besoin d'utiliser des fonctions de capture et d'analyse d'image, le RaspberryPi, vu son prix, pourra rendre de fiers services !
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 52 / 52