Gérer des supports de stockage sous Raspbian


Les ordinateurs personnels et appareils électroniques (téléphones portables,...) utilisent généralement des supports de stockage fixes, de type disque SSD (Solid State Drive) et carte à puce eMMc (embedded multimedia card) ainsi que des supports de stockage amovibles de type carte SD (Secure Digital card) et clé USB. Ces supports, composés de cartes à puce, présentent l'avantage d'être à la fois robustes (absence de partie mécanique), économiques et de petite taille. En terme de performance, Un disque SSD est plus rapide qu’une carte à puce eMMC (en lecture et en écriture) qui est elle-même plus rapide qu'une carte SD.

Ces supports de stockage sont, en sortie d'usine, de simples espaces disque physiques constitués de morceaux d'espace, appelés secteurs, placés les uns à la suite des autres. Les secteurs ont généralement une taille de 512 octets mais il peuvent posséder une taille différente (256, 512, 1024, 2048 ou 4096 octets)

Pour pouvoir utiliser un support de stockage avec un ordinateur, il faut préalablement :
1) Créer une table de partition sur ce support de stockage;
2) Créer une (ou plusieurs) partition sur ce support de stockage (partitionnement du support de stockage);
3) Mettre en place un système de fichier dans la partition créée ;
4) Monter la partition.

Ces opérations peuvent avoir été déjà réalisées par le constructeur lorsqu'on achète un ordinateur ou un disque. Dans ce cas, on a rien à faire si ce n'est d'utiliser (SSD, eMMc) ou de brancher (SD card, clé USB) le support de stockage qui est automatiquement monté et opérationnel.

00

Dans d'autres cas ces opérations n'ont pas encore été effectuées ou ont été "effacées"; Dans ce cas, l'espace de stockage apparaît comme n'étant pas alloué, il n'est pas reconnu automatiquement par le Raspberry Pi et il faut donc réaliser soi-même tout ou partie de ces opérations. Pour cela on peut utiliser un logiciel en mode graphique ou opérer en ligne de commande, avec le Terminal de commandes. Il est naturellement plus facile de procéder avec un logiciel en mode graphique car le mode ligne de commande nécessite la maîtrise parfaite de l'ensemble des commandes utilisées ainsi que des paramètres associés.

Il existe divers logiciels permettant de réaliser les opérations pré-citées. On utilise ici le logiciel Gparted (GNOME Partition Editor) qui permet de créer, réorganiser et supprimer des partitions sur des supports de stockage.
Cet outil présente l'avantage,d'être disponible dans le dépôt officiel du Paspberry Pi; il peut donc être installé facilement et sans risque sur un Paspberry Pi, depuis le menu Pramboise/Préférences/Add Remove Software ou depuis le terminal à l'aide des commandes classiques sudo apt-get update et sudo apt-get install gparted

01

Remarque On rencontre souvent le terme formater" un support de stockage. Ce terme pratique mérite d'être précisé. Le dictionnaire Larousse en donne la définition suivante : "Organiser les secteurs d'un support de stockage de façon à y autoriser les opérations de lecture et d'écriture selon un format donné".
D'un point de vue global, cette définition correspond à l'ensemble des opérations 1,2 et 3) évoquées ci-dessus. Cependant il arrive fréquemment qu'on utilise ce terme en parlant seulement de l'opération 3 évoquée ci-dessus.

02

1) Créer une table de partition

La table de partition est une sorte de table des matières écrite sur le support de stockage. Elle contient le nom et l'adresse de chacune des partitions qui se trouvent sur le disque.

Si le disque contient une seule partition la table des partitions contient une seule ligne, du type :
- partition 1, nom de la partion 1, adresse de la partition1 sur le support

Si le disque contient deux partitions, la table des partitions contient deux lignes du type :
- partition 1, nom de la partion 1, adresse de la partition1 sur le support
- partition 2, nom de la partion 2, adresse de la partition2 sur le support et ainsi de suite...

La table de parttions est créée automatiquement par Gparted lorsqu'on crée une partition sur un support de stockage qui ne possède pas encore de partition (espace non alloué).

L'image suivante montre un exemple de table de partition (obtenue avec la commande cfdisk) d'une clef USB de 1Go. En lisant la table de partition, on voit que cette clef contient une seule partition, dotée d'un système de fichier fat32.

03

L'image suivante montre un exemple de table de partition (obtenue avec la commande cfdisk) d'une clef USB de 1Go. En lisant la table de partition, on voit que cette clef contient deux partitions, l'une dotée d'un système de fichier fat32 et l'autre dotée d'un système de fichier ext4

04

2) Créer une partition

