Avant de pouvoir utiliser un périphérique de stockage sur un ordinateur Linux, il est impératif de créer un système de fichiers. Découvrez comment utiliser `mkfs` et d’autres outils pour réaliser cette opération, quel que soit le type de système de fichiers souhaité. Nous allons vous guider pas à pas.
Création de systèmes de fichiers avec mkfs
La commande `mkfs` est l’outil qui permet de structurer un système de fichiers. On parle parfois de formatage sur d’autres systèmes. Quel que soit le terme utilisé, il s’agit du processus qui prépare une partition afin qu’elle puisse accueillir des données. Non seulement la partition doit pouvoir stocker des fichiers, mais elle doit aussi disposer d’un mécanisme pour gérer les noms, emplacements et métadonnées de ces fichiers (horodatage de création, de modification, taille, etc.). Une fois que `mkfs` a mis en place cette structure, vous pouvez y déposer vos fichiers.
La syntaxe de base est simple. Il suffit de spécifier à `mkfs` la partition cible et le type de système de fichiers désiré. En coulisse, le fonctionnement est légèrement différent. Sur la plupart des distributions Linux récentes, `mkfs` est un enveloppeur pour `mke2fs`. En réalité, `mkfs` appelle `mke2fs` en lui transmettant les options fournies. C’est `mke2fs` qui effectue le travail, mais il reste dans l’ombre.
La syntaxe de `mkfs` a évolué, et l’ancienne méthode est désormais déconseillée. Les deux fonctionnent, mais nous utiliserons la méthode moderne dans cet article.
Sélection du système de fichiers
Pour utiliser `mkfs` de manière actuelle, tapez « mkfs » suivi du nom du système de fichiers souhaité.
Pour afficher la liste des systèmes de fichiers que `mkfs` peut gérer, tapez « mkfs » puis appuyez deux fois sur la touche Tab. (Sans espace après « mkfs »).
La liste des systèmes de fichiers disponibles s’affiche dans le terminal. L’exemple ici provient d’Ubuntu 18.04 LTS, mais d’autres distributions peuvent proposer plus ou moins d’options. Nous allons passer en revue les principaux systèmes, après un rapide point sur la journalisation.
La journalisation est une fonction clé des systèmes de fichiers modernes. Les actions d’écriture en attente sont consignées dans un journal. Lorsque des fichiers sont écrits, le journal est mis à jour, et les actions en attente sont validées. Cela permet de réparer les fichiers corrompus ou incomplets suite à des incidents comme une coupure de courant. Les anciens systèmes ne prennent pas en charge la journalisation. Ils sont donc plus rapides en écriture, car ils n’ont pas à mettre à jour le journal. Cependant, ils sont plus vulnérables en cas d’écriture interrompue.
Ext2: Le premier système de fichiers utilisé sur Linux était MINIX. Il a été remplacé par Ext, le premier système conçu spécifiquement pour Linux. Ext2 est le successeur de Ext. Ext2 ne prend pas en charge la journalisation.
Ext3: C’est le successeur d’Ext2, avec l’ajout de la journalisation, qui protège contre la corruption des données due à des pannes ou coupures de courant.
Ext4: C’est le système de fichiers standard des distributions Linux actuelles. Il est robuste, éprouvé et fiable. Il dispose de mécanismes pour réduire la fragmentation et supporte des lecteurs, partitions et fichiers plus volumineux qu’Ext3.
BFS: Le système de fichiers de démarrage. Il est spécifiquement conçu pour gérer les fichiers de la partition de démarrage. Il est rare de le créer manuellement, car l’installateur Linux s’en charge généralement.
FAT: Le système FAT (File Allocation Table) a été développé pour les disquettes en 1977. Son seul intérêt aujourd’hui est la compatibilité avec les systèmes d’exploitation non Linux. Il ne prend pas en charge la journalisation.
NTFS: Le système de fichiers de nouvelle technologie de Microsoft, avec journalisation, a été introduit avec Windows NT. Il a succédé à FAT. On l’utilise principalement pour la compatibilité avec Windows.
MINIX: Créé par Andrew S. Tanenbaum comme support pédagogique, MINIX est un système d’exploitation « mini-Unix ». Il vise aujourd’hui à fournir un système autoréparable et tolérant aux pannes. Son système de fichiers est une version simplifiée du système de fichiers Unix. On peut éventuellement l’utiliser lors du développement croisé vers une plateforme MINIX, ou pour des raisons de compatibilité. Ses cas d’utilisation directe sur un ordinateur Linux sont limités, mais il est disponible.
VFAT: Virtual File Allocation Table a été introduit avec Windows 95 pour supprimer la limite de 8 caractères pour les noms de fichiers. Les noms peuvent atteindre 255 caractères. On l’utilise aussi pour la compatibilité avec d’autres systèmes.
CRAMFS: Le système de fichiers ROM compressé est un système en lecture seule, conçu pour les systèmes embarqués et les utilisations spéciales comme le démarrage des ordinateurs Linux. Il est courant d’avoir un petit système transitoire chargé en premier pour amorcer le système d’exploitation.
MSDOS: Le système de fichiers du système d’exploitation Microsoft Disk (1981). C’est un système élémentaire, sans même de notion de répertoire à sa première version. Il a une place importante dans l’histoire de l’informatique, mais son intérêt pratique est limité aujourd’hui.
Expérimenter en toute sécurité avec les systèmes de fichiers
La création d’un système de fichiers efface toutes les données présentes sur la partition cible. L’idéal pour expérimenter est d’utiliser un disque dur ou un ordinateur de rechange. Cependant, beaucoup de personnes n’ont pas ce type de matériel à disposition.
Une alternative est de créer un fichier image et de créer un système de fichiers à l’intérieur. Après montage, il peut être utilisé comme une partition normale. Cela permet d’explorer et d’expérimenter sans risque. Nous allons utiliser la commande `dd` pour créer notre fichier image.
Le fichier image est créé en prenant des données sources et en les plaçant dans une image. L’option `if` (fichier d’entrée) permet de spécifier à `dd` la source de données, ici `/dev/zero`, qui représente un flot continu de zéros.
L’option `of` (fichier de sortie) permet de donner un nom au fichier image. Nous allons le nommer « howtogeek.img ».
La taille du fichier est définie par la taille et le nombre de blocs. L’option `bs` (taille de bloc) fixe une taille de bloc de 1 Mo, et l’option `count` en demande 250, pour un fichier de 250 Mo. Adaptez le nombre de blocs à vos besoins et à l’espace disponible sur votre ordinateur.
dd if=/dev/zero of=~/howtogeek.img bs=1M count=250
Le fichier est créé, et `dd` confirme la création de 250 blocs.
On vérifie sa taille avec `ls`:
ls -hl
La taille de 250 Mo est bien confirmée.
Création du système de fichiers
Choisissons le système de fichiers Ext2, la première version d’Ext que `mkfs` peut générer. C’est un système sans journalisation, donc ne stockez rien d’important sans sauvegarde ailleurs. On utilise `mkfs.ext2` et on spécifie notre fichier image comme cible.
mkfs.ext2 ~/howtogeek.img
Le système de fichiers est créé et des informations le concernant s’affichent.
Comme on peut le constater, `mke2fs` est bien présent dans les coulisses.
Nous avons maintenant un conteneur (le fichier image) qui remplace un disque dur, et un système de fichiers à l’intérieur. Il faut maintenant monter ce système pour pouvoir l’utiliser.
Comme il s’agit d’une configuration temporaire, nous créons un point de montage temporaire dans `/mnt`, appelé « geek ». Nous le supprimerons plus tard.
sudo mkdir /mnt/geek
On peut maintenant monter notre fichier image.
sudo mount ~/howtogeek.img /mnt/geek
Il faut modifier les droits d’accès du point de montage pour pouvoir y accéder en lecture/écriture.
sudo chown dave:users /mnt/geek/
Nous devrions maintenant pouvoir utiliser notre nouveau système de fichiers. Allons-y et copions quelques fichiers.
cd /mnt/geek
cp ~/Documents/Code/*.? .
Cela copie tous les fichiers avec une extension d’un seul caractère depuis le répertoire `~/Documents/Code` vers notre nouveau système. Vérifions la copie.
ls
Les fichiers sont bien présents. On peut donc dire que notre système de fichiers a été créé, monté et utilisé. Mais revérifions une dernière fois. Depuis notre répertoire personnel, on démonte le système de fichiers. Attention, il n’y a qu’un seul « n » dans `umount`.
sudo umount /mnt/geek
Si on retourne dans `/mnt/geek`, il ne devrait plus y avoir de fichiers, car ils sont dans notre fichier image, qui vient d’être démonté.
cd /mnt/geek
ls
Aller plus loin
Maintenant que vous maîtrisez le processus, il devient facile d’expérimenter d’autres systèmes. Utilisons cette fois le système de fichiers MINIX. Depuis notre répertoire personnel, on peut créer un nouveau système de fichiers dans notre fichier image.
Attention ! S’il y a des fichiers importants dans le système de fichiers de l’image, montez-la et récupérez ces données avant de créer un nouveau système de fichiers.
mkfs.minix ~/howtogeek.image
Sans avertissement, le nouveau système est créé par dessus l’ancien. On monte notre fichier image avec la même commande qu’avant:
sudo mount ~/howtogeek.img /mnt/geek
Allons dans le nouveau système à `/mnt/geek` et créons un fichier.
touch geek.txt
ls -ahl geek.txt
Et voilà, en un clin d’œil, nous avons créé un nouveau système de fichiers, l’avons monté et nous pouvons l’utiliser.
Supprimer le point de montage
Lorsque l’expérimentation est terminée, nous pouvons supprimer le point de montage « geek » avec `rmdir`:
cd /mnt
sudo rmdir geek
Jouer avec le feu sans se brûler
Avec Linux, comme souvent, on apprend en pratiquant. Cependant, certaines commandes sont potentiellement destructrices. Comment s’entraîner sans mettre en danger son système ou ses données ?
Vous disposez maintenant d’une méthode simple pour créer et tester des systèmes de fichiers avec `mkfs`, en toute sécurité.