Formater une clé USB en UDF

Comment formater une clé USB qui va accepter de gros fichiers et être utilisables sur tous les OS majeurs ? En utilisant l’UDF. L’UDF, alias Universal Disk Format, destiné à la base aux disques optiques, est en effet utilisable sur les clés USB et autres cartes mémoire.

Pourquoi l’UDF et pas le NTFS, l’exFAT ou même FAT32 ? Pour la compatibilité dans certains cas. NTFS n’est disponible qu’en lecture sous OS X et la compatibilité Linux est moyenne, exFAT nécessite un système « récent » (Windows Vista, Mac OS X 10.6) et FAT32 n’aime pas les gros fichiers.

L’UDF permet de travailler sur de gros fichiers (16 exaoctets, on a le temps de voir venir) et est supporté au moins en lecture par la majorité des systèmes d’exploitation. Linux (depuis le noyau 2.6), Mac OS X (depuis au moins 10.4) et Windows (depuis Windows XP) peuvent lire de l’UDF en version 2.01 (au moins). Pour l’écriture, Mac OS X 10.5 (au moins), Windows Vista (et plus) et Linux (depuis le noyau 2.6) peuvent aussi écrire sur une clé USB formatée en UDF.

Par contre, le support réel est moyen : une clé USB formatée depuis Mac OS X fonctionne uniquement en lecture sous Windows 7. La même formatée depuis Windows 7 ne fonctionne qu’en lecture sous Mac OS X. Et quand on formate depuis Linux… ça fonctionne en écriture sous Windows 7 et Mac OS X.

Formater sous Mac OS X

Il faut passer en ligne de commande et identifier la clé USB.

diskutil list

Vérifier la taille de blocs (/dev/disk{x} est le numéro de la clé USB).

diskutil info /dev/disk{x} | grep "Block Size"

On démonte la clé USB et on efface le tout.

diskutil unmount /dev/disk{x}s{x}
diskutil secureErase 0 /dev/disk{x}

On formate en UDF, avec la bonne valeur de taille de bloc (typiquement 512 octets).

sudo newfs_udf -b {block size} /dev/disk{x}

Formater sous Windows 7

En ligne de commande aussi, il faut connaître la lettre de la clé USB.

format x: /fs:UDF

Formater sous Linux

Testé sur un Raspberry Pi, il faut parfois installer les outils UDF.

sudo apt-get install udftools

On identifie la clé USB (ici /sda, donc) et on formate. On suppose que la clé utilise des blocs de 512 octets (j’ai vérifié avant sous Mac OS X dans mon cas).

ls -l /dev/disk/by-id/usb*
sudo mkudffs --media-type=hd --blocksize=512 /dev/sda