
1) Introduction
Bonjour et bienvenue à tous.
L'objectif de cette page est de parler du Raspberry Pi, vous savez cet ordinateur miniature qui est un best seller.
S'il se vend très bien c'est parce qu'il a au moins 3 caractéristiques très importantes:
- son petit prix d'environ 35€ pour les modèles classiques et environ 10€ pour le Raspberry Pi Zero
- sa petite taille (format carte bancaire)
- et ses entrées sorties (GPIO) qui permettent de faire toutes sortes de projets électronique, domotique, media-center, retrogaming, serveur web etc...
Pour ma part, voici mes 2 Raspberry Pi 2 Model B:


Voyons maintenant comment installer ce nano-ordinateur.
2) Installation
Il existe de nombreux systèmes d'exploitation pour le Raspberry Pi:- Raspbian, c'est l'OS officiellement supporté par la fondation Raspberry Pi. Comme son nom le suggère, il est basé sur Debian GNU/Linux et est optimisé pour fonctionner sur un Raspberry Pi
- Ubuntu Core pour Raspberry Pi, est un OS orienté IoT
- OSMC ou OpenELEC sont des distributions orientées Media Center
- Alpine Linux ou HypriotOS sont des OS très légers et orientés conteneurs logiciels tels que Docker
- Recalbox, RetroPie ou Lakka sont des distributions orientées retrogaming
- Kali Linux, une distribution orientée sécurité informatique
- RaspBSD qui est un OS UNIX Libre qui est notamment utilisé par la PS4 et macOS
- et encore beaucoup d'autres
Pour le moment nous allons utiliser Raspbian, l'image fournie par la fondation Raspberry Pi.
2.1) Téléchargement
Raspberry Pi OS peut être téléchargé ici: https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bitPlusieurs images sont proposées:
- Raspbian Buster with desktop and recommended software (la version complète de 1945 Mo)
- Raspbian Buster with desktop (version avec le bureau, mais pas tous les logiciels de 1149 Mo)
- Raspbian Buster Lite (la version minimale sans bureau de 426 Mo)
2.2) Décompression
Décompresser l'archive graphiquement sous Kubuntu est très simple, il suffit de faire un clic-droit sur le fichier .zip téléchargé, puis "Extraire l'archive ici". On obtiendra le fichier 2019-06-20-raspbian-buster-full.imgSi on veut le faire en ligne de commande (CLI):
# On se place dans le répertoire contenant l'image prabou@prabou-VPCZ23C5E:~$ cd Téléchargements/ # On vérifie que notre image est bien présente prabou@prabou-VPCZ23C5E:~/Téléchargements$ ls -lh | grep -i 'buster' -rw-rw-r-- 1 prabou prabou 1,9G juil. 2 22:29 2019-06-20-raspbian-buster-full.zip # On décompresse l'archive prabou@prabou-VPCZ23C5E:~/Téléchargements$ unzip 2019-06-20-raspbian-buster-full.zip Archive: 2019-06-20-raspbian-buster-full.zip inflating: 2019-06-20-raspbian-buster-full.img # On affiche le fichier image obtenu prabou@prabou-VPCZ23C5E:~/Téléchargements$ ls -l | grep -i 'buster' -rw-r--r-- 1 prabou prabou 5289017344 juin 20 19:20 2019-06-20-raspbian-buster-full.img -rw-rw-r-- 1 prabou prabou 1945084391 juil. 2 22:29 2019-06-20-raspbian-buster-full.zipOn constate qu'après la décompression on a obtenu dans notre répertoire le fichier image 2019-06-20-raspbian-buster-full.img. Le format de fichier IMG est équivalent au format ISO.
On notera aussi que le fichier image est beaucoup plus lourd (5,2 Go) que le zip téléchargé.
La prochaine étape consiste à copier cette image sur la carte micro sd.
2.3) Copie
Il y a de nombreux outils grahiques permettant de copier cette image sur la carte micro SD. Parmi les plus connus il y a "Win32 Disk Imager", "UNetbootin" ou encore Etcher. Voici un aperçu de Etcher:


