web-dev-qa-db-fra.com

Utiliser UDF sur un lecteur flash USB

Après avoir échoué à copier un fichier de taille supérieure à 4G sur mon lecteur flash USB 8G , je l’ai formaté au format ext3. Bien que cela fonctionne bien pour moi jusqu'à présent, cela posera des problèmes si je veux l'utiliser pour copier des fichiers sur quelqu'un qui n'utilise pas Linux.

Je pense le formater en tant que UDF , ce qui, je l’espère, lui permettrait d’être lu (et éventuellement écrit) sur les trois plus populaires. systèmes d’exploitation (Windows, MacOS et Linux), sans installer de pilotes supplémentaires . Cependant, d'après ce que j'ai trouvé sur le Web, il semble y avoir plusieurs petits pièges liés aux paramètres utilisés pour créer le système de fichiers, ce qui peut réduire la compatibilité (mais la plupart des pages que j'ai trouvées traitent de supports optiques, et non de clés USB). disques).

J'aimerais savoir:

  • Quel utilitaire dois-je utiliser pour créer le système de fichiers? (Jusqu'à présent, j'ai trouvé mkudffs et genisoimage, et mkudffs semble la meilleure option.)
  • Quels paramètres dois-je utiliser avec l'utilitaire choisi pour une compatibilité maximale?
  • Quel est le degré de compatibilité avec les versions les plus courantes de ces trois systèmes d’exploitation UDF?
  • Utiliser UDF est-il réellement la meilleure idée? Existe-t-il un autre système de fichiers offrant une meilleure compatibilité, sans restrictions problématiques, telles que la limite de taille de fichier FAT32 4G, et sans avoir à installer de pilotes spéciaux sur chaque ordinateur le touchant?
74
CesarB

Tout d’abord, j’ai complètement mis à zéro le lecteur avant de créer le système de fichiers UDF avec:

dd if=/dev/zero of=/dev/sdx bs=512

Cela évitera tout reste de superblocs ou d’autres métadonnées qui pourrait perturber la détection du type de système de fichiers du système d’exploitation (il faudrait au moins mettre à zéro le premier secteur pour effacer la table de partition; les premiers secteurs ne sont pas utilisés par UDF et un reste). table de partition pourrait vraiment confondre les choses). Vous pouvez également utiliser le commutateur count=1 sur la commande dd afin de mettre à zéro plus rapidement que les 512 premiers octets du lecteur (où se trouve généralement le MBR), bien que cela n'ait pas été testé.

Pour créer le système de fichiers, la commande que j'ai utilisée était la suivante:

mkudffs --media-type=hd --blocksize=512 /dev/sdx

La commande mkudffs sera disponible sur les distributions Linux basées sur Debian (telles que Ubuntu) après avoir installé un paquet udftools:

Sudo apt-get install udftools

La taille de bloc par défaut de mkudffs est 2048, ce qui est faux pour une clé USB (qui utilise des secteurs de 512 octets). Étant donné que la taille de bloc est utilisée pour rechercher les métadonnées du système de fichiers, l'utilisation d'une taille de bloc incorrecte peut empêcher son identification comme système de fichiers UDF (car l'ancre ne sera pas à l'emplacement attendu par le pilote du système de fichiers). Notez que la page de manuel mkudffs est incorrecte; 512 est une valeur valide pour la taille du bloc (et le code l'accepte explicitement).

J'ai également utilisé l'ensemble du disque au lieu d'une partition; cela devrait être plus compatible.

Le résultat de mes tests jusqu'à présent:

  • Linux avec le noyau le plus récent (2.6.31, à partir de Ubuntu 9.10): fonctionne.
  • Linux avec un noyau plus ancien: nécessite l'option bs=512 avec mount, car il a utilisé incorrectement 2048 à la place de la taille du secteur du périphérique (corrigée dans commettez 1197e4d ).
  • Windows Vista: fonctionne.
  • Un tout nouveau Mac: ça marche.
  • Windows XP: peut lire correctement, mais donne "accès refusé" lorsque vous essayez d'écrire; semble également penser que le disque est plein.

Bien que je n’aie pas essayé jusqu’à présent de créer un fichier plus volumineux que 4G, je ne vois aucune raison pour laquelle cela ne fonctionnerait pas.

Etant donné que cela fonctionnait parfaitement sur tous les systèmes d'exploitation récents (ne nécessitant que le montage manuel sous Linux, qui ne sera plus nécessaire dès la sortie d'Ubuntu 9.10 et Fedora 12), et fonctionnant en lecture seule sous Windows XP (ce qui était une surprise pour moi; je m'attendais à ce qu'il ne reconnaisse pas du tout le système de fichiers), utiliser UDF au lieu de FAT32 ou NTFS dans les grandes clés USB semble une bonne idée.

