Script para formatear un dispositivo de bloque (disco duro o unidad flash) en UDF. La salida es una unidad que se puede usar para leer/escribir en múltiples familias de sistemas operativos: Windows, MacOS y Linux. Este script debe ser capaz de ejecutarse en macOS o en Linux.
Para el usuario avanzado, Format-UDF también es capaz de formatear una sola partición existente, sin modificar la tabla de partición. Tenga cuidado de que el uso de este método hará que la partición UDF recién formateada sea inutilizable en macOS (pero aún se use en Linux y Windows). (Consulte el #24 para las advertencias). Debido a esta limitación, la recomendación es formatear todo el dispositivo.
Format-UDF se creó para abordar algunas peculiaridades específicas del sistema operativo que evitan que un dispositivo UDF ingenuamente formateado funcione en varios sistemas operativos. Estos son algunos de los factores complicados, que format-UDF tiene como objetivo abstraer:
A primera vista, estas limitaciones parecen estar en conflicto parcial. La solución, como lo sugiere Pieter, es colocar una tabla de partición falsa (a través de MBR) en el primer bloque de la unidad, que enumera una partida de un solo disco completo. Esto funciona porque UDF (quizás intencionalmente) no utiliza el primer bloque. Desafortunadamente, no ha habido una manera fácil de hacer esto, mientras hace malabares con todas las otras variables (como el tamaño del bloque lógico del dispositivo). Format-UDF escribe un MBR tan falso para mayor compatibilidad en Windows. Si esto no es lo que desea, puede deshabilitar el MBR con -p none .
El objetivo de este proyecto es proporcionar acceso a un sistema de archivos multiplataforma con características modernas , de tal manera que sea:
No todos los sistemas operativos admiten UDF. Las siguientes tablas detallan el soporte del sistema operativo para UDF. Los datos se adaptaron de https://en.wikipedia.org/wiki/universal_disk_format#compatibility (como se recuperó el 2017-06-16).
Ambos lectura/escritura son compatibles a menos que se enumere lo contrario a continuación.
| Sistema operativo | De solo lectura | Nota |
|---|---|---|
| Windows XP, Server 2003 | De solo lectura | Escribir soporte disponible con servicios públicos de terceros |
| Windows Vista, 7, 8, 10 | Referido por Microsoft como "Sistema de archivos en vivo"; Requiere partición falsa de disco completo | |
| Mac OS 9 | ||
| Mac OS X 10.5 a 10.11 | ||
| MacOS 10.12+ | ||
| Linux 2.6+, 3.x | Revisiones UDF 2.01 y antes tienen lectura/escritura. Después de UDF Revision 2.01, solo lectura. | |
| AIX 5.2, 5.3, 6.1 | ||
| Beos, Magnussoft Zeta, Haiku | ||
| Dosis de dosis | ||
| Ecomstation, OS/2 | Controladores de tarifas adicionales en OS/2 | |
| Netbsd 5.0 | ||
| Solaris 8, 9, 10 |
| Sistema operativo | Nota |
|---|---|
| Windows 95 OSR2+, 98 | Los servicios públicos incluyen DLA e INCD |
| Windows 2000, yo |
| Sistema operativo | Nota |
|---|---|
| DOS, FreeDos, Windows 3.11 o más | Se pueden leer los sistemas de archivos que tienen una estructura de compatibilidad hacia atrás ISO9660 |
No todos los sistemas operativos admiten unidades 4K (formato avanzado). Si su sistema operativo admite UDF, pero no su unidad 4K, aún puede encontrar problemas con Format-UDF.
Las siguientes tablas detallan el soporte de Windows para unidades 4K. Los datos se adaptaron de la Política de soporte de Microsoft para discos duros del sector 4K en Windows (como se recuperó el 2017-06-16). Superpuesto en esta tabla están probando los resultados de la comunidad Format-UDF. (Un agradecimiento especial a @Pali por sus pruebas en XP).
| Tamaño / sistema operativo | Nativo de 512 bytes | 512 emulación (También conocido como "512e") | 4K nativo (También conocido como "4kn") |
|---|---|---|---|
| Tamaño del bloque lógico | 512 bytes | 512 bytes | 4096 bytes |
| Tamaño del bloque físico | 512 bytes | 4096 bytes | 4096 bytes |
| Archivo UDF máximo capacidad del sistema | 2 tib | 2 tib | 16 Tib |
| Windows XP | Apoyado; Obras | Sin apoyo; No funciona | Sin apoyo; No funciona |
| Windows XP Pro X64, Servidor 2003, Servidor 2003 R2 | Apoyado; Probablemente funciona pero no probado | Sin apoyo | Sin apoyo |
| Windows Vista, Servidor 2008 | Apoyado; Probablemente funciona pero no probado | Apoyado; Probablemente funciona pero no probado | Sin apoyo |
| Windows 7, Servidor 2008 R2 | Apoyado; Probablemente funciona pero no probado | Apoyado; Probablemente funciona pero no probado | Sin apoyo |
| Windows 8, Servidor 2012 | Apoyado; Probablemente funciona pero no probado | Apoyado; Probablemente funciona pero no probado | Apoyado; Probablemente funciona pero no probado |
| Windows 8.1, Servidor 2012 R2 | Apoyado; Probablemente funciona pero no probado | Sin apoyo | Sin apoyo |
| Windows 10, Servidor 2016 | Apoyado; Probablemente funciona pero no probado | Sin apoyo | Apoyado; Probablemente funciona pero no probado |
Si ha realizado pruebas y desea actualizar esta tabla para beneficiar a los usuarios futuros de Format-UDF, envíe una solicitud de extracción. Incluya un enlace a sus datos sin procesar o resultados de pruebas.
printfxxdblockdev , ioregblockdev , diskutillsblk , diskutilumount , diskutilmkudffs , newfs_udfPara instalar los requisitos previos necesarios en Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-UDF es un guión autónomo. Simplemente copie Format-udf.sh a un directorio de su elección. No olvides hacerlo ejecutable:
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"
En 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.
En 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 es extremadamente importante que el formato-UDF use el tamaño de bloque correcto al formatear su unidad. Format-UDF intentará detectar y usar el tamaño de bloque correcto (lógico). Si sabe lo que está haciendo, la opción Format -udf -b BLOCK_SIZE se puede usar para anular explícitamente el valor de tamaño de bloque detectado.
Si se usa el tamaño de bloque incorrecto mientras se formatea (es decir, uno que no coincide con el tamaño del bloque lógico de su unidad), la unidad resultante probablemente tendrá problemas de compatibilidad del sistema operativo y sufrirá problemas de rendimiento no óptimos.
De la misma manera, es tan importante que la unidad resultante se monte usando el tamaño de bloque correcto. Muchos sistemas operativos solo intentarán un tamaño de bloque (generalmente lo que sea el valor predeterminado de la utilidad de montaje). Por ejemplo, para montar un dispositivo UDF, Windows parece requerir que el sistema de archivos UDF use un tamaño de bloque igual al tamaño de bloque lógico. Si el tamaño de su bloque no es el valor predeterminado del sistema operativo, entonces el montaje automático probablemente no funcionará en su sistema operativo. Mientras que una pequeña molestia, los intentos de montaje manual aún deberían tener éxito para los tamaños de bloques no estándar.
Ejemplo de cómo montar manualmente en Linux:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
Ejemplo de cómo montar manualmente en macOS:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
Lamentablemente, cualquier cosa con un tamaño de bloque diferente a 512 no parece montar en Windows XP.
Para obtener más información, consulte #12, #13, #16 y #31.
El formato UDF tiene un máximo de 2^32 bloques. Con Format-UDF, estos bloques equivalen a bloques lógicos.
Si su disco tiene capacidad en exceso de este tamaño máximo, no se utilizará la capacidad adicional. Esta es una limitación de UDF en sí.
Para obtener la máxima compatibilidad del sistema operativo, use Format-UDF en un dispositivo que tenga un tamaño de bloque lógico de 512 bytes. Esto limitará su capacidad total a 2 TIB, pero el dispositivo resultante debería funcionar en la mayoría de los sistemas operativos.
Para obtener la capacidad máxima del sistema de archivos UDF, use Format-UDF en un dispositivo que tenga un tamaño de bloque lógico de 4096 bytes. Esto aumentará su capacidad total (de 2 TIB) a 16 TIB, pero limitará el número/tipos de sistemas operativos que podrán montar/leer/escribir el dispositivo resultante. Consulte las tablas de compatibilidad arriba para obtener más detalles.
Para una etiqueta de dispositivo legible por humanos, use Format-UDF en una de las siguientes configuraciones:
fdisk para establecer la partición como activa si su BIOS no puede arrancar desde unidades sin partición. (Gracias a @Tome- por el consejo).