Configuration du Raspberry Pi

Raspberry Pi 2 modèle B

Après avoir installé une distribution Raspbian ("Wheezy" lors des premiers tests puis je suis passé à "Jessie Lite" et enfin à "Stretch Lite") sur la carte SD, voici les quelques configurations spécifiques que j'ai apportées.

Bien entendu toutes les commandes ci-dessous doivent être exécutées en tant sur super utilisateur, donc soit en préfixant chaque ligne de commande par sudo ou bien en se connectant directement en tant que super utilisateur.

sudo su

Configuration de la Raspberry Pi sans écran

Pour des raisons de sécurité (et éviter que toute Raspberry Pi fraîchement installée se retrouve accessible via SSh avec l'utilisateur et le mot de passe par défaut), il est nécessaire d'activer explicitement le serveur SSH (qui est déjà installé et configuré). Pour se faire, il est nécessaire de créer un fichier nommé ssh dans la partition boot de la carte SD (la première partition, celle qui est accessible depuis Windows.

Si vous souhaitez directement connecter votre Raspberry Pi au WiFi pour y accéder (cas de la Raspberry Pi Zero W par exemple), il faut créer un fichier wpa_supplicant.conf toujours sur la partition boot de la carte SD. Il est alors nécessaire d'y ajouter les informations suivantes, où "MaBoxInternet" est le nom du SSID du réseau à rejoindre et psk est la clé d'accès:

country=fr
update_config=1
ctrl_interface=/var/run/wpa_supplicant

network={
scan_ssid=1
ssid="MaBoxInternet"
psk="ClefSecurite"
}

Démarrage de la Raspberry Pi

Premier démarrage

Lors du premier démarrage, le système lance le configurateur. J'ai changé la timezone, le keyboard layout. Si vous souhaitez relancer cette configuration ultérieurement:

raspi-config

Changement de nom de la plate-forme (hostname)

Toujours dans cet outil, il est possible de changer le "hostname" pour donner un petit nom à votre plate-forme. Comme par défaut, un serveur avahi est démarré (pour avoir le protocole ZeroConf/Bonjour), cela vous permettra de vous connecter ultérieurement à votre plate-forme grâce au nom hostname.local. Pour ma part, j'ai choisi comme hostname rov. Malheureusement, ce réglage seul ne suffit pas. Il faudra aussi modifier le fichier /etc/hosts pour modifier le nom spécifié pour 127.0.0.1, après votre première connexion par ssh

Connexion distante depuis un client Windows

Windows 7 ou 10 ne connaissent pas nativement le protocole Bonjour. Il est nécessaire d'installer le service correspondant sur votre machine pour pouvoir l'utiliser. Voici un lien pour installer le service Bonjour d'Apple. A partir de ce moment, vous pourrez contacter votre plate-forme sur un réseau local avec le nom hostname.local, donc dans notre cas rov.local.

Activation du serveur ssh

Après avoir réalisé les configurations de base, j'ai activé le serveur ssh sur la plate-forme toujours à l'aide de raspi-config. Ceci me permet ensuite de me connecter à la plate-forme à distance et donc de ne plus avoir besoin d'un écran et d'un clavier dédié.

ssh pi@rov.local
pi@rov password: raspberry

Configuration de la distribution

Une petite mise à jour s'impose pour être sûr d'avoir toutes les dernières versions. Mais il faudra peut-être faire un peu de place sur votre système avant la mise à jour s'il n'y a pas eu d'extension de la partition à toute la carte SD (ou si votre carte est de taille très limitée). Pour cela voir la section suivante.

apt-get update
apt-get upgrade
apt-get clean

Un autre mécanisme de mise à jour existe grâce à la commande rpi-update. Il est alors possible d'obtenir le dernier noyau et les dernières corrections des modules. L'inconvénient de cette méthode est que si vous avez besoin de recompiler d'autres modules, vous ne disposerez pas des headers appropriés. Mais l'avantage est de pouvoir disposer du dernier noyau et des dernières améliorations pour corriger un problème éventuel. Pour l'utiliser, il suffit d'installer le programme et de le lancer à l'aide des commandes suivantes:

apt-get install rpi-update
rpi-update

Optimisations

Gain de place sur la carte SD

Vous n'êtes pas obligé de faire l'extension de la partition à toute la carte SD si vous n'avez pas de gros besoins de stockage. Et il est tout à fait possible de gagner pas mal de place par rapport à l'image fournie dans la distribution officielle Rapbian. En effet, cette image contient une distribution complète de Mathematica. Alors c'est super bien d'avoir Mathematica disponible gratuitement sur Raspberry, mais ça occupe beaucoup de place pour rien si vous ne l'utilisez pas.

apt-get remove wolfram-engine

Et vous gagnerez ainsi un peu plus de 450Mo au bas mot.

Depuis la distribution Raspbian "Jessie", libreoffice est installé d'office. Supprimer celui-ci vous fera gagner près de 300Mo.

apt-get remove --purge libreoffice*
apt-get clean
apt-get autoremove

D'autre part, il ne sert à rien de conserver la documentation pour l'ensemble des langues. Installez donc localepurge qui permet de supprimer les documentation et pages de manuel pour les langues que vous ne souhaitez pas.

apt-get install localepurge
localepurge

Ce ne sont encore pas moins de 150Mo que vous gagnerez sur la partition (170Mo sur Raspberry Pi 2).

Suppression des tty supplémentaires

Comme je ne vais pas utiliser le RPi que par des connexions distantes, il ne m'est pas utile d'activer plusieurs consoles (obsolète pour "Jessie" car le système de démarrage a changé):

sed -i '/[3-6]:23:respawn:\/sbin\/getty 38400 tty[3-6]/s%^%#%g' /etc/inittab

Désactivation de IPv6

IPv6 ne me sera d'aucune utilité pour l'usage sur un réseau local IPv4 que je vais faire de la plate-forme. Donc inutile de conserver IPv6. Ceci me permettra de libérer des ressources et de ne pas activer de traitements inutiles sur l'interface réseau.

echo "net.ipv6.conf.all.disable_ipv6=1" > /etc/sysctl.d/disableipv6.conf
echo 'blacklist ipv6' >> /etc/modprobe.d/blacklist
sed -i '/::/s%^%#%g' /etc/hosts

Configuration d'un serveur VNC

Cette configuration doit être faite en tant qu'utilisateur pi.

su pi

Installation

L'accès via ssh a été configuré dans les premières étapes. Mais il peut être intéressant d'avoir un accès via une interface graphique à notre plate-forme. Pour cela, j'ai installé et configuré un serveur vnc.

sudo apt-get install tightvncserver
tightvncserver

Le premier lancement de la commande tightvncserver permet de réaliser la configuration du mot de passe pour accéder au serveur vnc (il n'est pas nécessaire de configurer le mot de passe pour la visualisation en lecture seule car le but est bien d'interagir avec le RPi à distance).

Automatisation du lancement du serveur au démarrage

Pour automatiser le lancement du serveur vnc lors du démarrage de la RPi, il est nécessaire d'ajouter un script pour créer un service.

cd /etc/init.d
sudo nano vnc-server

Voici le contenu du fichier vnc-server

### BEGIN INIT INFO
# Provides: vnc-server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

#! /bin/sh
# /etc/init.d/vnc-server

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
start)
echo "Starting VNC Server"
#Insert your favoured settings for a VNC session
sudo -u $USER /usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565
;;

stop)
echo "Stopping VNC Server"
sudo -u $USER /usr/bin/vncserver -kill :1
;;

*)
echo "Usage: /etc/init.d/vnc-server {start|stop}"
exit 1
;;
esac

exit 0

Il ne reste alors plus qu'à rendre ce fichier exécutable et à calculer les dépendances pour la séquence de démarrage

sudo chmod 755 vnc-server
sudo update-rc.d vnc-server defaults
sudo reboot

Après le redémarrage vous aurez un serveur vnc lancé par défaut au démarrage de la RPi. Pour se connecter à ce serveur depuis un poste sous Windows, j'ai utilisé RealVNC avec la connexion à l'adresse: rov.local:1.