Umsdos hace corresponder los ficheros de Linux directamente con ficheros de Ms-DOS. La traducción es uno a uno (biyectiva). No se toca el contenido de los ficheros. Umsdos sólo actúa sobre los nombres. Con los ficheros especiales (enlaces y dispositivos, por ejemplo) utiliza una gestión especial.
Por cada directorio hay un fichero llamado --linux-.---
.
Se puede ver Umsdos como un superconjunto de propósito general del sistema de ficheros Ms-DOS de linux. Esta flexibilidad es, de hecho, la causa de gran parte de la confusión sobre Umsdos. Aquí esta el porqué. Si se intenta montar un disquete DOS recién formateado con esto
mount -t umsdos /dev/fd0 /mnt
Y se hace esto,
ls / >/mnt/FICHEROCONNOMBREMUYLARGO
ls -l /mnt
Se obtiene lo siguiente
-rwxr-xr-x 1 root root 302 Apr 14 23:25 ficheroc
Así, que, por el momento, parece como si el sistema de ficheros Umsdos no hiciera mucho más (la verdad es que nada más) que el sistema de ficheros Ms-DOS normal de Linux.
???
No es muy impresionante por el momento. Ahora viene la gracia.
A menos que se promueva, un directorio DOS será manejado
igual por Umsdos que como lo sería por el sistema de
ficheros DOS. Umsdos utiliza un fichero especial
en cada subdirectorio para hacer la traducción entre las
capacidades extendidas de Umsdos y las limitaciones del
sistema de ficheros DOS. Este fichero es invisible para los
usuarios de Umsdos, pero es visible cuando se arranca en
DOS. Para evitar llenar la partición DOS inutilmente
con esos ficheros (--linux-.---
), el fichero es ahora
opcional. Si no existe, Umsdos se comporta como Ms-DOS.
Cuando se promueve un directorio, cualquier operación posterior será hecha con la semántica completa de la que normalmente disfrutan los usuarios de Unix y Linux. Y cualquier subdirectorio creado desde entonces (en un directorio ya promovido) será promovido silenciosamente.
Esta característica permite organizar la partición DOS en
material del DOS y material del Linux. Es importante
entender que el fichero --linux-.---
ocupa algo de espacio
(generalmente 2k por directorio). El DOS habitualmente utiliza
bloques grandes (de hasta 16k para una partición de 500M), así
que evitar que haya ficheros --linux-.---
en todas partes
puede resultar beneficioso.
/sbin/umssync
Se puede promover un directorio en cualquier momento usando
/sbin/umssync
. Se puede usar en cualquier momento.
Al promover un directorio ocurre lo siguiente
--linux-.---
.--linux-.---
y lo que en ese
momento sea el contenido del directorio./sbin/ummsync
conserva un fichero --linux-.---
ya existente. No lo crea de la nada todas las veces. Simplemente
le añade las entradas que le falten (Ficheros creados durante una
sesión DOS) y le quita las entradas que se refieran a ficheros
que ya no existen en el directorio DOS. De ahí le viene
el nombre. umssync
pone --linux-.--- en sincronismo
con el directorio DOS que hay debajo.
/sbin/umssync
durante el arranqueEs una buena idea poner, si no existiera, una llamada a
/sbin/umssyc
al final del fichero /etc/rc.d/rc.S. La
línea siguiente es adecuada para la mayor parte de los sistemas:
/sbin/umssync -r99 -c -i+ /
La opción -c
evita que umssync
promueva directorios.
Sólamente actualizará los ficheros --linux-.---
donde
ya existan.
Esa línea tiene utilidad si se accede al directrio Linux durante las sesiones DOS. No existe en Linux una manera eficiente de decir que un directorio ha sido modificado por el DOS así que Umsdos no puede hacer un umssync según se necesite.
Simplemente hay que eliminar el fichero --linux-.---
usando
el DOS. Aunque quien lo haga acabará arrepintiéndose.
A menos que se use umssync
en un directorio donde el DOS
haya añadido o borrado ficheros, se advertirán algunas dificultades:
/var/adm/syslog
) un mensaje al respecto.