Si on veut le faire en ligne de commande:
prabou@prabou-VPCZ23C5E:~$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 3,9G 0 3,9G 0% /dev tmpfs 789M 1,6M 788M 1% /run /dev/sda1 59G 20G 36G 36% / tmpfs 3,9G 114M 3,8G 3% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/sdb1 59G 24G 33G 42% /home tmpfs 789M 28K 789M 1% /run/user/1000 /dev/loop9 55M 55M 0 100% /snap/core18/1049 # La même commande qu'avant mais après avoir inséré la carte micro sd prabou@prabou-VPCZ23C5E:~$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 3,9G 0 3,9G 0% /dev tmpfs 789M 1,6M 788M 1% /run /dev/sda1 59G 20G 36G 36% / tmpfs 3,9G 119M 3,8G 4% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/sdb1 59G 24G 33G 42% /home tmpfs 789M 28K 789M 1% /run/user/1000 /dev/loop9 55M 55M 0 100% /snap/core18/1049 /dev/mmcblk0p2 4,6G 4,1G 278M 94% /media/prabou/rootfs /dev/mmcblk0p1 253M 40M 213M 16% /media/prabou/boot # On affiche les périphériques prabou@prabou-VPCZ23C5E:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 59,6G 0 disk └─sda1 8:1 0 59,6G 0 part / sdb 8:16 0 59,6G 0 disk └─sdb1 8:17 0 59,6G 0 part /home mmcblk0 179:0 0 29G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /media/prabou/boot └─mmcblk0p2 179:2 0 4,7G 0 part /media/prabou/rootfs # On démonte les 2 partitions prabou@prabou-VPCZ23C5E:~$ sudo umount /dev/mmcblk0p1 [sudo] Mot de passe de prabou : prabou@prabou-VPCZ23C5E:~$ sudo umount /dev/mmcblk0p2 # On vérifie que toutes les partitions ont bien été démontées prabou@prabou-VPCZ23C5E:~$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur udev 3,9G 0 3,9G 0% /dev tmpfs 789M 1,6M 788M 1% /run /dev/sda1 59G 20G 36G 36% / tmpfs 3,9G 120M 3,8G 4% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/sdb1 59G 24G 33G 42% /home tmpfs 789M 28K 789M 1% /run/user/1000 /dev/loop9 55M 55M 0 100% /snap/core18/1049 # Copie de l'image prabou@prabou-VPCZ23C5E:~$ cd Téléchargements/ prabou@prabou-VPCZ23C5E:~/Téléchargements$ sudo dd bs=4M if=2019-06-20-raspbian-buster-full.img of=/dev/mmcblk0 status=progress 5289017344 octets (5,3 GB, 4,9 GiB) copiés, 286 s, 18,5 MB/s 1261+0 enregistrements lus 1261+0 enregistrements écrits 5289017344 octets (5,3 GB, 4,9 GiB) copiés, 344,957 s, 15,3 MB/s prabou@prabou-VPCZ23C5E:~/Téléchargements$L'écriture de l'image est maintenant terminée. Vous pouvez donc retirer votre carte mémoire et l'insérer dans votre Raspberry Pi.
Toujours en ligne de commande, une autre possibilité pour flasher la carte SD est d'utiliser le script proposé par hypriot ici.
3) Branchement et Démarrage
Pour le branchement, on aura besoin de:
- un câble HDMI/HDMI (ou micro HDMI/HDMI pour le raspberry pi 4) pour brancher le raspberry pi à un écran d'ordinateur ou un téléviseur
- un câble RJ45 pour le réseau
- un clavier et une souris
- la carte micro SD préparée plus haut
- une alimentation 5V 2,5A micro USB (ou USB-C pour le raspberry pi 4) type chargeur de smartphone
Je vous conseille de brancher en dernier le câble d'alimentation (le câble micro usb), juste histoire de ne pas rater une partie du démarrage.
Au premier démarrage, vous allez directement arriver sur le bureau qui ressemble à ceci:

En cliquant Next, vous allez avoir la possibilité de régler le Pays, la Langue, la Timezone, puis l'affichage et enfin de mettre à jour l'ensemble des logiciels.
4) Premiers pas
Quelques petites choses importantes à savoir:
-au premier démarrage le clavier est en QWERTY; pour changer, Menu > Preferences > Mouse and Keyboard Settings > Keyboard > Keyboard Layout
ou en mode CLI:
# Editer le fichier /etc/default/keyboard sudo vi /etc/default/keyboard # et remplacer la ligne suivante: XKBLAYOUT="gb" par: XKBLAYOUT="fr"-une grande partie des réglages en mode graphique est disponible dans Menu > Preferences > Configuration du Raspberry Pi


-l'utilisateur par défaut est "pi" et son mot de passe par défaut est "raspberry". L'utilisateur "pi" a par défaut les droits root
Pour changer le mot de passe d'un utilisateur, on peut le faire graphiquement (voir ci-dessus) ou en ligne de commande. Si on veut le faire en mode CLI, ouvrir une fenêtre LXTerminal et utiliser les commandes suivantes:
# changement du mot de passe de l'utilisateur pi pi@raspberrypi:~ $ sudo passwd pi Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully pi@raspberrypi:~ $ # changement du mot de passe de l'utilisateur root pi@raspberrypi:~ $ sudo passwd root Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully pi@raspberrypi:~ $
Si vous avez plusieurs raspberry, et que vous voulez leur attribuer à chacun un nom, on peut utilier la commande:
# renommage du raspberrypi sudo hostnamectl set-hostname raspberrypi1
Pour mettre à jour le système:
sudo apt update sudo apt full-upgrade
Après la mise à jour, je vous conseille de redémarrer.
5) Connexion à distance
Dans la pratique on se connectera très souvent au Raspberry pi à distance soit graphiquement (autrement dit on verra le bureau), soit en mode CLI.5.1) En mode graphique par VNC
Si on a besoin de se connecter à distance au Raspberry pi avec une interface graphique, on va pouvoir utiliser le duo VNC Server/Client.Depuis Raspbian de Septembre 2016, VNC Server et Client sont inclus dans la distribution, donc rien à télécharger et à installer mais juste le(s) service(s) à démarrer.
Remarque: Si VNC Server et Client n'étaient pas installés, on aurait pu utiliser la commande suivante:
Pour démarrer le service graphiquement: Menu > Preferences > Raspberry Pi Configuration > Interfaces. Et s'assurer que VNC est "Enabled". Après cette action, VNC Server démarrera automatiquement avec le Raspberry pi. Si on veut démarrer VNC Server sans pour autant rendre cela automatique, voici quelques commandes pratiques:
# démarre VNC Server sudo systemctl start vncserver-x11-serviced.service # arrête VNC Server sudo systemctl stop vncserver-x11-serviced.service # pour démarrer automatiquement VNC Server lorsque le Raspberry pi est mis sous tension sudo systemctl enable vncserver-x11-serviced.service # pour arrêter le démarrage automatique de VNC Server lorsque le Raspberry pi est mis sous tension sudo systemctl disable vncserver-x11-serviced.service # pour contrôler le statut sudo systemctl status vncserver-x11-serviced.service
Pour VNC Client (ou VNC Viewer c'est comme vous voulez), si vous souhaitez faire une installation classique, vous pouvez télécharger le package VNC Connect ici.


5.2) En mode CLI par SSH
SSH est un protocole de communication sécurisé. Il utilise le port 22, et permet de se connecter à distance à un ordinateur afin d'obtenir un shell ou ligne de commande.On peut établir une connexion ssh (putty pour les utilisateurs Windows):
Par défaut, le mot de passe de l'utilisateur pi vous sera demandé; mais ce n'est pas très sécurisé.
Pourquoi est-il recommandé d'utiliser des clés ssh plutôt qu'un mot de passe ? Voici quelques raisons:
- on peut déjà dire que la sécurité d'un système qui tient à un mot de passe choisi par un humain n'est pas ce qu'il y a de mieux
- de plus l'administrateur d'un système ne peut pas empêcher un utilisateur de choisir un mot de passe faible qui pourrait facilement être trouvé
- en utilisant une paire de clés ssh, pas besoin d'utiliser des mots de passe différents pour se connecter à différents serveurs, et donc aucun mot de passe à connaître
- on peut complètement désactiver la connexion par mot de passe, et aucun mot de passe n'est alors demandé lors de la connexion
Pour sécuriser l'accès à notre Raspberry, on peut donc choisir de limiter les connexions à celles avec échange de clés. Pour mettre cela en place, 2 étapes:
# s’il n’existe pas, on crée le répertoire .ssh mkdir $HOME/.ssh # on attribue les bons droits au répertoire chmod 700 $HOME/.ssh # on se place dans le répertoire cd $HOME/.ssh # on génère une paire de clés. L’option 4096 permet d’augmenter la sécurité de votre clé (au lieu des 2096 par défaut). Enfin lorsque le système va vous demander une « passphrase » (un mot de passe pour sécuriser votre clé privée), même si elle n’est pas obligatoire vous vous doutez qu’il est recommandé d’en utiliser une ! ssh-keygen # on affiche nos 2 clés, et on notera que leurs droits sont différents prabou@prabou-VPCZ23C5E:~/.ssh$ ls -ltr total 12 -rw-r--r-- 1 prabou prabou 405 avril 21 2019 id_rsa.pub -rw------- 1 prabou prabou 1831 avril 21 2019 id_rsa -rw-rw-r-- 1 prabou prabou 666 sept. 14 10:50 known_hosts prabou@prabou-VPCZ23C5E:~/.ssh$
Nous voilà maintenant avec une clé privée (id_rsa) et une clé publique (id_rsa.pub).
La clé privée doit rester dans le répertoire ~/.ssh, et surtout ne pas être partagée; tandis que la clé publique doit être copiée sur les serveurs sur lesquels on souhaite se connecter.
Remarque: si vous avez perdu votre clé publique, il est possible de la recalculer à partir de la clé privée avec la commande ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Maintenant, il va falloir envoyer notre clé publique vers le serveur. Pour cela, on peut utiliser des commandes telles que scp, sftp ou utiliser un client sftp avec une interface graphique comme Filezilla:
# avec la commande scp prabou@prabou-VPCZ23C5E:~$ scp -p /home/prabou/.ssh/id_rsa.pub pi@192.168.0.11:/home/pi id_rsa.pub 100% 405 164.4KB/s 00:00 prabou@prabou-VPCZ23C5E:~$ # avec la commande sftp prabou@prabou-VPCZ23C5E:~$ sftp pi@192.168.0.11 Connected to pi@192.168.0.11. sftp> pwd Remote working directory: /home/pi sftp> put /home/prabou/.ssh/id_rsa.pub Uploading /home/prabou/.ssh/id_rsa.pub to /home/pi/id_rsa.pub /home/prabou/.ssh/id_rsa.pub 100% 405 115.6KB/s 00:00 sftp> quit prabou@prabou-VPCZ23C5E:~$