Une partition est une partie du disque bien définie, destinée à accueillir des fichiers de données (textes, images, vidéos, sons...) ou de système d'exploitation (Windows, linux...).
Une partition :
- est constituée d'un nombre n de secteurs (elle commence au secteur n0 et finie au secteur n1 avec n=n1-n0);
- possède une taille (1Go par exemple);
- possède un identificateur de partiton (/dev/sda1 par exemple), appelé également périphérique de démarrage ou boot device;
- doit être dotée d'un système de fichier (fat32, nfts ou ext4 par exemple) pour pouvoir fonctionner;
- possède un point de montage (/media/pi/MACLEF par exemple) accessible depuis l'explorateur de fichiers;
- possède une étiquette (MACLEF par exemple) donnée par défaut ou par l'utilisateur au moment de la création de la partition.

Le logiciel Gparted détecte automatiquement les supports de stockage installés dans l'ordinateur ou branchés sur un port USB et permet :
- de créer une partition sur les supports de stockage qui n'en n'ont pas encore;
- d'ajouter une partition sur les supports de stockage qui en ont déjà une (dans ce cas, la place disponible sera répartie entre les partitions) ;
- de supprimer une partition existente.

Lorsqu'il effectue ces opérations, Gparted met automatiquement à jour la table des partitions.

3) Mettre en place un système de fichier dans la partition créée

Pour pouvoir fonctionner, une partition doit être dotée d'un (et d'un seul) système de fichiers. Le système de fichier définit la façon dont sont écrites et organisées les données dans cette partition.

Il existe de nombreux systèmes de fichiers. Les systèmes de fichiers suivants sont souvent utilisés :

- Système de fichier nfts
Avantage : l'organisation adoptée pour les fichiers fait qu'ils sont moins fragmentés qu'avec le système Fat32
Inconvénient : sous Linux, le support du système de fichier NFTS est limité

- Système de fichier ext4 (anciennement ext2 puis ext3)
Avantage : l'organisation adoptée pour les fichiers fait qu'ils se fragmentent très peu
Inconvénient : ce système de fichier n'est pas reconnu, de façon native, par windows

- Système de fichier fat32
Avantage : compatible avec tous les systèmpes
Inconvénient : les fichiers sont beaucoup fragmentés au fur et à mesure qu'on les efface puis les enregistre sur le support de stockage, ce qui nécessite de les défragmenter assez souvent

4) Monter la partition

Monter et démonter une partition signifie la rendre active et visible ou inactive et invisible, par rapport à l'explorateur de fichiers. Lorsqu'il s'agit d'une clef USB, la partition est montée automatiquement par Raspbian lorsqu'on branche la clef dans l'un des ports USB du Raspberry Pi. Avant de débrancher la clef, il faut l'éjecter. Pour cela il suffit de cliquer le bouton en forme de triangle gris situé en haut et à droite de l'écran (Ejecter).

On peut également démonter une partition depuis Gparted. Il est également possible de monter et démonter des partitions de façon dynamique, depuis le terminal, en utilisant les commandes mount et umount accompagnées des paramètres appropriés.

Exemples

Dans les exemples suivants on utilise une clef USB de 1Go avec un Raspberry PI4 sous système d'exploitation Linux Raspbian (version août 2020) On peut naturellement effectuer les manipulations décrite ci-après avec une clef ou un support de stockage d'une autre contenance.

1) Exemple 1 : Reformater une clef USB en fat32 (7 étapes)

1) Préparer la clef USB
- Si la clef est débranchée, la rebrancher pour qu'elle soit prise en compte;
- Si la clef est branchée mais a été ejectée, rebooter le Raspberry Pi pour qu'elle soit prise en compte;
- Si la clef est en cours d'utilisation par un programme, fermer ce programme afin que la clef soit entièrement disponible.
2) Lancer Gparted;
3) Sélectionner la clef USB puis "Partition/Démonter";
4) Sélectionner la clef USB puis "Partition/Supprimer" puis "Edition/ Appliquer toutes les opérations";
5) Sélectionner la clef USB puis "Partition/ Nouvelle" (avec système de fichier fat32 et étiquette MACLEF puis "Edition/ Appliquer toutes les opérations";
6) Quitter Gparted;
7) Rebooter le Raspberry Pi.

La clef USB est montée automatiquement au point de montagepi/media/MACLEF qui est directement accessible, en lecture et en écriture, depuis l'explorateur de fichier.

La commande sudo cfdisk, exécutée depuis n'importe quel endroit, permet d'afficher l'ensemble des informations relatives à la clef USB. La commande sudo fdisk -l, exécutée depuis n'importe quel endroit, permet d'afficher une partie des informations relatives à la clef USB. La commande sudo ls -l, exécutée depuis le répertoire /pi/media, permet d'afficher les droits sur le répertoire MACLEF

05

Remarque : Certaines commandes effectuées à l'aide du Terminal de commande nécessitent d'effectuer ces commandes en mode administrateur. Pour cela, on précède la commande du mot clef sudo (super user do). Pour exécuter des commandes librement, on peut aussi se déclarer directement en tant qu'administrateur (root) en tapant la commande su puis en entrant sont mot de passe administrateur. Pour pouvoir se déclarer comme root, il faut naturellement avoir déjà mis en place un mot de passe administrateur (commande sudo passwd root)

