Préparer une Raspberry Pi

Ci-dessous les étapes pour installer Raspberry Pi OS sur une Raspberry Pi puis fixer la configuration de base

Installation de Raspberry Pi OS

La procédure indiquée ci-dessous fait usage du logiciel Rufus pour créer la carte µSD sur laquelle est installé Raspberry Pi OS.

D’autres logiciels sont utilisables tels que Raspberry Pi Imager, Balena Etcher, Win32 disk imager. Cependant, ils présentent chacun un inconvénient :

  • Raspberry Pi Imager programme la µSD en téléchargeant Raspberry Pi OS depuis internet (⇒ N installations impliquent N téléchargements de Raspberry Pi OS).

  • Balena Etcher est beaucoup plus “lourd” que Rufus (139Mo contre 1.3Mo pour l’installateur).

  • Win32 disk imager ne semble plus vraiment maintenu (dernière version datant de 2017).

À noter que Win32 disk imager est le seul à offrir la fonctionnalité de sauvegarde d’une carte SD dans un fichier sur l’ordinateur. Cette fonctionnalité est malgré tout peu à peu délaissée car supplantée par l’utilitaire SD Card Copier présent dans les versions récentes de Raspberry Pi OS.

  1. Télécharger en local sur sa machine l’archive de l’image disque de Raspberry Pi OS.

    Exemple pour la version BullsEye du 22/09/2022 avec interface graphique : 2022-09-22-raspios-bullseye-armhf.img.xz

    Cette image disque sera récupérée, par soucis de rapidité, depuis les médias suivants dans cet ordre :

    1. la clé USB fournie

    2. le NAS du labo (→ \\diskstation\install\rpi-os)

    3. le site de Raspberry Pi OS link

      Sur le site, choisir “Raspberry Pi OS with desktop” si on veut une interface graphique et “Raspberry Pi OS Lite” dans le cas contraire (→ développement croisé, déploiement de serveurs…​)

      rpi os versions
  2. Désarchiver l’image disque (→ 7-Zip, Winzip …​)

  3. Programmer la carte SD avec le logiciel Rufus en veillant à bien sélectionner le lecteur de destination

    rufus

Mode “Headless”

Ce qu’on désigne par “Headless” est le fait d’utiliser une Raspberry Pi uniquement à distance via le réseau et donc sans avoir à y connecter clavier, souris et écran.

Pour permettre ce mode d’utilisation, il faut :

  • soit utiliser Raspberry Pi Imager pour personnaliser l’image disque de Raspberry Pi OS avant son téléchargement depuis le site officiel

  • soit apporter des modifications sur la carte µSD sur laquelle a été transféré l’image disque standard de Raspberry Pi OS.

Au lycée, c’est cette 2èmeméthode qui sera utilisée.

  1. Créer un fichier vide portant le nom ssh — sans extension — dans la partition boot de la carte SD (→ voir astuce ci-dessous si cette partition ne s’affiche dans l’explorateur de Windows)

    empty ssh file

    Ceci permettra d’activer le serveur SSH sur la Raspberry Pi dès le 1erdémarrage et, par conséquent, d’autoriser son utilisation à distance via le réseau.

    Si la partition boot n’apparait pas dans l’explorateur de fichiers de Windows, lui attribuer une lettre de lecteur via le gestionnaire de disques (→ commande diskmgmt.msc ou bouton droit sur menu “Démarrer” puis “Gestion des disques”)

    boot assign drive letter
  2. Ajouter les commandes suivantes à la fin de la ligne présente dans le fichier cmdline.txt en veillant à n’ajouter AUCUN RETOUR À LA LIGNE :

    systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target
    cmdline edit
    Exemple dans BullsEye avec interface graphique
    cmdline edit lite
    Exemple dans BullsEye avec en ligne de commande

    Ceci aura poour conséquence de demander l’exécution du script firstrun.sh (voir plus loin pour son contenu) au démarrage de la Raspberry Pi

  3. Créer — toujours dans la partition boot — un fichier hostname, sans extension, dans lequel vous indiquerez le nom que vous souhaitez assigner à votre Raspberry Pi.

    Ce nom doit satisfaire à un certain nombre d’exigences : 63 caractères max., ne doit contenir que les lettres de 'a' à 'z', les chiffres de '0' à '9', le tiret '-' et ne peut pas commencer par le tiret '-'.

    hostname edit
    Exemple
  4. Créer dans la partition boot un fichier firstrun.sh dans lequel vous collerez le script suivant :

    Code source du script à coller dans firstrun.sh
    #!/bin/bash
    
    set +e
    
    CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"`
    NEW_HOSTNAME=`cat /boot/hostname | tr -d " \t\n\r"`
    if [ -f /usr/lib/raspberrypi-sys-mods/imager_custom ]; then
       /usr/lib/raspberrypi-sys-mods/imager_custom set_hostname $NEW_HOSTNAME
    else
       echo $NEW_HOSTNAME >/etc/hostname
       sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts
    fi
    FIRSTUSER=`getent passwd 1000 | cut -d: -f1`
    FIRSTUSERHOME=`getent passwd 1000 | cut -d: -f6`
    if [ -f /usr/lib/raspberrypi-sys-mods/imager_custom ]; then
       /usr/lib/raspberrypi-sys-mods/imager_custom enable_ssh
    else
       systemctl enable ssh
    fi
    if [ -f /usr/lib/userconf-pi/userconf ]; then
       /usr/lib/userconf-pi/userconf 'pi' '$5$hWT/bRpU0o$1VhE.rvbNMCDhrSfU0fi8oPzBFUoEa4BxyrjGSaWcT6'
    else
       echo "$FIRSTUSER:"'$5$hWT/bRpU0o$1VhE.rvbNMCDhrSfU0fi8oPzBFUoEa4BxyrjGSaWcT6' | chpasswd -e
       if [ "$FIRSTUSER" != "pi" ]; then
          usermod -l "pi" "$FIRSTUSER"
          usermod -m -d "/home/pi" "pi"
          groupmod -n "pi" "$FIRSTUSER"
          if grep -q "^autologin-user=" /etc/lightdm/lightdm.conf ; then
             sed /etc/lightdm/lightdm.conf -i -e "s/^autologin-user=.*/autologin-user=pi/"
          fi
          if [ -f /etc/systemd/system/getty@tty1.service.d/autologin.conf ]; then
             sed /etc/systemd/system/getty@tty1.service.d/autologin.conf -i -e "s/$FIRSTUSER/pi/"
          fi
          if [ -f /etc/sudoers.d/010_pi-nopasswd ]; then
             sed -i "s/^$FIRSTUSER /pi /" /etc/sudoers.d/010_pi-nopasswd
          fi
       fi
    fi
    if [ -f /usr/lib/raspberrypi-sys-mods/imager_custom ]; then
       /usr/lib/raspberrypi-sys-mods/imager_custom set_keymap 'fr'
       /usr/lib/raspberrypi-sys-mods/imager_custom set_timezone 'Europe/Paris'
    else
       rm -f /etc/localtime
       echo "Europe/Paris" >/etc/timezone
       dpkg-reconfigure -f noninteractive tzdata
    cat >/etc/default/keyboard <<'KBEOF'
    XKBMODEL="pc105"
    XKBLAYOUT="fr"
    XKBVARIANT=""
    XKBOPTIONS=""
    
    KBEOF
       dpkg-reconfigure -f noninteractive keyboard-configuration
    fi
    rm -f /boot/firstrun.sh
    sed -i 's| systemd.run.*||g' /boot/cmdline.txt
    exit 0

    Le rôle de ce script est :

    1. d’assigner le nom de la Raspberry Pi avec celui spécifié dans le fichier hostname lors de l’étape précédente

    2. de créer un utilisateur par défaut dont le nom de login est pi et le mot de passe raspberry

    3. de configurer les “locales” (heure, clavier) pour s’adapter à une utilisation en France

1er démarrage

  1. Insérer la carte µSD dans la Raspberry Pi

  2. Connecter un câble réseau à la Raspberry Pi

  3. Brancher un clavier, une souris et un écran à la Raspberry Pi

    Inutile en mode d’utilisation Headless

  4. Démarrer la Raspberry Pi en l’alimentant via un bloc secteur 5V avec prise micro-usb pouvant délivrer 2500mA

  5. Se connecter à la Raspberry Pi — soit depuis l’interface graphique soit par ssh — avec les données d’identification suivantes :

    login    : pi
    password : raspberry
    Si la Raspberry Pi n’est pas en mode Headless
    1. Ignorer pour l’instant l’avertissement concernant SSH

    ssh warning

    Pour désactiver cet avertissement sans avoir à changer le mot de passe par défaut, exécuter la commande suivante dans un terminal :

    sudo rm /etc/xdg/lxsession/LXDE-pi/sshpwd.sh
  6. Ne pas suivre l’assistant de démarrage MAIS relever l’adresse IP qui s’affiche au dessus du bouton “Next”

    1st wizard
    • Ne pas suivre l’assistant évitera de lancer par mégarde la mise à jour de la Raspberry Pi ce qui peut être très, très, très long au lycée…​ 😉

    • Relever l’adresse IP permettra de localiser sans équivoque votre Raspberry Pi sur le réseau (du moins jusqu’à expiration du bail DHCP)

Configuration de base

La configuration de base consiste à :

  • configurer la disposition du clavier

  • renommer si besoin la Raspberry Pi

  • changer éventuellement le mot de passe

  • activer les interfaces matérielles (i2c, spi, serial) qui vont nous servir à connecter des capteurs ou des dispositifs de commandes à la Raspberry Pi

    1. Lancer l’utilitaire de configuration

      • soit depuis l’interface graphique

        raspi config gui
      • soit depuis une console (locale ou distante via ssh)

        sudo raspi-config
        raspi config cli
    2. Configurer la disposition du clavier — si connecté — à partir du menu Localisation Options  Keyboard

    3. Aller dans System Options  Hostname pour changer au besoin le nom de la Raspberry Pi

    4. Changer éventuellement le mot de passe en passant par le menu System Options  Password.

      Ceci ne doit bien entendu n’être fait que sur une Raspberry Pi disposant d’une carte µSD personnelle ou dédiée à un projet de fin d’année. Dans le cas contraire, la Raspberry Pi doit rester utilisable par tout le monde et il est donc conseillé de garder le mot de passe par défaut (→ raspberry).

    5. Activer les bus matériels sur les broches d’entrées/sorties par l’intermédiaire des menus :

      • Interface Options  I2C,

      • Interface Options  SPI,

      • Interface Options  Serial Port.

        Pour l’interface Serial Port, désactiver le serial login shell et activer le serial port hardware.

🞄  🞄  🞄