Réseau - Web - GNU/Linux

2010 11 août

Formater une clé USB sous GNU/Linux

Rédigé par Marc GUILLAUME | Aucun commentaire

Solution en ligne de commandes

On utilise mkfs qui se trouve sous Debian et ses dérivés (xBuntu et autres Knoppix) dans le paquet dosfstools qui contient les outils destinés à l'utilisation des systèmes de fichier DOS.

Pour une clé USB on utilise généralement un formatage VFAT le plus universellement compatible (le plus souvent FAT 32). C'est un système de fichier qui date du DOS, qui peut se monter sous tous les Unix, dos, Windows, MacOS etc. Donc si ce n'est pas déjà fait :

# aptitude install dosfstools

Pour formater une clé il faut déjà la trouver dans le système avec la commande fdisk et son option l en tant que super utilisateur root (ou avec sudo à la mode Ubuntu).

Voici le résultat de la commande sur mon système sur lequel j'ai monté une clé EMTEC et que je veux récupérer après un formatage malencontreux sous un Mac OS ancien.

# fdisk -l

Disk /dev/hda: 6448 MB, 6448619520 bytes
255 heads, 63 sectors/track, 784 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0004f489

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         747     6000246   83  Linux
/dev/hda2             748         784      297202+   5  Extended
/dev/hda5             748         784      297171   82  Linux swap / Solaris

Disk /dev/hdb: 20.0 GB, 20020396032 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xde760ca4

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        2434    19551073+  83  Linux

Disk /dev/sdf: 1010 MB, 1010827264 bytes
32 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 1952 * 512 = 999424 bytes
Disk identifier: 0x00000000

Disk /dev/sdf doesn't contain a valid partition table

On voit que la clé est sur /dev/sdf qui indique une capacité de 1010 MB et pas de table de partition valide. On va donc formater /dev/sdf.

ÉVIDEMMENT IL FAUT RAPPELLER QUE CETTE OPÉRATION S'EFFECTUE EN TANT QUE SUPER UTILISATEUR, DONC SI VOUS VOUS TROMPEZ DE DEVICE VOUS ALLEZ FORMATER UN DE VOS DISQUES, DONC ATTENTION À NE PAS CONFONDRE LES DISQUES !

Pour pouvoir formater la clé il ne faut pas qu'elle soit montée. En général les systèmes linux montent automatiquement les périphériques amovibles dans un répertoire /media.

 
# ls -l  /media/
total 24
lrwxrwxrwx 1 root root     6 déc 11  2008 cdrom -> cdrom0
drwxr-xr-x 2 root root  4096 déc 11  2008 cdrom0
drwxr-xr-x 8 marc root 16384 jan  1  1970 disk
lrwxrwxrwx 1 root root     7 déc 11  2008 floppy -> floppy0
drwxr-xr-x 2 root root  4096 déc 11  2008 floppy0

Ici on voit que la clé est montée sur /media/disk. Si l'on est en environnement fenêtré (KDE, GNOME, Xfce etc.), on ferme toute les fenêtres éventuellement ouvertes sur ce répertoire, puis on démonte la clé :

# umount /media/disk/

Formatage en vfat

On peut alors lancer le formatage. Pour cela on utilise mkfs dans son sous-ensemble mkfs.vfat avec quelques options :

  • l'option -n pour indiquer un nom de volume (qui s'affichera sous la clé quand on la branche au système)
  • l'option -F pour indiquer le type de table d'allocation : 12 16 ou 32

Par exemple ici je veux une clé formatée en FAT 32 et une clé baptisée du nom de la marque EMTEC :

# mkfs.vfat -F 32 -n EMTEC /dev/sdf

Il se peut que vous voyez ce message :

 mkfs.vfat: Device partition expected, not making filesystem on entire device '/dev/sdf' (use -I to override) 

Il faut alors utiliser l'option -I comme indiqué dans le message, pour forcer le formatage (voir man mkfs.vfat)

# mkfs.vfat -F 32 -n EMTEC /dev/sdf -I
mkfs.vfat 3.0.1 (23 Nov 2008)

L'opération a réussi et l'on obtient une clé usb formatée en FAT32 fonctionnant aussi bien sur Linux, MSWindows, MacOSX et tout système sachant lire et écrire les partitions FAT32.

Formatage en ext4 (rajout 2019)

Si vous voulez formater votre clé pour n'être utilisée que sur des machines Linux, vous pouvez utiliser un système de fichier plus spécifique. Nous prendrons ici l'exemple du système de fichier ext4.

Attention : cette clé, non seulement ne pourra être montée que sur des systèmes linux, mais comme ext4 respecte les notions de droits unix et les acls, vos fichiers ne seront accessibles qu'aux utilisateurs ayant les mêmes UID et GID que ceux figurant sur la clé. Si vous avez un user toto qui a l'UID 1000 sur votre machine, il va enregistrer ses données sur la clé avec cet UID. Si vous montez cette clé sur une autre machine Linux, les fichiers ne seront lisibles que par l'utilisateur qui aura l'UID 1000 sur cette machine. Le nom toto n'est qu'une facilité pour l'utilisateur humain, le système lui ne tient compte que des UID et GID. Une telle clé est donc loin d'être universelle, et vous ne pourrez la passer utilement que sur des machines où vous aurez un utilisateur de même UID GID. On pourrait donner des droits de lecture universels, mais dans ce cas autant prendre de la FAT 32 !

Depuis la première rédaction de cet article un nouvel utilitaire est apparu permettant d'afficher les périphériques montés : blkid. Voici un exemple du type d'affichage de blkid qui affiche les UUID des disques et qui a un affichage plus compact :

# blkid
/dev/sdb: LABEL="GOODRAM" UUID="5DF8-64D0" TYPE="vfat"
/dev/sda1: UUID="FE78-735D" TYPE="vfat" PARTUUID="ed4f6891-4ea8-43c5-84a3-17d78e7db519"
/dev/sda2: UUID="b4ea6027-223a-4e18-a552-5eed2ef5ef7d" TYPE="jfs" PARTUUID="7ca8fca1-13ff-40e4-be29-5f1454c39c9c"
/dev/sda3: UUID="365fdf7d-3d62-4f6d-bf22-522c8a594145" TYPE="swap" PARTUUID="79a7dd79-35b0-4e4e-911b-74516ca44db9"
/dev/sda4: UUID="70d2f8c0-0ebf-4eb7-8eb1-36d704a3e10c" TYPE="jfs" PARTUUID="211337d0-2a66-4b85-a41d-f924a13cc1bf"

Ici nous voyons que nous avons une clé USB de nom GOODRAM montée sur /dev/sdb. C'est elle qu'il va falloir formater. Comme nous voulons installer un système de fichier linux nous allons créer une partition sur cette clé avec fdisk au format linux puis ensuite nous y installerons un système de fichier, comme on le ferait pour un disque dur. Voici la procédure suivie (la machine utilisée ici est sous Debian GNU/Linux 9 Stretch).

Avec p on affiche les partitions de la clé. Avec n on crée une partition, on choisit une partition primaire et on prend toutes les options par défaut, ce qui implique d'utiliser tout l'espace disponible. On pourrait faire un autre partitionnement si l'on voulait, et ainsi avoir différents systèmes de fichiers ou faire un partition chiffrée, mais nous resterons sur une configuration simple. On réaffiche pour vérifier et on enregistre avec w.

# fdisk /dev/sdb
Commande (m pour l'aide) : p
Disque /dev/sdb : 7,3 GiB, 7801405440 octets, 15237120 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00000000

Commande (m pour l'aide) : n
Type de partition
   p   primaire (0 primaire, 0 étendue, 4 libre)
   e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (1-4, 1 par défaut) : 
Premier secteur (2048-15237119, 2048 par défaut) : 
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-15237119, 15237119 par défaut) : 

Une nouvelle partition 1 de type « Linux » et de taille 7,3 GiB a été créée.

Commande (m pour l'aide) : p
Disque /dev/sdb : 7,3 GiB, 7801405440 octets, 15237120 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00000000

Périphérique Amorçage Début      Fin Secteurs Taille Id Type
/dev/sdb1              2048 15237119 15235072   7,3G 83 Linux

Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.

Il ne reste plus qu'à installer le sytème de fichier. La commande à lancer est alors :

mkfs.ext4 -LEMTEC /dev/sdb1

Ici c'est l'option -L qui permet de donner à la clé le nom qui s'affichera lors de son montage. Il existe quantité d'autres options, la plupart ayant peu d'intérêt sur une clé USB, mais vous pouvez les voir dans le manuel : man mkfs.ext4. On notera que l'on applique le système de fichier non sur le volume /dev/sdb mais bien sur la partition /dev/sdb1.

Écrire un commentaire

Quelle est la troisième lettre du mot jqrc ?

Fil RSS des commentaires de cet article

À propos

Yakati.com - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.031s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.com
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml