Bash -Skript, um ein Blockgerät (Festplatte oder Flash -Laufwerk) in UDF zu formatieren. Die Ausgabe ist ein Laufwerk, das zum Lesen/Schreiben in mehreren Betriebssystemfamilien verwendet werden kann: Windows, MacOS und Linux. Dieses Skript sollte in der Lage sein, in MacOS oder in Linux auszuführen.
Für den erweiterten Benutzer kann Format-UDF auch eine einzelne vorhandene Partition formatieren, ohne die Partitionstabelle zu ändern. Achten Sie darauf, dass die Verwendung dieser Methode die neu formatierte UDF -Partition auf macOS (aber dennoch unter Linux und Windows) unbrauchbar macht. (Siehe Nr. 24 für Vorbehalte.) Aufgrund dieser Einschränkung ist die Empfehlung, das gesamte Gerät zu formatieren.
Format-udf wurde erstellt, um einige os-spezifische Macken zu beheben, die verhindern, dass ein naiv formatiertes UDF-Gerät über verschiedene Betriebssysteme hinweg funktioniert. Hier sind einige der komplizierenden Faktoren, die Format-udf abstrahlen sollen:
Auf den ersten Blick scheinen diese Einschränkungen in teilweise Konflikten zu sein. Die Lösung, wie von Pieter vorgeschlagen, besteht darin, eine gefälschte Partitionstabelle (über MBR) im ersten Block des Laufwerks zu platzieren, in dem eine einzelne Gesamtdisk-Partition aufgeführt ist. Dies funktioniert, weil UDF (vielleicht absichtlich) den ersten Block nicht verwendet. Leider gab es keine einfache Möglichkeit, dies zu tun, während alle anderen Variablen (z. B. logische Blockgröße der Geräte) jongliert. Format-udf schreibt eine so gefälschte MBR für zusätzliche Kompatibilität unter Windows. Wenn dies nicht das ist, was Sie sich wünschen, können Sie den MBR mit -p none deaktivieren.
Ziel dieses Projekts ist es , Zugriff auf ein plattformübergreifendes Dateisystem mit modernen Funktionen auf diese Weise zu gewähren :
Nicht alle Betriebssysteme unterstützen UDF. Die folgenden Tabellen detaillierten Betriebssystemunterstützung für UDF. Die Daten wurden von https://en.wikipedia.org/wiki/universal_disk_format#compatibilibilität angepasst (wie unter 2017-06-16 abgerufen).
Beide lesen/schreiben werden unterstützt, sofern unten nicht anders angegeben.
| Betriebssystem | Schreibgeschützte | Notiz |
|---|---|---|
| Windows XP, Server 2003 | Schreibgeschützte | Schreiben Sie Support mit Versorgungsunternehmen Dritter zur Verfügung |
| Windows Vista, 7, 8, 10 | Von Microsoft als "Live -Dateisystem" bezeichnet; Erfordert eine gefälschte Partition mit voller Scheibe | |
| Mac OS 9 | ||
| Mac OS X 10.5 bis 10.11 | ||
| macOS 10.12+ | ||
| Linux 2.6+, 3.x | UDF -Revisionen 2.01 und vor dem Lesen/Schreiben. Nach UDF Revision 2.01, schreibgeschützt. | |
| AIX 5.2, 5.3, 6.1 | ||
| Beos, Magnussoft Zeta, Haiku | ||
| Dosbox | ||
| ECOMSTATION, OS/2 | Zusätzliche Treiber unter Betriebssystem/2 | |
| NetBSD 5.0 | ||
| Solaris 8, 9, 10 |
| Betriebssystem | Notiz |
|---|---|
| Windows 95 OSR2+, 98 | Zu den Versorgungsunternehmen gehören DLA und INCD |
| Windows 2000, ich |
| Betriebssystem | Notiz |
|---|---|
| DOS, Freedos, Windows 3.11 oder älter | Dateisysteme mit einer ISO9660 -Rückwärtskompatibilitätsstruktur können gelesen werden |
Nicht alle Betriebssysteme unterstützen 4K -Laufwerke (erweitertes Format). Wenn Ihr Betriebssystem UDF unterstützt, jedoch nicht Ihr 4K-Laufwerk, können Sie immer noch Probleme mit Format-udf treffen.
Die folgenden Tabellen detaillierten Windows -Unterstützung für 4K -Laufwerke. Die Daten wurden aus der Microsoft-Support-Richtlinie für 4K-Festplatten in Windows (wie am 2017-06-16 abgerufen) angepasst. In diese Tabelle überlagert werden Testenergebnisse aus der Format-UDF-Community. (Besonderer Dank geht an @pali für seine Tests auf XP.)
| Größe / Betriebssystem | 512-Byte geboren | 512 Emulation (AKA "512E") | 4K geboren (AKA "4KN") |
|---|---|---|---|
| Logische Blockgröße | 512 Bytes | 512 Bytes | 4096 Bytes |
| Physische Blockgröße | 512 Bytes | 4096 Bytes | 4096 Bytes |
| Maximale UDF -Datei Systemkapazität | 2 Tib | 2 Tib | 16 Tib |
| Windows XP | Unterstützt; Arbeiten | Nicht unterstützt; Funktioniert nicht | Nicht unterstützt; Funktioniert nicht |
| Windows XP Pro X64, Server 2003, Server 2003 R2 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Nicht unterstützt | Nicht unterstützt |
| Windows Vista, Server 2008 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Nicht unterstützt |
| Windows 7, Server 2008 R2 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Nicht unterstützt |
| Windows 8, Server 2012 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet |
| Windows 8.1, Server 2012 R2 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Nicht unterstützt | Nicht unterstützt |
| Windows 10, Server 2016 | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet | Nicht unterstützt | Unterstützt; Wahrscheinlich funktioniert, aber ungetestet |
Wenn Sie Tests durchgeführt haben und diese Tabelle aktualisieren möchten, um zukünftigen Benutzern von Format-udf zugute kommen, senden Sie bitte eine Pull-Anfrage. Bitte geben Sie einen Link zu Ihren Rohdaten oder Testen der Testergebnisse an.
printfxxdblockdev , ioregblockdev , diskutillsblk , diskutilumount , diskutilmkudffs , newfs_udfSo installieren Sie die erforderlichen Voraussetzungen auf Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-udf ist ein in sich geschlossenes Skript. Kopieren Sie einfach format-udf.sh in ein Verzeichnis Ihrer Wahl. Vergessen Sie nicht, es ausführbar zu machen:
chmod +x format-udf.sh
Bash script to format a block device (hard drive or Flash drive) in UDF.
The output is a drive that can be used for reading/writing across multiple
operating system families: Windows, macOS, and Linux.
This script should be capable of running in macOS or in Linux.
Usage: ./format-udf.sh [-b BLOCK_SIZE] [-f] [-p PARTITION_TYPE] [-w WIPE_METHOD] device label
./format-udf.sh -v
./format-udf.sh -h
-b BLOCK_SIZE
Block size to be used during format operation.
If absent, defaults to value reported by blockdev/diskutil.
This is an expert-only option. Please consult the README for details.
-f
Forces non-interactive mode. Useful for scripting.
Please use with caution, as no user confirmation is given.
-h
Display help information and exit.
-p PARTITION_TYPE
Partition type to set during format operation.
Currently supported types include: mbr, none
mbr - Master boot record (default)
none - Do not modify partitions
If absent, defaults to 'mbr'.
See also:
https://github.com/JElchison/format-udf#why
-v
Display version information and exit.
-w WIPE_METHOD
Wipe method to be used before format operation.
Currently supported types include: quick, zero, scrub
quick - Quick method (default)
zero - Write zeros to the entire device
scrub - Iteratively writes patterns on device
to make retrieving the data more difficult.
Requires 'scrub' to be executable and in the PATH.
See also http://linux.die.net/man/1/scrub
If absent, defaults to 'quick'.
Note: 'zero' and 'scrub' methods will take a long time.
device
Device to format. Examples:
* /dev/sdx (Linux, where 'x' is a letter) or
* /dev/diskN (macOS, where 'N' is a number)
label
Label to apply to formatted device.
Example: ./format-udf.sh /dev/sdg "My UDF External Drive"
Auf Ubuntu:
user@computer:~$ ./format-udf.sh /dev/sdg "My UDF External Drive"
[+] Validating arguments...
[+] Testing dependencies...
[+] Looking for drive detail tool... using /sbin/blockdev
[+] Looking for drive listing tool... using /sbin/blockdev
[+] Looking for drive info tool... using /bin/lsblk
[+] Looking for drive summary tool... using /sbin/blkid
[+] Looking for unmount tool... using /bin/umount
[+] Looking for UDF tool... using /usr/sbin/mkudffs
[+] Detecting logical block size...
[sudo] password for user:
[*] Detected logical block size of 512
[+] Validating detected logical block size...
[+] Detecting physical block size...
[*] Detected physical block size of 512
[+] Validating detected physical block size...
[+] Validating file system block size...
[*] Using file system block size of 512
[+] Detecting total size...
[*] Detected total size of 8019509248
[+] Validating detected total size...
[+] Gathering drive information...
/dev/sdg: LABEL="Old Drive" UUID="4843-D1BD" TYPE="vfat"
RO RA SSZ BSZ StartSec Size Device
rw 256 512 512 0 8019509248 /dev/sdg
The above-listed device (and partitions, if any) will be completely erased.
Type 'yes' if this is what you intend: yes
[+] Unmounting device...
umount: /dev/sdg: not mounted
[+] Zeroing out first chunk of device...
4096+0 records in
4096+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.450716 s, 4.7 MB/s
[+] Formatting /dev/sdg ...
filename=/dev/sdg
label=My UDF External Drive
uuid=5e4924cc17b50769
blocksize=512
blocks=15663104
udfrev=2.01
start=0, blocks=64, type=ERASE
start=64, blocks=13, type=VRS
start=77, blocks=19, type=ERASE
start=96, blocks=16, type=MVDS
start=112, blocks=16, type=ERASE
start=128, blocks=16, type=LVID
start=144, blocks=112, type=ERASE
start=256, blocks=1, type=ANCHOR
start=257, blocks=15662590, type=PSPACE
start=15662847, blocks=1, type=ANCHOR
start=15662848, blocks=96, type=ERASE
start=15662944, blocks=16, type=RVDS
start=15662960, blocks=143, type=ERASE
start=15663103, blocks=1, type=ANCHOR
[+] Writing fake MBR...
16+0 records in
16+0 records out
16 bytes copied, 0.0037039 s, 4.3 kB/s
2+0 records in
2+0 records out
2 bytes copied, 3.7193e-05 s, 53.8 kB/s
[+] Successfully formatted /dev/sdg: UUID="5e4924cc17b50769" LABEL="My UDF External Drive" TYPE="udf" PTTYPE="dos"
Please disconnect/reconnect your drive now.
Auf macos:
computer:~ user$ ./format-udf.sh /dev/disk4 "My UDF External Drive"
[+] Validating arguments...
[+] Testing dependencies...
[+] Looking for drive detail tool... using /usr/sbin/ioreg
[+] Looking for drive listing tool... using /usr/sbin/diskutil
[+] Looking for drive info tool... using /usr/sbin/diskutil
[+] Looking for drive summary tool... using (none)
[+] Looking for unmount tool... using /usr/sbin/diskutil
[+] Looking for UDF tool... using /sbin/newfs_udf
[+] Detecting logical block size...
[*] Detected logical block size of 512
[+] Validating detected logical block size...
[+] Detecting physical block size...
[+] Validating file system block size...
[*] Using file system block size of 512
[+] Detecting total size...
[*] Detected total size of 8019509248
[+] Validating detected total size...
[+] Gathering drive information...
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *8.0 GB disk4
1: Windows_FAT_32 Old Drive 8.0 GB disk4s1
The above-listed device (and partitions, if any) will be completely erased.
Type 'yes' if this is what you intend: yes
[+] Unmounting device...
Password:
Unmount of all volumes on disk4 was successful
[+] Zeroing out first chunk of device...
4096+0 records in
4096+0 records out
2097152 bytes transferred in 3.113956 secs (673469 bytes/sec)
[+] Formatting /dev/disk4 ...
write to block device: /dev/disk4 last written block address: 15663103
[+] Writing fake MBR...
16+0 records in
16+0 records out
16 bytes transferred in 0.000615 secs (26021 bytes/sec)
2+0 records in
2+0 records out
2 bytes transferred in 0.000644 secs (3106 bytes/sec)
[+] Successfully formatted
Please disconnect/reconnect your drive now.
Wenn das Format-udf äußerst wichtig ist, verwenden Sie die richtige Blockgröße beim Formatieren Ihres Laufwerks. Format-udf versucht, die richtige (logische) Blockgröße zu erkennen und zu verwenden. Wenn Sie wissen, was Sie tun, kann die Option "Format -udf -b BLOCK_SIZE verwendet werden, um den erkannten Blockgrößenwert explizit zu überschreiben.
Wenn beim Formatieren die falsche Blockgröße verwendet wird (dh einer, die nicht mit der logischen Blockgröße Ihres Laufwerks übereinstimmt), wird das resultierende Laufwerk wahrscheinlich Probleme mit Betriebssystemen aufweisen und unter nicht optimalen Leistungsproblemen leiden.
Auf die gleiche Weise ist es genauso wichtig, dass das resultierende Laufwerk mit der richtigen Blockgröße montiert wird. Viele Betriebssysteme versuchen nur eine Blockgröße (normalerweise unabhängig vom Berg -Dienstprogramm standardmäßig). Um beispielsweise ein UDF -Gerät zu montieren, scheint Windows zu erfordern, dass das UDF -Dateisystem eine Blockgröße entspricht der logischen Blockgröße. Wenn Ihre Blockgröße nicht die Standardeinstellung des Betriebssystems ist, funktioniert die automatische Montage wahrscheinlich nicht auf Ihrem Betriebssystem. Während ein kleiner Ärgernis sollten manuelle Montageversuche für nicht standardmäßige Blockgrößen dennoch erfolgreich sein.
Beispiel dafür, wie man manuell unter Linux montiert:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
Beispiel dafür, wie man manuell auf MacOS montiert:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
Leider scheint alles mit einer anderen Blockgröße als 512 nicht unter Windows XP zu montieren.
Weitere Informationen finden Sie unter #12, #13, #16 und #31.
Das UDF -Format hat maximal 2^32 Blöcke. Mit Format-udf entsprechen diese Blöcke logischen Blöcken.
Wenn Ihr Laufwerk über diese maximale Größe über Kapazität verfügt, wird die zusätzliche Kapazität nicht verwendet. Dies ist eine Einschränkung von UDF selbst.
Verwenden Sie für maximale Betriebssystemkompatibilität das Format-udf auf einem Gerät mit einer logischen Blockgröße von 512 Bytes. Dies beschränkt Ihre Gesamtkapazität auf 2 TIB, aber das resultierende Gerät sollte auf den am meisten Betriebssystemen funktionieren.
Verwenden Sie für die maximale resultierende UDF-Dateisystemkapazität das Format-udf auf einem Gerät mit einer logischen Blockgröße von 4096 Bytes. Dies erhöht Ihre Gesamtkapazität (von 2 TIB) auf 16 TIB, begrenzt jedoch die Anzahl/Arten von Betriebssystemen, die das resultierende Gerät montieren/lesen/schreiben können. Weitere Informationen finden Sie in Kompatibilitätstabellen oben.
Verwenden Sie für ein menschliches lesbares Geräteetikett das Format-udf in einer der folgenden Konfigurationen:
fdisk als aktiv einstellen, wenn Ihr BIOS nicht von partitionellen Laufwerken starten kann. (Danke an @tome- für den Tipp.)