Saltar al contenido

Usar UDF en una unidad flash USB

Solución:

Primero, puse a cero completamente la unidad antes de crear el sistema de archivos UDF con:

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

Esto es para evitar superbloques sobrantes u otros metadatos que podrían confundir la detección del tipo de sistema de archivos del sistema operativo (al menos debería ser necesario poner a cero el primer sector para borrar la tabla de particiones; los primeros sectores no son usados ​​por UDF, y un sobrante tabla de particiones realmente podría confundir las cosas). También puede utilizar el count=1 active el comando dd, para poner a cero más rápidamente solo los primeros 512 bytes de la unidad (donde generalmente se encuentra el MBR), aunque esto no se probó.

Para crear el sistema de archivos, el comando que usé fue:

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

mkudffs El comando estará disponible en distribuciones de Linux basadas en Debian (como Ubuntu) después de instalar un udftools paquete:

sudo apt-get install udftools

El tamaño de bloque predeterminado para mkudffs es 2048, que es incorrecto para una unidad flash USB (que utiliza sectores de 512 bytes). Dado que el tamaño de bloque se usa para encontrar los metadatos del sistema de archivos, usar un tamaño de bloque incorrecto puede hacer que no sea reconocido como un sistema de archivos UDF (ya que el ancla no estará donde el controlador del sistema de archivos espera). Tenga en cuenta que el mkudffs la página de manual es incorrecta; 512 es un valor válido para el tamaño del bloque (y el código lo acepta explícitamente).

También utilicé todo el disco en lugar de una partición; esto debería ser más compatible.

El resultado de mis pruebas hasta ahora:

  • Linux con el kernel más reciente (2.6.31, de Ubuntu 9.10): funciona.
  • Linux con un kernel más antiguo: necesita el bs=512 opción a mount, porque usó incorrectamente 2048 en lugar del tamaño del sector del dispositivo (corregido en la confirmación 1197e4d).
  • Windows Vista: funciona.
  • Una Mac nueva: funciona.
  • Windows XP: puede leer bien, pero da “acceso denegado” al intentar escribir; También parece pensar que el disco está lleno.

Si bien hasta ahora no he intentado crear un archivo más grande que 4G, no veo ninguna razón por la que no funcione.

Dado que funcionó perfectamente en todos los sistemas operativos recientes (solo tener que montar manualmente en Linux, que ya no será necesario tan pronto como Ubuntu 9.10 y Fedora 12 estén disponibles), y funcionó como solo lectura en Windows XP (lo cual fue una sorpresa para mí; esperaba que no reconociera el sistema de archivos en absoluto), usar UDF en lugar de FAT32 o NTFS en grandes unidades flash USB parece una buena idea.

CesarB hizo un gran trabajo para llegar al meollo del problema. Una cosa que no se puede subrayar lo suficiente es lo importante que es utilizar el tamaño de bloque adecuado al formatear UDF.

Inspirado por la publicación de CesarB (y mi otra investigación / prueba), escribí un script para automatizar el proceso de formateo en UDF, utilizando el tamaño de sector detectado correctamente. Consulte format-udf en GitHub. Características notables:

  • Formatea una unidad de bloque (disco duro o unidad flash) en formato de disco universal (UDF)
    • Se utiliza la revisión 2.01 de UDF para una máxima compatibilidad
    • Los primeros 4096 sectores se ponen a cero para borrar cualquier MBR existente (necesario para la detección adecuada de UDF)
  • El sistema de archivos resultante se puede leer / escribir en varias familias de sistemas operativos (Windows, OS X y Linux)
  • Se ejecuta en cualquier sistema operativo que tenga un entorno Bash

Debido al último punto, este script que escribí no se puede usar en Windows. Sin embargo, el script se ejecutará en OS X y Linux. Después de hacerlo, Windows debería poder detectar mágicamente la unidad UDF recién formateada.

Para responder directamente a las preguntas publicadas, format-udf hará lo siguiente:

  • elegir la herramienta adecuada para formatear según el sistema operativo y el entorno
  • detectar y completar automáticamente todos los parámetros necesarios para formatear
  • maximizar la compatibilidad del sistema operativo (consulte la página de GitHub para ver el cuadro de compatibilidad)
  • producir el conjunto máximo de características (y limitaciones mínimas) que el autor de la pregunta está buscando

Creo recordar haber hecho eso, el problema que encontré es que la versión de Linux que había montado era de solo lectura, ya que el controlador no había sido construido para r / w. Funcionó en Windows, y creo que Mac.

Sí, es difícil encontrar una buena solución. Durante un tiempo tuve una unidad externa con una partición fat32 que tenía controladores para win y mac, una partición mac y una gran partición ext3. Funcionó, pero significó instalar controladores. Un buen truco fue que también se podía arrancar en una mac (fw y usb), debes dejar espacio y tomar algunas notas, luego puedes agregar particiones a través de la línea de comando y también una tabla de particiones mac.

El mundo necesita un sistema de archivos gratuito y utilizable por todos. ZFS sería una buena opción. 🙂

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *