Découverte de la Raspberry Pi

Découverte de la Raspberry Pi #

L’objectif de ce TP est d’installer et configurer une Raspberry Pi, et de découvrir le système Linux.

Il y a des instructions de rangement à la toute fin du sujet. Si vous ne finissez pas le sujet, vous devez toutefois suivre les instructions de rangement avant de partir.

Installation du système #

Création de la carte SD #

Téléchargez l’image zippée ici :

ou utilisez celle (si vous êtes dans les locaux de l’école) dans L:\RPI

Quelle est, en octets, la taille du fichier zippé ?

Voici la somme SHA256 du fichier zippé :

4522df4a29f9aac4b0166fbfee9f599dab55a997c855702bfe35329c13334668 : Rpi OS Lite

Vous devez vérifier la somme SHA256 du fichier que vous avez téléchargé et vous assurer que c’est la même que celle donnée ci-dessus.

Voici comment, sous Windows, calculer la somme SHA256 d’un fichier :

# Avec Powershell
Get-FileHash .\fichier -Algorithm SHA256  

# Avec l'invite de commande
certutil -hashfile fichier SHA256

Sous Linux, faites simplement :

sha256sum fichier

Fournissez des captures d’écran indiquant comment vous avez vérifié la somme SHA256.

À quoi sert de faire cette vérification de la somme SHA256?

Nous allons maintenant copier l’image sur une carte SD.

Pourquoi ne peut-on pas simplement copier le fichier img, après l’avoir dézippé, sur la carte, en faisant un glisser déposé avec le gestionnaire de fichiers ?

Pour copier l’image, vous pouvez utiliser différentes logiciels :

Des copies de ces logiciels sont placées dans L:\RPI

Il n’y a pas besoin de dézipper le fichier (il fera près de 2 Go si vous le dézippez), car l’outil qui permet de le copier sur la carte SD le dézippera au vol.

Copiez l’image du système (fichier .img.zip) avec le logiciel adapté sur une carte SD (ça peut être assez long). Si vous n’êtes pas sûr de la manip, demandez. Fournissez une copie d’écran obtenue lors de la copie du fichier sur la carte.

Boot et configuration du système #

Introduisez la carte dans la raspberry, branchez un clavier USB, un écran (HDMI) et le câble ethernet. Branchez l’alimentation une fois que tout le reste est branché (la raspberry boote dès que l’alim est branchée).

Une fois le système démarré, loguez vous (login : pi, password : raspberry). Attention, la raspberry est configuré avec un clavier qwerty par défaut. Expliquez comment vous vous loguez.

Vous êtes maintenant devant une invite de commande (le shell s’appelle bash).

La création de la carte SD ayant fonctionné, vous n’avez plus besoin du fichier image qui tient une place inutile sur votre compte Windows : supprimez-le

Lancez la commande raspi-config. Vous pouvez naviguer dans les menus. Nous allons réaliser plusieurs opérations de configuration.

Dans le menu Localisation, sélectionnez Change locale. Générez le fichier de locales pour le français de métropole et l’encodage UTF8. Quel fichier de locales sélectionnez-vous ? Mettez ce choix de locale par défaut. Fournissez une photo de l’écran de configuration (celui sur lequel vous choisissez la locale par défaut).

Dans Timezone, sélectionnez Paris. Fournissez une photo de l’écran de configuration.

Dans Keyboard Layout : Sélectionnez un clavier génériques 105 touches, puis Français, et laissez toutes les options par défaut.

Dans Interfacing options, Activez le serveur SSH.

La raspberry pi est maintenant configurée. Rebootez (commande : sudo reboot ou Ctrl+Alt+Suppr)

Gestion des logiciels #

Les éditeurs présents par défaut sur la distribution ne sont pas très conviviaux. Nous proposons que vous installiez l’éditeur nommé micro, en mode texte aussi, mais plus facile d’accès.

Installation avec apt (ne fonctionne pas pour micro, qui n’est pas dans les dépots) #

Il n'est pas nécessaire d'effectuer cette partie. Lisez toutefois les instructions, et faites ce qui concerne le réglage du proxy, vous en aurez besoin dans la suite.

Les commandes suivantes vous serviront pour terminer l’installation :

  • apt-get update met à jour la base de données des logiciels
  • apt-cache search vim cherche les paquets logiciels en rapport avec vim
  • apt-get install vim installe le logiciel vim

Installation d’un logiciel qui n’est pas dans les dépôts #

L’éditeur micro est fourni sous la forme d’un binaire.

Quelle est la différence entre un logiciel fourni sous forme binaire, et un autre fourni sous forme de fichier source ?

Vous trouverez les différents binaires de micro sur github : micro releases.

Il y a plusieurs versions disponibles. À l’heure où j’écris ces lignes, la dernière est la 1.4.2. Certaines versions sont des versions de de développement (nighly build). D’autres sont stables.

Quelle est la dernière version stable ?

Une fois la dernière version stable identifiée, il existe un binaire par plate-forme. Pour quelle raison ? Quel binaire allez-vous télécharger ? Donnez le nom complet du fichier.

Après avoir réglé le proxy (voir plus haut), téléchargez le fichier que vous avez identifié comme étant la bonne version pour la bonne plate-forme :

curl -L https://github.com...tar.gz -O

Puis décompressez l’archive que vous venez de télécharger :

tar xzf nom_de_l_archive.tar.gz

À l’aide de la commande mv, déplacez le binaire obtenu dans /usr/bin. Pour obtenir les droits administrateurs, la commande entrée doit être précédée de sudo.

Vérifiez que si vous lancez la commande micro, l’éditeur se lance.

Si vous entrez la commande bash : micro --version, un message s’affiche. Donnez-le en réponse à cette question.

Découverte de Bash #

Avant toute chose, activez les messages :

Entrez la commande : mesg y

À défaut d’interface graphique, Bash est le programme qui vous permet de dialoguer avec le système (c’est un shell). Tous les systèmes Unix (dont linux) ont un shell, et c’est très souvent bash.

Lorsque vous lancez une commande, vous pouvez, si elle bloque, la couper avec Ctrl+c. Chaque fois que c’est possible, utilisez la complétion automatique en appuyant sur la touche Tab. Utilisez l’historique des commandes (flèche haut, flèche bas).

Voici une liste non exhaustive de commandes qui vous seront utiles :

  • ls : liste des fichiers du répertoire courant
  • ls -l : liste des fichiers du répertoire courant (+ d’infos)
  • cd <rep> : change de répertoire
  • cd .. : remonte dans l’arborescence des répertoires
  • mkdir <rep> : crée un répertoire
  • rmdir <rep> : efface un répertoire
  • mv <source> <dest> : déplace une arborescence
  • cp <source> <dest> : déplace un fichier
  • rm <fichier> : efface un fichier
  • chmod u+x <file> : rend le fichier exécutable (chmod permet de rendre les fichiers accessibles en lecture ou écriture aussi)
  • file <fichier> : donne des informations sur le contenu du fichier
  • cat <fichier> : Envoie le contenu d’un fichier sur la sortie standard
  • diff <fichier1> <fichier2> : Affiche les différences entre 2 fichiers
  • strings <fichier> : Extrait les chaînes de caractères imprimables d’un fichier binaire
  • less <fichier> : Permet de consulter le contenu d’un fichier (on peut naviguer avec les flèches)
  • touch <fichier> : crée un fichier (vide)
  • grep <motif> : sélectionne les lignes de l’entrée standard contenant le motif
  • wc : compte les mots/lignes/caractères sur l’entrée standard
  • dpkg -l : liste des logiciels installés
  • apt-get update : met à jour la liste des paquets disponibles
  • apt-get upgrade : met à jour le système
  • apt-get install <paquet> : installe le paquet logiciel
  • unzip <fichier.zip> : Décompresse l’archive
  • ip addr : donne des infos sur les interfaces réseaux

Ce site permet d’expliquer une commande shell avant de la tester :

Vous avez aussi à disposition une fiche de cours : Shell Unix

Certaines commandes nécessitent d’avoir des droits administrateur. Dans ce cas, vous devrez précéder la commande de sudo. Par exemple : sudo apt-get update.

Unix est un système orienté fichiers. Tout est prévu pour faire des opérations sur des fichiers

Chaque programme dispose d’une entrée standard, d’une sortie standard et d’une sortie d’erreur. Les opérateurs de redirection comme > ou le pipe | permettent de rediriger entrée et sortie standard depuis/vers un fichier, ou de connecter la sortie d’une commande à l’entrée d’une autre.

Les pages de manuel sont installées : man unzip vous donnera toutes les indications dont vous avez besoin sur la commande unzip. Vous pouvez sortir d’une page de manuel avec la touche q.

Vous disposez aussi de 2 éditeurs de texte en ligne de commande : vi et nano installés par défaut. Normalement, vous avez aussi installé l’éditeur micro, plus facile à utiliser (pour sortir de vi, c’est Esc:q!).

Créez l’arborescence suivante dans votre Home :

exo01
|_ repertoire01 
|  |_ fichierA
|  |_ fichierB
|
|_ repertoire02
   |_ fichierC
   |_ repertoire03
   |  |_ fichierD
   |  |_ fichierE
   |_ repertoire04

Donnez un exemple de chaque commande qui vous permet de créer cette arborescence.

Lorsque ce sera fait, placez-vous à la racine de votre Home (cd ~) et entrez la commande suivante :

find exo01 -type d ; find exo01 -type f

Donnez le résultat de l’exécution de cette commande (une photo convient).

Vérifiez qu’un câble ethernet est bien branché sur la raspberry. Normalement, votre raspberry est connue du serveur DHCP (le serveur qui attribue les adresse IP aux machines) et le réseau devrait être activé dès le branchement du câble ethernet.

