viernes, julio 23, 2010

Como crear un sistema HFS+ sensible a mayúsculas y minúsculas en MacOS X

El sistema de ficheros que usa por defecto la instalación de MacOS X, no es sensible a mayúsculas y minúsculas, es decir, que dentro de la jerarquía de ficheros el nombre Hola,HOLA o HoLa, hace referencia al mismo fichero. Debido al trabajo, me he encontrado que en el repositorio git que usamos, tenemos ficheros con el mismo nombre pero que sólo se diferencia en las mayúscula y minúsculas, con lo cual no puedo editarlos en el Mac. Para buscar una solución a este problema, he decido usar un fichero de imagen para almacenar todo el repositorio de git y que distinga ficheros en mayúsculas y minúsculas.

La utilidad que nos permite comunicarnos con el framework encargado de gestionar las imágenes de discos en MacOS X es hdituil. El sistema de ficheros que queremos crear queremos que sea el estándar de MacOS X, HFS+, que sea sensible a mayúsculas y minúsculas (case sensitive), que use la tabla de particiones estándar de los Mac en Intel con Snow Leopard y que el fichero y vaya creciendo conforme se vaya añadiendo información hasta el límite que nos interese.

La opción que usaremos del hdiutil será create. Podemos ver toda la ayuda de la opción de la siguiente manera:

hdiutil create -help

Con todas las opciones anteriores, el comando que hay que introducir en el terminal para crear un fichero con las propiedades anteriores es la siguiente (todo en la misma línea):

hdiutil create -fs "Case-sensitive HFS+" -layout "GPTSPUD" -type SPARSE -megabytes 8000 -volname "git.image" git.image

Las opciones que se han pasado a hdiutil create son las siguientes:

  • -fs "Case-sensitive HFS+": El tipo de sistemas de ficheros que se creará dentro del fichero de imagen será HFS+ y los nombres de ficheros y directorios será sensible a mayúsculas y minúsculas.
  • -layout "GPTSPUD": Tipo de tabla de particiones. En este caso, indica que usa el sistema de particiones de Apple con una sola entrada y que genera un UUID para la misma. Este es el tipo de particiones que utiliza los Mac con procesador Intel. En el caso de usar un procesador con PowerPC se puede usar SPUD como tipo de partición.
  • -type SPARSE: Con esto indicamos que el no queremos que se reserve todo el espacio que va a tener la imagen. Ahorramos espacio, pero puede producir fragmentación en el fichero,haciendo más lento el acceso a los datos.
  • -megabytes 8000: Tamaño en megabytes que tendrá la imagen.
  • -volname "git.image": Etiqueta de volumen del nuevo sistema de ficheros. Nos aparecerá en el Finder como un disco con dicho nombre - siempre que no exista otro con el mismo nombre montado con anterioridad -.
  • git.image. Este es el prefijo del nombre de fichero que nos va a crear. Como hemos usado la opción -type SPARSE, el nombre del fichero que nos creará será git.image.sparse.

Ahora se puede ir uno al Finder y montar la imagen haciendo doble click sobre la misma. También es posible montarla desde la línea de comando con la siguiente orden:

swordcoast:Documents terron$ hdiutil attach git.image.sparseimage 
/dev/disk2                  GUID_partition_scheme                  
/dev/disk2s1              EFI                                    
/dev/disk2s2              Apple_HFS                              /Volumes/git.image

Con la orden mount desde la ventana de terminal podemos verificar que está correctamente montada la imagen:

swordcoast:Documents terron$ mount
/dev/disk0s2 on / (hfs, NFS exported, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk2s2 on /Volumes/git.image (hfs, local, nodev, nosuid, noowners, mounted by terron)
swordcoast:Documents terron$

Por último a mi me interesa que esta imagen esté siempre montada cuando utilizo una ventana de Terminal. La manera más sencilla de hacer esto, si se usa la shell bash en el terminal es añadir al fichero $HOME/.profile las siguientes líneas:

if [ !  -d /Volumes/git.image ]; then
        hdiutil attach /Users/terron/Documents/git.image.sparseimage
fi

Mejoras a futuro

Quizás de la parte que estoy más descontento es en la manera que se monta la imagen almacenada en /Users/terron/Documents a través del .profile no me convence. He estado buscando información para ver si el automount podría proporcionarme una interfaz cómoda para montar las imágenes, pero no he encontrado información suficiente. También tengo pendiente en publicar algunas notas del uso de hdiutil para manejar las imágenes de discos en MacOS X.


Technorati Tags:

No hay comentarios: