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électionnezChange 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 logicielsapt-cache search vim
cherche les paquets logiciels en rapport avecvim
apt-get install vim
installe le logicielvim
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 courantls -l
: liste des fichiers du répertoire courant (+ d’infos)cd <rep>
: change de répertoirecd ..
: remonte dans l’arborescence des répertoiresmkdir <rep>
: crée un répertoirermdir <rep>
: efface un répertoiremv <source> <dest>
: déplace une arborescencecp <source> <dest>
: déplace un fichierrm <fichier>
: efface un fichierchmod 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 fichiercat <fichier>
: Envoie le contenu d’un fichier sur la sortie standarddiff <fichier1> <fichier2>
: Affiche les différences entre 2 fichiersstrings <fichier>
: Extrait les chaînes de caractères imprimables d’un fichier binaireless <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 motifwc
: compte les mots/lignes/caractères sur l’entrée standarddpkg -l
: liste des logiciels installésapt-get update
: met à jour la liste des paquets disponiblesapt-get upgrade
: met à jour le systèmeapt-get install <paquet>
: installe le paquet logicielunzip <fichier.zip>
: Décompresse l’archiveip addr
: donne des infos sur les interfaces réseaux
Ce site permet d’expliquer une commande shell avant de la tester :
- https://explainshell.com/
- https://tldr.ostera.io/ : propose des exemples d’utilisation de commandes
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 passedemandez 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 decurl
).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épertoireexo01
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 fichierreadme
. Ce fichier contient une clé. Indiquez les commandes entrées et donnez la clé comme réponse.
Le répertoire
exo03
contient un fichierreadme
. 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 sousexo4
(é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 motPASS
. 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
etnouvelles_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 dansnouvelles_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