Skip to main content

Configuration SD et installation d'un Raspberry Pi

Introduction

Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM très adapté au "digital making". D'un coût très accessible à l'origine (~40 €) et supporté par une communauté Open-Source et de Makers, de nombreux projets ont vu le jour intégrant le Raspi. Par exemple, l'écran tactile de l'AMR Sherpa est piloté par un Raspi. À la fin de 2019, le total des ventes du Raspi atteint 30 millions d'unités. Les crises du Covid et des Semi-Conducteurs provoquent cependant une augmentation spectaculaire des tarifs (x3 à x4) ou alors des délais de livraison à 6 mois pour des tarifs "classiques" ...

{{< image src="../images/rasp0.jpg" alt="Raspberry Pi 4 B prix et disponibilité" width="800" >}}

Avis perso :

  • Les Raspberry Pi sont d'excellents outils pour l'apprentissage aux systèmes avec un Linux embarqué. Ils permettent de bénéficier de l'éco-système Linux ainsi que de la communauté associée au projet.

  • Il est à noter que les tarifs ont augmenté à chaque génération passant de 30€ pour la Pi 1 à plus de 100€ pour la Pi4 avec 8Go de Ram, sans oublier l'ajout d'une alimentation USB-C, de la carte SD, d'un boîtier etc. À ce tarif, on se rapproche des PC portables ou des Intel Nuc d'occasion.

  • Pour des problématiques de type IA, les cartes JETSON sont une excellente alternative aux Raspberry.

Préparation de la carte SD

Pour créer une carte SD bootable sur le Raspberry pi, il faut dans un premier temps formater la carte. Trois cas de figure peuvent se présenter

  • Vous utilisez une carte SD neuve -> vous pouvez sauter l'étape de formatage avancé et passer à l'installation de l'OS.
  • Vous utilisez une carte SD formatée en FAT32 ou NTFS et windows lit la taille complète de la carte -> il suffit de faire un clic droit et de formater la carte en FAT32 -> vous pouvez sauter l'étape de formatage avancé et passer à l'installation de l'OS.
  • Vous utilisez une ancienne carte SD, formatée pour un Raspberry Pi mais vous souhaitez réaliser la mise à jour, suivez la procédure de formatage avancée

Formatage avancé de la carte SD

Avec l'outil Gestion de l'Ordinateur, dans Stockage - Gestion des disques, voit apparaître la partition de la carte SD (256 Mo en Fat 32 lisible par Windows) et (29,47 Go en EXT4, pas visible par Windows). Il faudra dans un premier temps supprimer ces partitions, créer un nouveau volume, et le formater.

{{< image src="../images/rasp1.png" alt="Gestion des disques Windows" width="800" >}}

Attention

{{< admonition type=danger title="Attention" open=true >}} Attention, si vous supprimez un volume/partition sur votre disque dur système, vous êtes bon pour réinstaller votre PC! Vérifier 2x avant de vous lancer ! {{< /admonition >}}

{{< image src="../images/rasp2.png" alt="Message de confirmation de suppression des partitions" width="800" >}}

Attention

{{< admonition type=danger title="Attention" open=true >}} Avant d'appuyer sur OUI, on vérifie ! {{< /admonition >}}

Maintenant que les anciennes partitions de la carte SD sont supprimées, on peut créer un nouveau volume avec un clic droit, créer un nouveau volume :

{{< image src="../images/rasp3.png" alt="Assistant Création d'un Volume" width="800" >}}

Pour le formatage, choisir FAT32, pour le nom de Volume, j'ai choisi Raspi.

{{< image src="../images/rasp4.png" alt="Formatage rapide en FAT32" width="400" >}}

