Tâche 1 – Mise en route d’un Raspberry Pi « Headless » avec Raspberry Pi OS.
Tâche 2 – Configurer une adresse IP statique avec Raspberry Pi OS.
Tâche 3 – Diminuer la dimension d’une partition sur une carte SD.
Tâche 4 – Forcer le mode HDMI comme sortie
Tâche 5 – Configurer un service avec Systemd.
Tâche 6 – Formater une carte SD avec Linux.
Tâche 7 – Ajuster manuellement l’heure sur Linux.
Tâche 8 – Ajuster l’heure automatiquement au Cégep avec timesyncd.
Tâche 1 – Mise en route d’un Raspberry Pi « Headless » avec Raspberry Pi OS.
La mise en route d’un RPi est grandement simplifiée si ce dernier peut se connecter automatiquement sur un réseau sans fil afin qu’on puisse y accéder à l’aide de SSH. Afin de le permettre, on doit donner les paramètres du réseau sans fil au RPi (SSID et mot de passe) et on doit activer SSH qui est désactivé par défaut pour des raisons de sécurité. Ces configurations ne sont pas très compliquées, voici le détail des opérations à effectuer:
1- Configuration du réseau sans fil:
Installer la version de Raspbian désirée sur une carte SD.
Créer un fichier nommé « wpa_supplicant.conf » avec le contenu suivant:
country=CA
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid= »myssid »
psk= »mypassword »
key_mgmt=WPA-PSK
}
Après avoir remplacé les valeurs de « myssid » et « mypassword » par les valeurs associées au réseau que vous désirez rejoindre (garder les guillemets doubles et insérer vos identifiants entre ceux-ci), copier ce fichier dans le répertoire racine de votre carte SD (dans la partition /boot : dans le même répertoire que le fichier « config.txt »). Vous pouvez utiliser une station Windows ou Linux pour effectuer cette opération.
ATTENTION: Porter une attention particulière aux guillemets. Assurez-vous que les caractères représentent bien des guillemets. Si vous « copier/coller » le texte de cette page, ces caractères ne seront pas les bons et votre configuration échouera.
2- Activer le serveur « Secure Shell »
Créer un fichier vide nommé « SSH » dans le répertoire racine de votre carte SD (dans la partition /boot). Ce fichier indique à Rasbian de configurer l’accès SSH.
Une fois le RPi démarré, la connexion au réseau « myssid » se fera automatiquement et le serveur SSH sera en opération. Vous pourrez alors accéder à votre RPi par SSH. Afin de sécuriser votre RPi, changer le mot de passe de l’utilisateur Pi avec la commande passwd.
Tâche 2 – Configurer une adresse IP statique avec Raspberry Pi OS
Avec l’utilisation de dhcpcd, un démon DHCP client, la configuration des interfaces réseaux a été modifiée quelque peu. Afin de modifier la configuration d’une interface réseau afin de lui assigner une adresse IP statique, on doit suivre la procédure suivante:
1- Éditer le fichier /etc/dhcpcd.conf
Éditer le fichier /etc/dhcpcd.conf et ajouter les 4 lignes suivantes à la fin du fichier:
interface eth0
static ip_address=192.168.1.55/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
2- redémarrer le Raspberry Pi
Après avoir sauver vos modifications, redémarrer le RPi, il prendra sa nouvelle adresse IP statique.
Tâche 3 – Diminuer la dimension d’une partition sur une carte SD.
Lorsque l’on démarre le RPi avec une carte contenant une nouvelle version de Raspbian, le système d’exploitation agrandit automatiquement la partition afin d’utiliser tout l’espace disponible sur la carte SD. La version initiale de Raspbian n’occupe que quelques octets, mais Raspbian va agrandir la partition afin d’utiliser tout l’espace disponible sur la carte. Si par la suite, vous voulez faire une sauvegarde de votre carte, le fichier généré est de la dimension de la carte (8G, 16G, etc.), ce qui prend inutilement de l’espace disque, et du temps… Afin de réduire la partition, je vous propose la procédure suivante qui utilise l’outil GParted et la commande dd. Vous devez avoir accès à une version de Linux afin d’effectuer ces opérations. La machine virtuelle installée dans les laboratoires convient parfaitement pour accomplir cette tâche. On doit suivre la procédure suivante:
1- Installer GParted
Afin d’installer GParted, 2 commandes doivent être données dans un terminal.
– Mettre à jour la liste des paquets disponibles à votre distribution. Avec les distributions Debian et Ubuntu, on donne la commande :
sudo apt update
– Installer GParted avec la commande :
sudo apt install GParted
2- Redimensionner la partition
À partir de Linux, exécuter GParted et réduire la dimension de la partition Ext4 utilisée par Raspbian. Vous pouvez utiliser une autre distribution Linux (ordinateur avec Ubuntu, Clé USB ou machine virtuelle) afin de faire ces opérations sur votre carte SD Raspbian. Relier votre carte SD à l’ordinateur exécutant Linux à l’aide d’un adaptateur USB.
Dans GParted:
– sélectionner le disque et la partition à réduire. Assurez-vous de travailler sur le bon disque!!! Faites une sauvegarde des données AVANT de débuter cette opération;
– choisir le menu contextuel « Modifier/Réduire » et entrer la nouvelle dimension. ATTENTION: La dimension requise peut être supérieure à celle indiquée par GParted, utiliser la dimension maximale acceptable.
– choisir le menu « Edition/Appliquer les modifications » afin de procéder au changement;
3- Réduire la dimension du fichier image
– une fois la partition modifiée, lancer la commande suivante afin de copier l’image créée précédemment dans un nouveau fichier:
dd if=/dev/sdb of=sdb6.84Gi.img iflag=count_bytes count=7250000000
if=/dev/sdb : if signifie « Input File ». C’est l’image source que l’on veut modifier. Ce paramètre pointe vers la carte SD, généralement accessible via un adaptateur SD à USB.
of=sdb6.84Gi.img : of signifie « OutputFile ». C’est le nom de la nouvelle image à créer.
iflag=count_bytes : Indique que la valeur donnée à « count » représente le nombre d’octets à copier
count=7250000000 : Détermine le nombre d’octets à copier, le nombre d’octets devant être modifié selon les besoins.
ATTENTION: La commande dd (Data Destroyer) peut être très dangereuse. Une erreur dans les paramètres de cette commande peut détruire toutes les données données du disque sans avertissement.
Vous pouvez alors éjecter la carte SD et l’utiliser afin de créer les copies de la carte originale.
Tâche 4 – Forcer le mode vidéo HDMI.
Lorsque l’on démarre le RPi et que l’écran vidéo reste noir, il est possible que la configuration soit incorrecte. Cela peut arriver si on utilise un bloc d’alimentation d’une capacité insuffisante (on sait que le RPi3 nécessite une alimentation de 5 volts et un courant minimal de 2.5 ampères).
1- Éditer le fichier /boot/config.txt
Évidemment, si le RPi ne génère pas de vidéo sur le HDMI, on peut utiliser SSH afin de se relier et modifier ce fichier. À l’aide de nano en mode super utilisateur, trouver la définition des paramètres suivants et enlever le commentaire (le caractère #) au début de la ligne. Si les lignes sont absentes, il suffit de les ajouter à la fin du fichier.
hdmi_force_hotplug=1
hdmi_drive=2
Il est aussi possible de modifier ce fichier sur l’ordinateur du laboratoire en insérant la carte SD dans l’adaptateur approprié.
2- Redémarrer le Raspberry Pi
Le RPi devrait maintenant utiliser le port HDMI comme sortie vidéo.
Utiliser un bloc d’alimentation de 2.5 ampères ou plus.
Tâche 5 – Configurer un service avec Systemd.
Cette tâche permet de créer un service sur un hôte Linux. Le service démarre automatiquement lorsque l’hôte est mis sous tension et se termine à la fermeture de Linux.
1- Créer votre programme serveur (script)
Dans un premier temps, vous devez posséder un fichier script ou exécutable qui implémente votre service. Vous devez vous assurer de donner les droits d’exécution à votre script avec la commande « chmod +x nom_fichier »
2- Créer le fichier de configuration du service
Vous devez par la suite créer un fichier de définition de votre service. Ce fichier sera sauvegardé dans le répertoire /lib/systemd/system/nom_du_service.service où nom_du_service est le nom de votre fichier à exécuter
Dans les cas simples, le contenu suivant devrait généralement être suffisant:
[Unit]
Description=Nom_Service
After=network.target
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/bin/sh -c « /home/electro/scripts/serveur.py »
[Install]
WantedBy=multi-user.target
3- Activer l’exécution du service
Une fois votre fichier service définit, vous devez dire au système d’exploitation que vous désirez qu’il l’exécute. Vous pouvez fair ça avec les commandes suivantes :
sudo systemctl enable nom_du_service.service
sudo systemctl restart nom_du_service.service
Tâche 6 – Formatter une carte SD avec Linux.
Cette tâche permet de formater une carte SD lorsqu’elles ne peuvent pas être formatées avec SDFormatter.
1- Après avoir relié votre carte SD au système, démarrer un terminal et donner la commande « lsblk » afin de voir les périphériques disponibles. Vous devriez pouvoir identifier votre carte SD dans le répertoire /dev/ sous le nom sd* ou mmcblk*. Donner la commande ls -al /dev à plusieurs reprises en insérant et retirant la carte SD, cela vous aidera à l’identifier.
2- Dans le terminal, donner la commande « sudo parted /dev/mmcblk0 » en prenant soin de remplacer « mmcblk0 » par le nom de votre carte identifiée avec la commande « lsblk ». L’invite de commande devrait alors être (parted), ce qui indique que vous êtes dans le programme « parted » qui sert à partitionner les disques. Suivez minutieusement ces instructions afin de partitionner le bon disque.
3-Donner la commande « mklabel msdos » ce qui créer une nouvelle table de partition ET EFFACE COMLÈTEMENT LES DONNÉES PRÉSENTES SUR LE DISQUE.
4-Donner la commande « mkpart primary fat32 1MiB 100% », ce qui créer une nouvelle partition utilisant le disque en entier.
5- Afin de pouvoir utiliser cette carte comme un disque de démarrage, donner la commande « set 1 boot on »
6- Terminer l’exécution du programme « parted » avec la commande « quit ». L’invite de commande du terminal devrait retourner à celui de Bash (par exemple pi@raspberry:~ )
7- À partir du terminal, donner la commande « sudo mkfs.vfat /dev/sdb1 » afin de créer le système de fichiers.
Tâche 7 – Ajuster manuellement l’heure sur Linux.
Cette tâche permet de modifier l’heure sur Linux lorsque le serveur NTP n’est pas configuré.
1- Démarrer un terminal.
2- Dans le terminal, donner la commande sudo date – -set=’2004-02-29 16:21:42′. La date du système devrait alors être modifiée selon le contenu de la chaîne. ATTENTION: Si le service NTP est configuré sur le système, il ne sera pas possible de modifier la date de cette façon. Pour arrêter ou démarrer le service, avec les version récente de Linux utilisant « systemd », vous devez donner les commandes « sudo systemctl stop systemd-timesyncd.service » ou « sudo systemctl start systemd-timesyncd.service » respectivement.
Tâche 8 – Ajuster l’heure automatiquement au Cégep avec timesyncd.
(Modifiée, mars 2021 avec nouveau serveur NTP)1- Créer une copie de sauvegarde du fichier /etc/systemd/timesyncd.conf avec la ligne de commande suivante :
sudo cp /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.bak
2- Modifier la ligne suivante (avec nano) dans le fichier /etc/systemd/timesyncd.conf
#NTP= devient ==>> NTP=ntp.crl.int3-Vérifier que le protocole NTP fonctionne correctement à l’aide de la commande suivante :
sudo timedatectl Si tout se passe bien, vous devriez avoir les paramètres « Network time on »et « NTP synchronized » initialisés à « yes » et l’heure locale correcte (après quelques minutes dans l’interface graphique du Raspberry Pi).
Noter : Dans la majorité des fichiers de configuration de Linux, le # en début de ligne indique que la ligne est un commentaire. Elle ne sera pas prise en considération dans la configuration.