2) Exemple 2 : Reformater une clef USB en ext4 (9 étapes)

1) Préparer la clef USB
- Si la clef est débranchée, la rebrancher pour qu'elle soit prise en compte;
- Si la clef est branchée mais a été ejectée, rebooter le Raspberry Pi pour qu'elle soit prise en compte;
- Si la clef est en cours d'utilisation par un programme, fermer ce programme afin que la clef soit entièrement disponible.
2) Lancer Gparted;
3) Sélectionner la clef USB puis "Partition/Démonter";
4) Sélectionner la clef USB puis "Partition/Supprimer" puis "Edition/ Appliquer toutes les opérations";
5) Sélectionner la clef USB puis "Partition/ Nouvelle" (avec système de fichier ext4 et étiquette MACLEF) puis "Edition/ Appliquer toutes les opérations";
6) Quitter Gparted;
7) Rebooter le Raspberry Pi.

La clef USB est montée automatiquement au point de montage /pi/media/MACLEF mais curieusement et contrairement au cas précédent (fat32), le point de montage /pi/media/MACLEF est ici seulement accessible en lecture seule (pas en écriture), avec l'explorateur de fichier. De plus un répertoire inutile lost+found a été créé par Gparted et apparaît dans le répertoire /pi/media/MACLEF.

A ce stade, toute tentative de copie d'un fichier dans le répertoire /pi/media/MACLEF échoue car gparted a protégé le point de montage /pi/media/MACLEF en écriture comme le montre la commande sudo ls -l exécutée depuis le répertoire /pi/pmedia

06a

Pour corriger cela il suffit de compléter les 7 étapes précédentes par les 2 étapes suivantes :
8) sudo chmod 777 /media/pi/MACLEF, exécutée depuis le répertoire /, pour rendre le point de montage /media/pi/MACLEF accessible en lecture et en écriture;
9) sudo rm -R lost+found, exécutée depuis le répertoire /media/pi/MACLEF, pour supprimer le répertoire inutile "lost+found".

06

La commande sudo cfdisk, exécutée depuis n'importe quel endroit, permet d'afficher l'ensemble des informations relatives à la clef USB. La commande sudo fdisk -l, exécutée depuis n'importe quel endroit, permet d'afficher une partie des informations relatives à la clef USB. La commande sudo ls -l, exécutée depuis le répertoire /pi/media, permet d'afficher les droits sur le répertoire MACLEF

3) Exemple 3 : Ajouter une partition ext4 sur une clef USB fat32 (7 étapes)

1) Préparer la clef USB
- Si la clef est débranchée, la rebrancher pour qu'elle soit prise en compte;
- Si la clef est branchée mais a été ejectée, rebooter le Raspberry Pi pour qu'elle soit prise en compte;
- Si la clef est en cours d'utilisation par un programme, fermer ce programme afin que la clef soit entièrement disponible.
2) Lancer Gparted;
3) Sélectionner la clef USB puis "Partition/Démonter";
4) Sélectionner la clef USB puis "Partition/Redimensionner Déplacer";
5) Sélectionner la nouvelle partition (qui apparait à ce stade comme non alloué) puis "Partition/ Nouvelle" (avec système de fichier ext4;
et étiquette MACLEF2 par exemple) puis "Edition/ Appliquer toutes les opérations";
6) Quitter Gparted;
7) Rebooter le Raspberry Pi.

07

La commande sudo cfdisk, exécutée depuis n'importe quel endroit, permet d'afficher l'ensemble des informations relatives à la clef USB. La commande sudo fdisk -l, exécutée depuis n'importe quel endroit, permet d'afficher une partie des informations relatives à la clef USB. La commande sudo ls -l, exécutée depuis le répertoire /pi/media, permet d'afficher les droits sur le répertoire MACLEF.

4) Exemple 4 : Monter et démonter une clef USB de façon dynamique

Si la clef a été éjectée (triangle gris située en haut à droite de l'écran) et qu'on souhaite qu'elle soit à nouveau prise en compte, il faut obligatoirement soit rebooter le Raspberry Pi ou bien débrancher la clef puis la rebrancher.

En revanche, si la clef n'a pas été éjectée mais seulement démontée (à l'aide de la commande umount) on peut la remonter de façon dynamique.

Pour monter une clef USB MACLEF de façon dynamique, au point de montage /media/pi/MONUSB, on commence par créer le répertoire /media/pi/MONUSB puis on monte la clef MACLEF sur ce répertoire :
1) sudo mkdir /media/pi/MONUSB
2) sudo mount /dev/sda1 /media/pi/MONUSB

Pour démonter une clef USB MACLEF de façon dynamique on commence par démonter la clef USB puis on supprime le répertoire /media/pi/MONUSB sur lequel elle était montée:
1) sudo umount /dev/sda1
2) sudo rm -R /media/pi/MONUSB