Script bash pour formater un périphérique de bloc (disque dur ou lecteur flash) en UDF. La sortie est un lecteur qui peut être utilisé pour la lecture / l'écriture dans plusieurs familles de systèmes d'exploitation: Windows, MacOS et Linux. Ce script doit être capable d'exécuter en macOS ou dans Linux.
Pour l'utilisateur avancé, Format-UDF est également capable de formater une seule partition existante, sans modifier la table de partition. Méfiez-vous que l'utilisation de cette méthode rendra la partition UDF nouvellement formatée inutilisable sur macOS (mais toujours utilisable sur Linux et Windows). (Voir # 24 pour les mises en garde.) En raison de cette limitation, la recommandation est de formater l'ensemble de l'appareil.
Format-UDF a été créé pour aborder certaines bizarreries spécifiques au système d'exploitation qui empêchent un dispositif UDF à format naïvement de fonctionner sur divers systèmes d'exploitation. Voici quelques-uns des facteurs compliqués, que Format-UDF vise à résumer:
À première vue, ces contraintes semblent être en conflit partiel. La solution, comme suggéré par Pieter, est de placer une fausse table de partition (via MBR) dans le premier bloc du lecteur, qui répertorie une partition entière unique. Cela fonctionne parce que l'UDF (peut-être intentionnellement) n'utilise pas le premier bloc. Malheureusement, il n'y a pas eu de moyen facile de le faire, tout en jonglant avec toutes les autres variables (comme la taille du bloc logique de l'appareil). Format-UDF écrit un tel faux MBR pour plus de compatibilité sur Windows. Si ce n'est pas ce que vous désirez, vous pouvez désactiver le MBR avec -p none .
L'objectif de ce projet est de fournir un accès à un système de fichiers multiplateforme avec des fonctionnalités modernes , de manière à ce qui est:
Tous les systèmes d'exploitation ne prennent pas en charge UDF. Les tableaux suivants détaillent la prise en charge du système d'exploitation pour UDF. Les données ont été adaptées de https://en.wikipedia.org/wiki/Universal_disk_format#compatibilité (telles que récupérées le 2017-06-16).
Les deux lectures / écritures sont prises en charge, sauf indication contraire ci-dessous.
| Système opérateur | En lecture seule | Note |
|---|---|---|
| Windows XP, Server 2003 | En lecture seule | Écrivez un support disponible avec des services publics tiers |
| Windows Vista, 7, 8, 10 | Référé par Microsoft comme "Système de fichiers en direct"; Nécessite une fausse partition à disque complet | |
| Mac OS 9 | ||
| Mac OS x 10.5 à 10.11 | ||
| macOS 10.12+ | ||
| Linux 2.6+, 3.x | UDF Revisions 2.01 et avant d'avoir lu / écrite. Après UDF Revision 2.01, en lecture seule. | |
| AIX 5.2, 5.3, 6.1 | ||
| Beos, Magnussoft Zeta, Haiku | ||
| Dosbox | ||
| ECOMSTATION, OS / 2 | Pilotes supplémentaires sur OS / 2 | |
| Netbsd 5.0 | ||
| Solaris 8, 9, 10 |
| Système opérateur | Note |
|---|---|
| Windows 95 OSR2 +, 98 | Les services publics incluent DLA et Incd |
| Windows 2000, moi |
| Système opérateur | Note |
|---|---|
| DOS, Freedos, Windows 3.11 ou plus | Les systèmes de fichiers qui ont une structure de compatibilité Iso9660 vers l'arrière peuvent être lus |
Tous les systèmes d'exploitation ne prennent pas en charge les disques 4K (format avancé). Si votre système d'exploitation prend en charge l'UDF, mais pas votre lecteur 4K, vous pouvez toujours rencontrer des problèmes à l'aide de format-udf.
Les tableaux suivants détaillent la prise en charge des fenêtres pour les lecteurs 4K. Les données ont été adaptées de la politique de support Microsoft pour les disques durs du secteur 4K dans Windows (comme récupéré le 2017-06-16). Supposed dans ce tableau sont les résultats des résultats de la communauté du format-UDF. (Un merci spécial à @pali pour ses tests sur XP.)
| Taille / OS | Indigène de 512 octets | 512 émulation (Aka "512e") | Natif 4K (Aka "4kn") |
|---|---|---|---|
| Taille de bloc logique | 512 octets | 512 octets | 4096 octets |
| Taille du bloc physique | 512 octets | 4096 octets | 4096 octets |
| Fichier UDF maximum capacité du système | 2 tib | 2 tib | 16 tib |
| Windows XP | Soutenu; Travaux | Non pris en charge; Ne fonctionne pas | Non pris en charge; Ne fonctionne pas |
| Windows XP Pro X64, Server 2003, Server 2003 R2 | Soutenu; Fonctionne probablement mais non testé | Non pris en charge | Non pris en charge |
| Windows Vista, Serveur 2008 | Soutenu; Fonctionne probablement mais non testé | Soutenu; Fonctionne probablement mais non testé | Non pris en charge |
| Windows 7, Serveur 2008 R2 | Soutenu; Fonctionne probablement mais non testé | Soutenu; Fonctionne probablement mais non testé | Non pris en charge |
| Windows 8, Serveur 2012 | Soutenu; Fonctionne probablement mais non testé | Soutenu; Fonctionne probablement mais non testé | Soutenu; Fonctionne probablement mais non testé |
| Windows 8.1, Serveur 2012 R2 | Soutenu; Fonctionne probablement mais non testé | Non pris en charge | Non pris en charge |
| Windows 10, Serveur 2016 | Soutenu; Fonctionne probablement mais non testé | Non pris en charge | Soutenu; Fonctionne probablement mais non testé |
Si vous avez effectué des tests et que vous souhaitez mettre à jour ce tableau au profit des futurs utilisateurs de Format-UDF, veuillez envoyer une demande de traction. Veuillez inclure un lien vers vos données brutes ou vos résultats de test.
printfxxdblockdev , ioregblockdev , diskutillsblk , diskutilumount , diskutilmkudffs , newfs_udfPour installer les conditions préalables nécessaires sur Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-UDF est un script autonome. Copiez simplement Format-udf.sh dans un répertoire de votre choix. N'oubliez pas de le rendre exécutable:
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"
Sur 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.
Sur 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.
Si c'est extrêmement important que le format-udf utilise la taille du bloc correct lors de la mise en forme de votre lecteur. Format-UDF tentera de détecter et d'utiliser la taille du bloc (logique) correcte. Si vous savez ce que vous faites, l'option Format-udf -b BLOCK_SIZE peut être utilisée pour remplacer explicitement la valeur de taille de bloc détectée.
Si la mauvaise taille de bloc est utilisée lors du formatage (c'est-à-dire une qui ne correspond pas à la taille logique du bloc de votre lecteur), le lecteur résultant aura probablement des problèmes de compatibilité des SG et souffrera de problèmes de performances non optimaux.
De la même manière, il est tout aussi important que le lecteur résultant soit monté en utilisant la taille du bloc correct. De nombreux systèmes d'exploitation ne tenteront qu'une seule taille de bloc (généralement tout ce que l'utilitaire de montage est par défaut). Par exemple, afin de monter un périphérique UDF, Windows semble exiger que le système de fichiers UDF utilise une taille de bloc égale à la taille du bloc logique. Si la taille de votre bloc n'est pas la valeur par défaut du système d'exploitation, le montage automatique ne fonctionnera probablement pas sur votre système d'exploitation. Alors qu'une petite nuisance, les tentatives de montage manuelles devraient toujours réussir pour des tailles de blocs non standard.
Exemple de la façon de monter manuellement sur Linux:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
Exemple de la façon de monter manuellement sur macOS:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
Malheureusement, tout ce qui avec une taille de bloc différente de 512 ne semble pas monter sur Windows XP.
Pour plus d'informations, voir # 12, # 13, # 16 et # 31.
Le format UDF a un maximum de 2 ^ 32 blocs. Avec le format-UDF, ces blocs équivalent aux blocs logiques.
Si votre entraînement a une capacité supérieure à cette taille maximale, la capacité supplémentaire ne sera pas utilisée. Ceci est une limitation de l'UDF lui-même.
Pour une compatibilité maximale du système d'exploitation, utilisez le format-udf sur un appareil ayant une taille de bloc logique de 512 octets. Cela limitera votre capacité totale à 2 TIB, mais le dispositif résultant devrait fonctionner sur les systèmes les plus opérationnels.
Pour une capacité de système de fichiers UDF résultant maximal, utilisez le format-udf sur un appareil ayant une taille de bloc logique de 4096 octets. Cela augmentera votre capacité totale (de 2 TIB) à 16 TIB, mais limitera le nombre / types de systèmes d'exploitation qui pourront monter / lire / écrire l'appareil résultant. Voir les tables de compatibilité ci-dessus pour plus de détails.
Pour une étiquette de périphérique lisible par l'homme, utilisez le format-udf dans l'une des configurations suivantes:
fdisk pour définir la partition comme active si votre BIOS ne peut pas démarrer à partir de lecteurs sans partition. (Merci à @ tome- pour le conseil.)