55
CesarB

CesarB a fait un excellent travail pour arriver au coeur du problème. Une chose que l’on ne saurait trop souligner, c’est combien il est important d’utiliser la taille de bloc appropriée lors du formatage UDF.

Inspiré par le message de CesarB (et mes autres recherches/tests), j'ai écrit un script pour automatiser le processus de formatage dans UDF - en utilisant la taille de secteur correctement détectée. Voir format-udf sur GitHub . Caractéristiques notables:

  • Formate un lecteur de bloc (disque dur ou lecteur Flash) au format Universal Disk Format (UDF)
    • UDF révision 2.01 utilisé pour une compatibilité maximale
    • Les 4096 premiers secteurs sont mis à zéro pour effacer tout MBR existant (nécessaire à la détection correcte des FDU)
  • Le système de fichiers résultant peut être lu/écrit sur plusieurs familles de systèmes d'exploitation (Windows, OS X et Linux)
  • Fonctionne sur tout système d'exploitation ayant un environnement Bash

A cause du dernier point, ce script que j'ai écrit ne peut pas être utilisé sous Windows. Cependant, le script fonctionnera sous OS X et Linux. Après cela, Windows devrait pouvoir détecter par magie le lecteur UDF nouvellement formaté.

Pour répondre directement aux questions posées, format-udf va:

  • choisir l'outil approprié pour le formatage en fonction du système d'exploitation et de l'environnement
  • détecter et renseigner automatiquement tous les paramètres nécessaires au formatage
  • maximiser la compatibilité du système d'exploitation (voir la page GitHub pour le tableau de compatibilité)
  • donne le maximum de fonctionnalités (et les limitations minimales) recherchées par le demandeur
7
j0nam1el

Je crois me souvenir que, après avoir fait cela, le problème que j’ai rencontré est que la version Linux que je l’avais montée en lecture seule, car le pilote n’avait pas été construite pour r/w. Cela a fonctionné dans les fenêtres, et je pense que mac.

Oui, il est difficile de trouver une bonne solution. Pendant un certain temps, j'ai eu un lecteur externe avec une partition fat32 qui contenait des pilotes pour win et mac, une partition mac et une grande partition ext3. Cela a fonctionné, mais cela impliquait l'installation de pilotes. Le truc était que c'était également amorçable sur un mac (fw & usb), vous devez laisser de l'espace et prendre des notes, puis vous pouvez ajouter des partitions via la ligne de commande et une table de partitions mac.

Le monde a besoin d’un système de fichiers gratuit et utilisable par tous. ZFS serait un bon choix. :-)

3
Ronald Pottol

Pieter Wuille a écrit un outil pour partitionner et formater un disque afin de créer une mise en page UDF compatible avec Windows (> = Vista, en lecture seule pour XP), MacOS X 10.5, Linux 2.6.30+:

Alternativement:

2
dolmen

Pour atteindre une compatibilité maximale, vous devez utiliser mkudffs à partir du projet udftools au moins dans la version 2.0. Aucun paramètre spécial n'est nécessaire, tout est détecté automatiquement.

Il y a 3 grandes restrictions:

  1. Les systèmes Microsoft Windows ne reconnaissent pas un disque dur non amovible s'il ne possède pas de table de partition MBR ou GPT.

  2. Les systèmes Apple Mac OS X ne reconnaissent pas le système de fichiers UDF sur un disque partitionné.

  3. Tous les systèmes (à l'exception des noyaux Linux récents) ne reconnaissent probablement pas le système de fichiers UDF si la taille du bloc UDF ne correspond pas à la taille du secteur logique du disque.

L'outil depuis la version 2.0 gère les 3 restrictions. Lors du formatage de disques durs non amovibles, il crée un "faux" tableau MBR qui commence au secteur 0 et s'étend sur tout le disque. Ainsi, le système de fichiers UDF peut être lu soit à partir de la première partition (nécessaire pour Microsoft Windows), soit à partir du disque entier (nécessaire pour Apple Mac OS X). Voir la page de manuel mkudffs 2.0 pour plus de détails.

1
Pali

NTFS, avec NTFS-3G, vous pouvez écrire sous Linux et consulter http://macntfs-3g.blogspot.com/ pour votre Mac.

0
user10547