On vérifie que le formatage et le nom de volume est correctement associé (on est OK pour l'étape suivante) {{< image src="../images/rasp6.png" alt="Vérification de l'opération de formatage" width="400" >}}

Installation de l'OS

On télécharge sur le site Raspberry Pi Imager le logiciel Raspberry Pi Imager

{{< image src="../images/rasp7.png" alt="Installation du Raspberry Pi Imager" width="600" >}}

Dans le choix de l'OS, j'ai choisi la version avec Desktop en 32 Bits. Il faut savoir que le Raspberry Pi 4 est compatible 64 Bits, mais certain logiciels comme CodeSys que nous utiliserons ne le sont pas à ce jour.

{{< image src="../images/rasp8.png" alt="Raspberry Pi Imager Choisissez l'OS" width="450" >}} {{< image src="../images/rasp9.png" alt="Raspberry Pi Imager OS 32 bit" width="450" >}}

Pour le Choose Storage, vérifier qu'il s'agisse bien de la carte SD! Si vous formatez votre clé USB, vous perdrez les données. Cliquer sur la petite roue crantée pour parémétrer la configuration de l'OS.

  • On autorise un lien SSH en cliquant Enable SSH

{{< image src="../images/rasp10.png" alt="Raspberry Pi Imager choix de la carte SD" width="450" >}} {{< image src="../images/rasp14a.png" alt="Raspberry Pi Imager Enable SSH" width="450" >}}

  • On crée un utilisateur avec son mot de passe (ici le user est pi et le mdp est 3.14)
  • Dans Set Locals, on choisit le Layout FR pour le clavier

{{< image src="../images/rasp14b.png" width="450" alt="Raspberry Pi Imager username et password">}} {{< image src="../images/rasp15.png" alt="Raspberry Pi Imager local settings" width="450" >}}

On vérifie qu'on est bien sur la carte SD et l'on fait Write

{{< image src="../images/rasp11.png" alt="Raspberry Pi Imager confirmation d'écriture" width="450" >}} {{< image src="../images/rasp12.png" alt="Raspberry Pi Imager écriture de la carte" width="450" >}}

Serveur DHCP et SSH

On met la carte SD dans le Raspberry Pi éteint, ensuite on l'alimente avec le câble USB-C. Le Raspberry Pi se connecte de base sur un serveur DHCP pour récupérer une adresse IP. L'idéal est de faire ce premier démarrage sur votre BOX. Il suffit alors de se connecter sur la box pour voir l'adresse IP qui a été affectée au port Ethernet (ici 192.168.1.15)

Il existe cependant deux autres solutions pour se passer de Box pour affecter une adresse IP au port Ethernet

  • On branche un écran, un clavier, une souris sur le Raspi et l'on configure le port Ethernet depuis l'interface graphique
  • On change directement un fichier de configuration pour figer une adresse IP Statique. Cela nécessite d'avoir un PC sous Linux avec un lecteur de carte SD.

Pour avoir accès au terminal Linux du Raspi depuis un PC portable et sans avoir à brancher un écran/clavier/souris, le plus rapide est de passer par une communication SSH. Un client SSH comme Putty est installé sur les postes de l'IUT:

{{< image src="../images/rasp16.png" alt="Détection IP Raspberry Pi avec LiveBox" width="450" >}} {{< image src="../images/rasp17.png" alt="Configuration Putty pour liason SSH avec le Raspberry Pi" width="450" >}}

On accepte la clé de cryptage (Accept) et l'on arrive sur le terminal Linux du Raspberry Pi depuis son PC portable. L'inconvénient, c'est qu'il ne s'agit d'une interface texte, moins conviviale qu'une interface graphique. Nous verrons dans un autre article comment se connecter sur l'interface graphique à distance avec Remote Desktop ou VNC

{{< image src="../images/raspi18.png" alt="Accepter la clé de cryptage" width="450" >}} {{< image src="../images/raspi19.png" alt="Login SSH sur le Raspberry Pi" width="450" >}}

On peut lancer la commande de mise à jour des paquets de la distribution linux en faisant : sudo apt update

{{< image src="../images/raspi20.png" alt="sudo apt update sur le Raspberry Pi" width="500" >}}

L'upgrade de la distribution se fait en faisant : sudo apt upgrade (Cliquer sur Y pour valider l'upgrade)

{{< image src="../images/raspi21.png" alt="Autoriser la mise à jour des paquets" >}}

Votre Raspberry Pi est maintenant à jour, nous pouvons y déployer le Remote Desktop et le VNC pour simplifier sa programmation.

Bureau à distance / Remote Desktop

Un des outils de base installé sur Windows est le bureau à distance (Remote Desktop).

Installation d'XRDP sur le Raspi

Pour que le bureau à distance du Raspberry Pi soit disponible depuis Windows, il est nécessaire d'installer le paquet xrdp. Depuis un terminal sur le Raspberry Pi ou depuis une liaison SSH faire sudo apt install xrdp (Y pour valider l'installation)

{{< image src="../images/raspi22.png" alt="Installation de xrdp sur le Raspberry Pi"width="600" >}}

et depuis la version BullsEye d'avril 2022 du Raspberry Pi, cela ne fonctionne plus correctement avec le user pi qui possède les droits admin sur la carte.

{{< admonition type=bug title="

Bug xrdp"xrdp

open=true >}}

C'est un bug sur la distribution BullsEye et le contournement trouvé et de retirer certains groupes au user pi. {{< /admonition >}}

Classiquement, le user pi appartient aux groupes suivants :

{{< image src="../images/raspi35.png" alt="Groups user pi" width="800" >}}

Il faut retirer les groupes render et video du user pi pour que le bureau à distance fonctionne. Cela a pour conséquence d'introduire des effets de bords sur certains logiciels qui ne vont peut être plus fonctionner. Pour développer des scripts python, ou faire du CodeSys, cela n'a pas d'influence. Pour retirer les deux groupes :

   sudo gpasswd -d video pi
   sudo gpasswd -d render pi

{{< image src="../images/raspi36.png" alt="remove render" width="450" >}} {{< image src="../images/raspi37.png" alt="remove video" width="450" >}}

  • on fait un reboot pour activer les modifications: sudo reboot
  • (pour faire un shutdown: sudo shutdown -h now)

Remote Desktop sur Windows

Nous pouvons maintenant utiliser l'outil de connexion de bureau à distance :

  • L'adresse IP correspond à l'adresse statique ou DHCP du Raspberry Pi

{{< image src="../images/raspi24.png" width="400" alt="Connexion Bureau à distance sur Raspberry Pi">}} {{< image src="../images/raspi25.png" alt="Connexion Bureau à Distance, écran de login" width="400" >}}

Et l'on accède à distance au bureau du Raspberry Pi:

{{< image src="../images/raspi26.jpg" alt="Connexion de bureau à distance opérationnel" width="600" >}}

Contrairement à la liaison SSH, on peut profiter de l'ergonomie offerte par l'interface graphique du Raspberry Pi. Les puristes se contenteront de la liaison SSH :wink:

  • L'avantage de cette méthode est le gain de temps, pas d'écran à installer, ni clavier/souris, ce qui constitue également un gain d'espace.
  • On restera attentif au fait que nous avons retiré les groupes render et video du user pi.
  • La connexion bureau à distance est un outil standard Windows installé de base avec Windows 10. La communauté Open Source préfère l'outil VNC pour faire des liaisons d'un poste de développement Linux vers le Raspberry Pi (sous Linux également). Sous Linux, les clients VNC sont libres, mais sous Windows, le client VNC le plus utilisé est gratuit mais pas libre (VNC Viewer de RealVNC)

VNC sur Raspberry Pi

Activation du serveur VNC sur le Raspi

Depuis un terminal ou une liaison SSH:

  • lancer la commande : sudo raspi-config

Il faut dans un premier activer le serveur VNC sur le Raspberry Pi

  • Interface Options -> Enable graphical remote access using RealVNC

{{< image src="../images/raspi31.png" alt="raspi-config VNC" width="400" >}} {{< image src="../images/raspi32.png" alt="raspi-config I3 Enable VNC" width="400" >}}

On peut régler la résolution du serveur VNC dans Display Option -> Set resolution for headless use

  • A choisir en fonction de la résolution de l'écran sur lequel on développe (la résolution du VNC doit être plus petite que celle de l'écran)

{{< image src="../images/raspi33.png" alt="VNC Resolution" width="400" >}} {{< image src="../images/raspi34.png" alt="VNC Resolution 1600x1200" width="400" >}}

Lorsque l'on valide les modifications, un reboot du Raspi se fait automatiquement.

Client VNC Windows

Le client VNC le plus facile à mettre en oeuvre est VNC Viewer Client RealVNC VNC Viewer

On place l'adresse IP du Raspberry PI et l'on appuie sur Entrée. (Ne pas cliquer sur Ouvrir une session)

{{< image src="../images/raspi27.png" alt="RealVNC connect" width="600" >}}

On renseigne :

  • le user : pi
  • le mdp : 3.14 (si c'est votre mdp)

{{< image src="../images/raspi29.png" alt="VNC Authentification" width="600" >}}

On arrive sur le bureau, il faut à nouveau se loger avec le bon mdp (3.14) {{< image src="../images/raspi30.jpg" alt="Ecran de connexion du Raspberry Pi avec VNC" width="600" >}}

Conclusion

Dans le développement en embarqué, il y a l'école :

  • SSH : tout en ligne de commande (les puristes)
  • Bureau distant : on profite de l'interface graphique. Ce n'est pas toujours nécessaire, mais c'est rassurant quand on débute (les pragmatiques)

Pour les bureaux distants :

  • XRDP possède l'avantage d'avoir le client bureau distant installé sur chaque PC Windows, ce qui est pratique quand on ne peut pas installer des logiciels sur le poste école. Dommage pour ce bug sur la version BullsEye du Raspberry Pi qui nécessite de modifier les groupes du user pi. Les forums de support préconisent VNC.
  • VNC fait partie de l'écosystème Linux, mais paradoxalement, le client Windows n'est pas libre bien que gratuit.