Préparer une Raspberry Pi
Ci-dessous les étapes pour :
-
installer le système d’exploitation de la Raspberry Pi connu sous le nom Raspberry Pi OS (base Linux Debian)
-
fixer la configuration initiale
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 sera installé le système d’exploitation de la Raspberry Pi. 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).
À 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. |
-
S’équiper d’une carte µSD (présente dans les kits Raspberry Pi distribués)
-
Télécharger en local sur sa machine l’archive de l’image disque de Raspberry Pi OS (→ une image des partitions et du système de fichiers à copier sur la carte µSD).
Exemple pour la version Bookworm du 04/07/2024 avec interface graphique :
2024-07-04-raspios-bookworm-armhf.img.xz
Cette image disque sera récupérée depuis le NAS du labo (→
\\diskstation\install\RaspberryPi
). -
Désarchiver l’image disque (→ 7-Zip, Winzip …)
-
Programmer la carte SD avec le contenu de cette image disque décompressé grâce au logiciel Rufus en veillant à sélectionner le bon lecteur de destination (pas le disque dur mais la carte µSD…)
|
Mode “Headless”
Ce qu’on désigne par “Headless” est le fait d’utiliser une Raspberry Pi uniquement à distance via le réseau (→ SSH) et donc sans avoir à y connecter clavier, souris et écran.
Ce mode s’oppose au mode nommé parfois Desktop ou GUI dans lequel on utilise la Raspberry Pi comme un ordinateur traditionnel en lui connectant un clavier, une souris, un écran.
Pour permettre le mode d’utilisation headless dès la 1ère mise sous tension de la Raspberry Pi, il faut :
-
soit utiliser le logiciel 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ème méthode qui sera utilisée.
-
Créer dans la partition de la carte µSD nommée
boot
(→ voir astuce ci-dessous si cette partition ne s’affiche dans l’explorateur de Windows) un fichier nommé obligatoirementhostname.txt
dans lequel vous indiquerez le nom à assigner à votre Raspberry Pi.Celui-ci sera de la forme
rpi-c12-<n°-sur-2-chiffres-de-la-Raspberry Pi>
. Exemple :rpi-c12-04
Veillez à ce que l’explorateur affiche les extensions de nom de fichier (option :
) pour s’assurer que les noms de fichier correspondent exactement à ce qui est saisi lors de leur création.En effet, l’explorateur ajoute systématiquement l’extension
.txt
à tout nouveau document texte créé et ne l’affiche pas si cette option n’est pas cochée. Il en résulte que si vous créez un fichierhostname.txt
celui portera au final le nomhostname.txt.txt
(← 2 extensions.txt
) -
Ajouter les commandes données ci-dessous à la suite de la ligne présente dans le fichier
cmdline.txt
déjà présent sur la µSD en veillant à n’ajouter AUCUN RETOUR À LA LIGNE (caractères CR (0x0D) ou LF (0x0A) ou combinaison des 2):cfg80211.ieee80211_regdom=FR systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target
Cet ajout aura pour conséquence de demander l’exécution du script
firstrun.sh
(voir plus loin pour son contenu) au 1er démarrage de la Raspberry PiPour s’assurer qu’aucun retour à la ligne n’est inséré, le mieux est :
-
d’utiliser un éditeur de texte un tant soit peu évolué (i.e. VSCode) pour faire la modification plutôt que le Bloc Notes Windows qui a tendance à ajouter des retours à la ligne automatiquement
-
de vérifier dans un éditeur hexadécimal qu’aucun caractère CR (0x0D) ou LF (0x0A) n’a été ajouté automatiquement
[...] 0000000C0 3D 6B 65 72 6E 65 6C 2D 63 6F 6D 6D 61 6E 64 2D =kernel-command- 00000000D 6C 69 6E 65 2E 74 61 72 67 65 74 line.target (1)
1 Pas de 0A ou 0D après le 74 final
-
-
Coller dans la partition
boot
le fichierfirstrun.sh
dont le contenu est donné ci-dessous :
Tout comme dans l’étape précédente, il faut porter toute son attention sur les retours à la ligne : ceux-ci doivent être OBLIGATOIREMENT codés avec la convention Unix (→ uniquement LF (0x0A)) et non avec celle de Windows (→ CR (0x0D) + LF (0x0A)) ou de MacOS (→ uniquement CR (0x0D)).
Le non respect de cette contrainte empêchera le démarrage de la Raspberry Pi.
#!/bin/bash # Demande au shell de stopper l'exécution du script dès qu'une erreur se produit set +e # Configuration du nouveau nom d'hôte avec celui # présent dans le fichier hostanme.txt CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"` NEW_HOSTNAME=`cat /boot/firmware/hostname.txt | tr -d " \t\n\r"` echo $NEW_HOSTNAME >/etc/hostname sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts # Activation de SSH systemctl enable ssh # Mise en place d el'utilisateur par défaut # (user : pi / password : raspberry) FIRSTUSER=`getent passwd 1000 | cut -d: -f1` FIRSTUSERHOME=`getent passwd 1000 | cut -d: -f6` echo "$FIRSTUSER:"'$5$bD3Tw27JLx$G8uIBQgYsTzf3L3IS8hxgEoqqfkvAFqJfltQ7KSy9Y3' | 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 # Configuration du WiFi pour la salle C12 (SSID : STS_C12) cat >/etc/wpa_supplicant/wpa_supplicant.conf <<'WPAEOF' country=FR ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev ap_scan=1 update_config=1 network={ ssid="STS_C12" psk=fc3c77582ae2ac71409f1a2cdade251e6e8414af9136d68cc39eccd7ee532ac8 } WPAEOF chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf rfkill unblock wifi for filename in /var/lib/systemd/rfkill/*:wlan ; do echo 0 > $filename done # Configuration du fuseau horaire rm -f /etc/localtime echo "Europe/Paris" >/etc/timezone dpkg-reconfigure -f noninteractive tzdata # Configuration clavier AZERTY cat >/etc/default/keyboard <<'KBEOF' XKBMODEL="pc105" XKBLAYOUT="fr" XKBVARIANT="" XKBOPTIONS="" KBEOF dpkg-reconfigure -f noninteractive keyboard-configuration # Désactive l'exécution automatique de piwiz (interface graphique de configuration) au 1er démarrage # Source : https://forums.raspberrypi.com/viewtopic.php?t=339914 if [ -f /etc/xdg/autostart/piwiz.desktop ]; then mv /etc/xdg/autostart/piwiz.desktop /etc/xdg/autostart/.piwiz.desktop.save fi systemctl disable userconfig.service > /dev/null 2>&1 if [ "$(getent passwd rpi-first-boot-wizard)" != "" ]; then userdel -r rpi-first-boot-wizard > /dev/null 2>&1 fi rm -f /etc/sudoers.d/010_wiz-nopasswd rm -f /etc/xdg/autostart/deluser.desktop # Désactivation du message d'avertissement concernant l'utilisation du mot de passe par défaut dans SSH sudo rm /etc/profile.d/sshpwd.sh sudo rm /etc/xdg/lxsession/LXDE-pi/sshpwd.sh # Suppression de ce script après son exécution rm -f /boot/firstrun.sh # Suppression des options du cmdline.txt permettant de lancer ce script au 1er démarrage sed -i 's| systemd.run.*||g' /boot/cmdline.txt exit 0
1er démarrage
-
Insérer la carte µSD dans la Raspberry Pi
-
Connecter un câble réseau à la Raspberry Pi
-
Si Utilisation désirée ≠ “Headless”, brancher un clavier, une souris et un écran à la Raspberry Pi
-
Démarrer la Raspberry Pi en l’alimentant via un bloc secteur 5V avec prise micro-usb pouvant délivrer 2500mA
Le 1er démarrage de la Raspberry Pi nécessite 3 re-démarrages de celle-ci ⇒ soyez patient car ceci dure plusieurs minutes
-
Se connecter à la Raspberry Pi :
-
soit localement depuis l’interface graphique ou en ligne de commande en utilisant les clavier/souris + écran branchés ur la Raspberry Pi
→ valable pour le mode Desktop -
soit par SSH (→ PuTTY ou commande
ssh
) en indiquant l’adresse IP de la Raspberry Pi ou simplement son nom d’hôte
→ valable pour les modes Desktop et HeadlessLes données d’identification configurées par défaut au lycée sont normalement les suivantes :
login : pi password : raspberry
-
Configuration de base
La configuration de base consiste généralement à :
-
configurer la disposition du clavier (→ clavier AZERTY)
-
renommer si besoin la Raspberry Pi (→ hostname)
-
changer éventuellement le mot de passe
-
activer les interfaces matérielles (I2C, SPI, Serial, OneWire) avec les capteurs ou dispositifs de commandes connectables à la Raspberry Pi
La procédure est la suivante :
-
Lancer l’utilitaire de configuration
-
Configurer au besoin la disposition des touches du clavier à partir du menu
-
Aller dans
pour changer au besoin le nom de la Raspberry Pi
-
Changer éventuellement le mot de passe en passant par le menu
.
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
). -
Activer les bus matériels sur les broches d’entrées/sorties par l’intermédiaire des menus :
-
,
-
,
-
.
Pour l’interface Serial Port, désactiver le serial login shell et activer le serial port hardware.
-
🞄 🞄 🞄