Exécutez la commande ip addr. Fournissez (photo) le résultat de la commande. Quelle est votre adresse IP ? Quelle est votre adresse MAC ? (Si vous ne trouvez pas, appelez l’encadrant… peut être que le réseau n’est pas activé pour votre raspberry).

Une RPi est branchée dans la salle est disponible à l’adresse 192.168.81.131. Vous pouvez vous y connecter en SSH, avec le logiciel Putty (depuis un PC Windows) en utilisant le login mee et le mot de passe demandez le mot de passe en TP.

Une fois connecté, vous verrez un fichier. Ce fichier contient une formule magique. Faites une copie d’écran de votre connexion et relevez la formule. Vous pouvez maintenant refermer la connexion et continuer sur votre raspberry.

Une archive contenant les fichiers d’exercices est en téléchargement.

Récupérer l’archive avec la commande :

curl https://deptinfo-ensip.univ-poitiers.fr/FILES/archive_exercices_rpi.zip -O

À quoi sert l’option -O (consultez la page de manuel de curl).

Décompressez maintenant l’archive à la racine de votre répertoire (commande unzip). Un mot de passe vous est demandé. Il sera communiqué durant le TP.

Un fichier extraction_exercices.sh vient d’apparaître dans le répertoire courant. Exécutez-le en faisant ./extraction_exercices.sh (mettez bien le ./). Donnez l’intégralité des commandes que vous entrez pour réaliser ces opérations (téléchargement, décompression…)

Placez-vous à la racine de votre répertoire, faites ls. Vous devez voir le répertoire exo01 que vous avez créé tout à l’heure, ainsi que plusieurs autres répertoires : exo02, exo03… Si ce n’est pas le cas, appelez l’encadrant.

Dans les questions qui suivent, à la mode *CTF*, vous aurez souvent une clé à donner, pour prouver que vous avez fait la question. Si vous n’êtes pas sûr de la procédure. N’hésitez pas à demander à l’encadrant. Dans tous les cas, vous devrez aussi indiquer comment vous avez réussi à obtenir la clé.

Le répertoire exo02 contient un fichier readme. Ce fichier contient une clé. Indiquez les commandes entrées et donnez la clé comme réponse.

Le répertoire exo03 contient un fichier readme. Ce fichier contient une clé, ainsi que de nombreuses lignes blanches. Indiquez les commandes entrées et donnez la clé comme réponse. Proposez 2 manières différentes d’obtenir la clé.

Le répertoire exo04 contient des fichiers et des dossiers, qui contiennent eux-mêmes des fichiers… Finalement combien de fichiers sont placés sous exo4 (éventuellement plusieurs niveaux dessous) ? Parmi tous ces fichiers, certains contiennent la lettre ‘A’ (majuscule) dans leur nom (dans le nom du fichier, pas dans le nom d’un répertoire qui contient ce fichier). Combien exactement ? Indiquez les commandes entrées.

Le répertoire exo05 contient de nombreux fichiers. Un seul contient, entre autres, le mot PASS. Ce mot est suivi d’une clé. Donnez-la comme réponse et indiquez comment vous avez fait.

Le répertoire exo06 contient un fichier caché Infos sur wikipedia qui contient la clé.

Le répertoire exo07 contient un dossier, qui contient lui même un fichier contenant la clé. Indiquez 2 manières différentes pour obtenir cette clé.

Le répertoire exo08 contient un fichier nommé : cd 8-) . Rendez ce fichier exécutable (car c’est un programme), et exécutez-le pour obtenir la clé, sans le renommer.

Le répertoire exo09 contient un fichier source en C qui affiche la clé. Vous devez le compiler et exécuter le programme pour l’obtenir.

Le répertoire exo10 contient un fichier nommé data.txt. Dans ce fichier, de nombreuses lignes sont identiques. La clé est la seule ligne qui n’apparaît qu’une seule fois

Le répertoire exo11 contient un fichier nommé data.bin qui contient des données binaires. Vous pouvez le constater en essayant de l’ouvrir avec un éditeur de texte. Que se passe-t-il ? La clé est quelque part dans ce fichier. Elle est un peu plus longue que d’habitude (longueur 16).

Le répertoire exo12 contient 2 fichiers : anciennes_cles et nouvelles_cles Entre ces 2 fichiers, seule une ligne a été modifiée. La clé que vous devrez retrouver et celle qui a été modifiée dans nouvelles_cles.

Lorsque vous quitterez la salle, tout devra être parfaitement en ordre :

  • raspberry protégée par un carton dans la boîte et sans la carte SD enfichée
  • câble d’alimentation, attaché, dans la boîte
  • lecteur de carte SD et carte SD (non enfichée dans le lecteur) dans la boîte
  • boîte refermée, sans que le couvercle ne force
  • clavier USB correctement rebranché au poste fixe
  • Ethernet correctement rebranché au poste fixe
  • Câble vidéo correctement rebranché au poste fixe
  • Câbles d’alimentation correctement rebranchés
  • Poste fixe démarré, avec la mire de login, le clavier et la souris fonctionnels
  • Et le tout désinfecté à la mode 2020