Question Utiliser UDF sur un lecteur flash USB


Après avoir échoué à copier un fichier plus grand que 4G dans mon 8G clé USB, Je l'ai formaté en 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 vers quelqu'un qui n'utilise pas Linux.

Je pense à le formater comme UDF au contraire, ce qui, je l’espère, permettrait sa lecture (et même son écriture) sur les trois systèmes d’exploitation les plus populaires (Windows, MacOS et Linux), sans avoir à installer de pilotes supplémentaires. Cependant, d'après ce que j'ai déjà 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 concernent des supports optiques et non 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?
  • Quelle est la compatibilité avec les versions les plus courantes de ces trois systèmes d'exploitation?
  • Utiliser UDF est-il réellement la meilleure idée? Existe-t-il un autre système de fichiers qui aurait une meilleure compatibilité, sans aucune restriction problématique telle que la limite de taille des fichiers FAT32 4G, et sans devoir installer des pilotes spéciaux sur chaque ordinateur qui le touche?

74
2017-09-11 23:47


origine


Question connexe: serverfault.com/questions/55089/ - CesarB


Réponses:


D'abord, j'ai complètement réinitialisé le lecteur avant de créer le système de fichiers UDF avec:

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

Cela permet d'éviter les superblocs ou autres métadonnées qui pourraient 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 et table de partition pourrait vraiment confondre les choses). Vous pouvez également utiliser le count=1 Allumez la commande dd afin de mettre à zéro plus rapidement 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:

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

mkudffs une commande sera disponible sur les distributions Linux basées sur Debian (telles que Ubuntu) après l’installation de udftools paquet:

sudo apt-get install udftools

La taille de bloc par défaut pour mkudffs est 2048, ce qui est faux pour un lecteur flash USB (qui utilise des secteurs de 512 octets). Étant donné que la taille de bloc est utilisée pour trouver les métadonnées du système de fichiers, l'utilisation d'une taille de bloc incorrecte peut empêcher sa reconnaissance en tant que système de fichiers UDF (car l'ancre ne sera pas là où le pilote de système de fichiers s'attend). Notez que le mkudffs la page de manuel est fausse; 512 est une valeur valide pour la taille du bloc (et le code l'accepte explicitement).

J'ai également utilisé le disque entier 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 d'Ubuntu 9.10): fonctionne.
  • Linux avec un noyau plus ancien: a besoin du bs=512 option à mount, car il a utilisé de manière incorrecte 2048 au lieu de la taille du secteur du périphérique (corrigé dans commettre 1197e4d).
  • Windows Vista: fonctionne
  • Un tout nouveau Mac: fonctionne.
  • Windows XP: peut lire correctement, mais donne "accès refusé" en essayant d'écrire; semble également penser que le disque est plein.

Bien que je n'ai pas encore essayé de créer un fichier plus grand que 4G, je ne vois aucune raison pour que cela ne fonctionne pas.

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


55
2017-09-28 16:12



Comment avez-vous formaté / partitionné le lecteur? J'ai mis à zéro mon lecteur USB de 32 Go, en utilisant dd if=/dev/zero of=/dev/sdb bs=1M, ce qui le laisse sans aucune table de partition. - romeovs
@romeovs: je n'ai pas partitionné le lecteur. C'est tout l'intérêt de le mettre à zéro, de supprimer la table de partition et les anciens restes du système de fichiers et de placer le système de fichiers UDF dans tout le lecteur non partitionné. La création d'une table de partition risquerait de créer de la confusion. - CesarB
N'a pas fonctionné pour moi avec un disque dur externe USB 2.0 SeaGate FreeAgent Desktop de 500 Go (je ne sais pas si cela est nécessaire car ce sujet concerne les lecteurs Flash). Windows 7 a toujours montré le lecteur comme "non alloué" dans l'utilitaire de gestion de disque. J'ai essayé plusieurs combinaisons d'options différentes. - Adam Monsen
Merci beaucoup pour le suivi. Il est rare, voire inexistant, de voir une question intelligente à laquelle le PO répondra de manière détaillée après quelques jours / semaines de test. Bon travail, merci! - Luc
Voir aussi le script de Pieter Wuille qui automatise le processus de création UDF et crée une table de partition pour une meilleure compatibilité. Je l'ai posté comme une solution alternative. - dolmen


CesarB a fait un excellent travail pour arriver au cœur du problème. Une chose qui ne peut pas être suffisamment soulignée est l'importance d'utiliser la taille de bloc appropriée lors du formatage de la fonction UDF.

Inspiré par le post 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)
    • Révision UDF 2.01 utilisée pour une compatibilité maximale
    • Les premiers 4096 secteurs sont mis à zéro pour effacer tout MBR existant (nécessaire pour une détection UDF correcte)
  • 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 doté d'un environnement Bash

En raison du dernier point, ce script que j'ai écrit ne peut pas être utilisé sous Windows. Cependant, le script s'exécutera sous OS X et Linux. Après cela, Windows devrait pouvoir détecter comme 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 remplir 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é)
  • fournir le maximum de fonctionnalités (et les limites minimales) que le demandeur recherche

7
2017-08-29 14:25



J'ai jeté un coup d'oeil à votre utilitaire format-udf sur Github et j'ai une question à ce sujet. Le script détecte la taille de bloc physique du lecteur. Etes-vous sûr que le paramètre Linux appelle "taille de secteur physique (bloc)" et non "taille de secteur logique" est le bon à utiliser? Physique et logique peut signifier beaucoup de choses. Quelle hdparm appels "Taille de secteur logique" est l'unité d'adressage utilisée par le protocole SATA, tandis que "Taille de secteur physique" est une chose interne au lecteur. Pour moi, il est plus logique que les "blocs physiques" de la spécification UDF signifient réellement les "blocs logiques" de Linux. - Johan Myréen
vous êtes sur place, @ JohanMyréen. Je vous invite à participer à la discussion sur ce sujet même sur GitHub. github.com/JElchison/format-udf/issues/13  Il y a un changement imminent dans le sens de votre question, dans l'attente de tests supplémentaires sur Windows 7 et 10. - j0nam1el
format-udf est vraiment sympa. Je viens juste de le tester sur Linux et de lire / écrire le lecteur formaté sur OS X et Windows 10. - mivk
Même si la possibilité de "fonctionner sur n'importe quel système d'exploitation avec bash" présente un certain intérêt, il serait préférable de mettre en œuvre la même approche mkudffs directement; Je veux dire en ajoutant de nouvelles --best-block-size option à mkudffs. - MarcH


Je me souviens de l'avoir fait, le problème que j'ai trouvé est que la version Linux que j'avais montée était en lecture seule, car le pilote n'avait pas été construit pour r / w. Cela a fonctionné dans Windows, et je pense que mac.

Oui, une bonne solution est difficile à trouver. Pendant un moment, j'ai eu un disque externe avec une partition fat32 qui avait des pilotes pour win et mac, une partition mac et une grande partition ext3. Cela a fonctionné, mais cela signifiait installer des pilotes. Neat astuce était qu'il était également bootable sur un mac (fw & usb), vous devez laisser de la place et prendre des notes, puis vous pouvez ajouter des partitions via la ligne de commande et une table de partition Mac.

Le monde a besoin d'un système de fichiers gratuit, utilisable par tout. ZFS serait un bon choix. :-)


3
2017-09-12 02:19



ZFS serait bien d'avoir, mais embrouillerait beaucoup de monde. C'est aussi un peu exagéré pour les médias externes, vous ne pensez pas? Plus adapté aux serveurs de fichiers géants, d'après ce que je peux dire. - Mike Cooper
Eh bien, ZFS vérifie la sommation et la récupération des erreurs, ce qui est très logique pour les trucs de consommation à écumer. :-D Nous stockons tous suffisamment ces jours-ci pour que la pourriture des bits finisse par manger quelque chose (voir l'étude de Sun sur le problème qui a conduit à ZFS, notez également le taux d'erreur non détecté pour l'encodage HD). Nous avons besoin d'un vrai fs que tout peut utiliser, et fatX ne l'est pas. Pas encore, vraiment. - Ronald Pottol
ZFS ne fonctionne pas sous Linux - ignis


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


2
2018-06-02 15:29



Et comme le serveur avec les scripts de Pieter Wuille semble baisser, il existe un script plus récent réalisé par JElchisson: (Format-UDF) [github.com/JElchison/format-udf], avec des explications ici: (Partage d’un disque dur / flash entre Windows, OS X et Linux avec UDF) [j0nam1el.wordpress.com/2015/02/20/... - DrYak


Pour obtenir une compatibilité maximale, vous devez utiliser mkudff udftools projet 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 le 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 le disque partitionné.

  3. Tous les systèmes (sauf les 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 de secteur logique du disque.

Tool mkudffs depuis la version 2.0 gère les 3 restrictions. Lors du formatage de disques durs non amovibles, il crée une table "faux" MBR qui commence au secteur 0 et couvre 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
2018-01-13 13:22





NTFS, avec NTFS-3G, vous pouvez y écrire en utilisant Linux et regarder http://macntfs-3g.blogspot.com/ pour votre Mac.


0
2017-09-12 01:46



Cela semble impliquer des pilotes supplémentaires pour Mac. - Mike Cooper
S'il ne veut pas utiliser FAT, il est bloqué et NTFS-3G fonctionne déjà sur Mac. - user10547
Un léger problème est que ce n'est pas mon Mac. Je préférerais ne pas avoir à installer un pilote sur les ordinateurs d'autres personnes. - CesarB


Certains pilotes pour Windows (et Mac) peuvent accéder aux partitions EXT3. Vous pouvez donc les formater en EXT3 et l'utiliser (avec les pilotes) partout. Une autre solution consisterait à utiliser un archiveur pour stocker le fichier volumineux dans deux ou plusieurs fichiers de 4 Go chacun. De cette façon, vous pouvez utiliser le système de fichiers FAT32 qui est universel. Sur l'ordinateur hôte, vous devez extraire l'archive pour l'utiliser, mais c'est un moyen de le faire sans pilotes. Utilisez un archiveur au format RAR car il fonctionne sur Windows, Linux, Mac, même si je pense qu'un format ZIP pourrait aussi bien fonctionner. Mais j'irais avec les pilotes. Une fois installé, vous pouvez faire n'importe quoi sans restrictions. Dans le PC, j'ai utilisé Ext2Fsd pour un accès complet à EXT2, EXT3 et EXT4 et Macdrive pour un accès complet au format MacOS. Des outils similaires existent également pour Linux et MacOS afin d'accéder complètement aux partitions NTFS, etc. Si vous n'avez besoin que d'un accès en lecture, vous n'avez pas besoin de pilotes, Linux et MacOS prennent en charge la lecture des partitions NTFS. Si tous ces ordinateurs sont sur le même réseau, les choses sont plus faciles! Faites en sorte que l'USB soit formaté et partagé sur le réseau. Les autres ordinateurs ne devraient pas avoir de problème pour y accéder!


-1
2018-02-23 23:58



-1 parce que la réponse ne mentionne même pas UDF! - dolmen