Attention aux permissions : chown xx:xx /.....
/home/pi/.ssh/authorized_keys (le dossier .ssh et le fichier authorized_keys doivent appartenir à pi)
Si tu te connectes en root :
/root/.ssh/authorized_keys (le dossier .ssh et le fichier authorized_keys doivent appartenir à root)
Puis : chmod 700 .... et chmod 600 ....
le dossier .ssh en 700
le fichier authorized_keys en 600
Dans : /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
Le plus simple et le plus pratique est certainement d'utiliser la commande:
Cette commande va copier notre clé publique dans le répertoire /home/pi/.ssh/authorized_keys du raspberrypi avec les bons droits.
À partir de maintenant on peut se connecter à notre raspberrypi avec nos clés ssh comme ceci:
# on se connecte à notre raspberrypi avec clés ssh prabou@prabou-VPCZ23C5E:~$ ssh pi@192.168.0.11 Linux raspberrypi1 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Nov 10 18:29:40 2019 from 192.168.0.24 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi1:~ $
5.2.1) Interdire l’authentification par mot de passe
Interdire l’authentification par mot de passe est optionnel.Si on ne veut autoriser que les connexions par clés, il faut modifier la configuration du service SSH, en éditant le fichier /etc/ssh/sshd_config pour qu'il contienne la ligne suivante:
Redémarrer ensuite le service ssh avec: