it-swarm.com.de

Verwenden von UDF auf einem USB-Flash-Laufwerk

Nachdem ich eine Datei, die größer als 4G ist, nicht auf meinen 8G USB-Stick kopiert habe, habe ich sie als ext3 formatiert. Während dies bisher für mich in Ordnung ist, wird es Probleme verursachen, wenn ich damit Dateien auf jemanden kopieren möchte, der Linux nicht verwendet.

Ich überlege, es stattdessen als UDF zu formatieren, was hoffentlich erlauben würde, es auf den drei beliebtesten zu lesen (und möglicherweise sogar zu schreiben) Betriebssysteme (Windows, MacOS und Linux) , ohne dass zusätzliche Treiber installiert werden müssen . Nach dem, was ich bereits im Web gefunden habe, scheint es jedoch mehrere kleine Fallstricke zu geben, die sich darauf beziehen, welche Parameter zum Erstellen des Dateisystems verwendet werden. Dies kann die Kompatibilität beeinträchtigen fährt).

Ich würde gerne wissen:

  • Welches Dienstprogramm soll ich zum Erstellen des Dateisystems verwenden? (Bisher habe ich mkudffs und genisoimage gefunden, und mkudffs scheint die beste Option zu sein.)
  • Welche Parameter sollte ich mit dem ausgewählten Dienstprogramm für maximale Kompatibilität verwenden?
  • Wie kompatibel ist UDF mit den gängigsten Versionen dieser drei Betriebssysteme?
  • Ist die Verwendung von UDF tatsächlich die beste Idee? Gibt es ein anderes Dateisystem, das ohne problematische Einschränkungen wie die Dateigrößenbeschränkung für FAT32 4G besser kompatibel wäre und auf jedem einzelnen Computer, der es berührt, keine speziellen Treiber installieren muss?
74
CesarB

Zuerst habe ich das Laufwerk vollständig auf Null gestellt, bevor ich das UDF-Dateisystem erstellt habe:

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

Dies soll verhindern, dass Superblocks oder andere Metadaten übrig bleiben, die die Erkennung des Dateisystemtyps des Betriebssystems verwirren könnten (es sollte mindestens ein Nullabgleich des ersten Sektors erforderlich sein, um die Partitionstabelle zu verwischen; die ersten Sektoren werden von UDF nicht verwendet) Partitionstabelle könnte die Dinge wirklich verwirren). Sie können auch den Schalter count=1 im Befehl dd verwenden, um nur die ersten 512 Byte des Laufwerks (in dem sich normalerweise der MBR befindet) schneller auf Null zu setzen, obwohl dies nicht getestet wurde.

Um das Dateisystem zu erstellen, habe ich folgenden Befehl verwendet:

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

Der Befehl mkudffs wird auf Debian-basierten Linux-Distributionen (wie Ubuntu) verfügbar, nachdem ein udftools-Paket installiert wurde:

Sudo apt-get install udftools

Die Standardblockgröße für mkudffs ist 2048, was für ein USB-Flash-Laufwerk (das 512-Byte-Sektoren verwendet) falsch ist. Da die Blockgröße zum Ermitteln der Metadaten des Dateisystems verwendet wird, kann die Verwendung einer falschen Blockgröße dazu führen, dass das Dateisystem nicht als UDF-Dateisystem erkannt wird (da der Anker nicht dort liegt, wo der Dateisystemtreiber ihn erwartet). Beachten Sie, dass die Manpage mkudffs falsch ist. 512 ist ein gültiger Wert für die Blockgröße (und der Code akzeptiert ihn ausdrücklich).

Ich habe auch das gesamte Laufwerk anstelle einer Partition verwendet. dies sollte kompatibler sein.

Das Ergebnis meiner bisherigen Tests:

  • Linux mit dem neuesten Kernel (2.6.31, ab Ubuntu 9.10): funktioniert.
  • Linux mit einem älteren Kernel: Benötigt die Option bs=512 für mount, da 2048 anstelle der Größe des Gerätesektors falsch verwendet wurde (behoben in commit 1197e4d ).
  • Windows Vista: funktioniert.
  • Ein brandneuer Mac: funktioniert.
  • Windows XP: Kann gut lesen, gibt aber "Zugriff verweigert", wenn versucht wird zu schreiben. scheint auch zu denken, dass die Festplatte voll ist.

Obwohl ich bisher nicht versucht habe, eine Datei größer als 4G darin zu erstellen, sehe ich keinen Grund, warum es nicht funktionieren würde.

Da es auf allen aktuellen Betriebssystemen einwandfrei funktionierte (nur manuell unter Linux zu mounten, was nicht mehr benötigt wird, sobald Ubuntu 9.10 und Fedora 12 herauskommen) und unter Windows schreibgeschützt funktionierte XP (das war eine Überraschung für mich; ich hatte erwartet, dass es das Dateisystem überhaupt nicht erkennt). Die Verwendung von UDF anstelle von FAT32 oder NTFS in großen USB-Flash-Laufwerken scheint eine gute Idee zu sein.

55
CesarB

CesarB hat großartige Arbeit geleistet, um den Kern des Problems zu lösen. Eine Sache, die nicht genug unterstrichen werden kann, ist, wie wichtig es ist, die richtige Blockgröße beim Formatieren von UDF zu verwenden.

Inspiriert von CesarBs Beitrag (und meinen anderen Nachforschungen/Tests) habe ich ein Skript geschrieben, um den Formatierungsprozess in UDF zu automatisieren - unter Verwendung der richtig erkannten Sektorgröße. Siehe format-udf auf GitHub . Bemerkenswerte Eigenschaften:

  • Formatiert ein Blocklaufwerk (Festplatte oder Flash-Laufwerk) im Universal Disk Format (UDF)
    • UDF Revision 2.01 für maximale Kompatibilität verwendet
    • Die ersten 4096 Sektoren werden auf Null gesetzt, um alle vorhandenen MBRs zu löschen (für eine ordnungsgemäße UDF-Erkennung erforderlich).
  • Das resultierende Dateisystem kann über mehrere Betriebssystemfamilien hinweg gelesen/geschrieben werden (Windows, OS X und Linux).
  • Läuft auf jedem Betriebssystem mit einer Bash-Umgebung

Wegen des letzten Punktes kann dieses Skript, das ich geschrieben habe, nicht unter Windows verwendet werden. Das Skript wird jedoch unter OS X und Linux ausgeführt. Danach sollte Windows in der Lage sein, das neu formatierte UDF-Laufwerk auf magische Weise zu erkennen.

Um die gestellten Fragen direkt zu beantworten, wird format-udf:

  • wählen Sie das geeignete Tool für die Formatierung basierend auf Betriebssystem und Umgebung
  • alle für die Formatierung erforderlichen Parameter werden automatisch erkannt und ausgefüllt
  • maximierung der Betriebssystemkompatibilität (Kompatibilitätstabelle siehe GitHub-Seite)
  • geben Sie den maximalen Funktionsumfang (und die minimalen Einschränkungen) an, nach denen der Fragesteller sucht
7
j0nam1el

Ich erinnere mich, dass ich das getan habe. Das Problem war, dass die Linux-Version, die ich gemountet hatte, nur lesbar war, da der Treiber nicht für R/W erstellt worden war. Es hat in Windows funktioniert, und ich denke, Mac.

Ja, eine gute Lösung ist schwer zu finden. Für eine Weile hatte ich ein externes Laufwerk mit einer Fat32-Partition, die Treiber für Win und Mac, eine Mac-Partition und eine große Ext3-Partition hatte. Es hat funktioniert, aber es bedeutete, Treiber zu installieren. Ein guter Trick war, dass es auch auf einem Mac bootfähig war (fw & usb). Sie müssen Platz lassen und einige Notizen machen, dann können Sie Partitionen über die Befehlszeile und eine Mac-Partitionstabelle hinzufügen.

Die Welt braucht ein freies, von allem nutzbares Dateisystem. ZFS wäre eine gute Wahl. :-)

3
Ronald Pottol

Pieter Wuille schrieb ein Tool zum Partitionieren und Formatieren einer Festplatte, um ein UDF Layout zu erstellen, das mit Windows (> = Vista, schreibgeschützt für XP) und MacOS X kompatibel ist 10.5, Linux 2.6.30+:

Alternative:

2
dolmen

Um maximale Kompatibilität zu erreichen, sollten Sie mindestens in Version 2.0 mkudffs aus udftools project verwenden. Es sind keine speziellen Parameter erforderlich, alles wird automatisch erkannt.

Es gibt 3 große Einschränkungen:

  1. Microsoft Windows-Systeme erkennen Festplatten nicht, wenn sie keine MBR- oder GPT-Partitionstabelle haben.

  2. Apple Mac OS X-Systeme erkennen das UDF-Dateisystem auf partitionierten Festplatten nicht.

  3. Wahrscheinlich erkennen alle Systeme (mit Ausnahme der neuesten Linux-Kernel) das UDF-Dateisystem nicht, wenn die UDF-Blockgröße nicht der logischen Sektorgröße der Festplatte entspricht.

Tool mkudffs seit Version 2.0 behandeln alle 3 Einschränkungen. Beim Formatieren von Festplatten wird eine "gefälschte" MBR-Tabelle erstellt, die bei Sektor 0 beginnt und sich über die gesamte Festplatte erstreckt. Somit kann das UDF-Dateisystem entweder von der ersten Partition (für Microsoft Windows erforderlich) oder von der gesamten Festplatte (für Apple Mac OS X erforderlich) gelesen werden. Weitere Informationen finden Sie in der Manpage zu mkudffs 2.0.

1
Pali

NTFS, mit NTFS-3G können Sie unter Linux darauf schreiben und einen Blick auf http://macntfs-3g.blogspot.com/ werfen Mac.

0
user10547