Umsdos mappa i file Linux direttamente in file Ms-DOS. Questa è l'unica trasformazione. Il contenuto dei file non è assolutamente modificato. Umsdos lavora solo sui nomi. Per file speciali (link e dispositivi per esempio) è introdotta una gestione speciale.
Per ogni directory c'è un file chiamato --linux-.---
.
L'Umsdos è un superset per usi generali del filesystem Ms-DOS di Linux. In effetti questa capacità e flessibilità crea molta confusione su Umsdos. Vediamo il perché. Provate a montare un floppy appena formattato DOS come qui.
mount -t umsdos /dev/fd0 /mnt
E scrivere questo:
ls / >/mnt/LONGFILENAME
ls -l /mnt
Si otterrà il seguente risultato
-rwxr-xr-x 1 root root 302 Apr 14 23:25 longfile
Sembra che il filesystem Umsdos non sia molto di più (in realtà non proprio) del normale filesystem Ms-DOS di Linux.
Qui sta il trucco. Finché non si promuove una directory DOS, essa
verrà gestita allo stesso modo sia dal filesystem Ms-DOS che dal
filesystem Umsdos. Umsdos usa uno speciale file in ogni
subdirectory per registrare le traduzioni tra le capacità estese (nomi
lunghi, proprietari ecc.) del filesystem Umsdos e i limiti di
Ms-DOS. Questo file è invisibile agli utenti Umsdos, ma
visibile quando si avvia DOS. Per evitare di ingombrare la partizione
DOS con questi file (--linux-.---
) non utilizzati, il file è
ora opzionale. Se assente, Umsdos diventa simile a Ms-DOS.
Quando una directory è promossa, ogni operazione verrà fatta con la piena semantica normalmente disponibile agli utenti Unix e Linux. E tutte le subdirectory create successivamente saranno silenziosamente promosse.
Questa caratteristica permette di organizzare logicamente la partizione
DOS in zone DOS e zone Linux. È importante capire che
questi file --linux-.---
occupano spazio (generalmente 2k per
directory). Il DOS generalmente usa cluster larghi (grandi 16k per
partizioni da 500 Mb), quindi evitare di mettere --linux-.---
ovunque
permette di guadagnare spazio.
/sbin/umssync
Una directory può essere promossa in ogni momento usando
/sbin/umssync
. Promuovere una directory significa fare le
seguenti operazioni
--linux-.---
.
--linux-.---
e l'attuale
contenuto della directory./sbin/umssync
mantiene un esistente file --linux-.---
. Non
lo crea da zero ogni volta. Semplicemente aggiunge le informazioni
mancanti (file creati durante una sessione DOS). Esso rimuove anche i
file che non esistono più nella directory DOS da --linux-.---
.
umssync
prende il nome da questo. Esso sincronizza --linux-.---
con la sottostante directory DOS.
/sbin/umssync
all'avvio
È una buona idea mettere una chiamata a /sbin/umssync
alla fine
del file /etc/rc.d/rc.S
se non c'è già. Il comando seguente
è adeguato per molti sistemi:
/sbin/umssync -r99 -c -i+ /
L'opzione -c
previene umssync
dal promuovere directory. Esso
aggiorna solamente i --linux-.---
esistenti.
Questo comando è utile se si accede alla directory Linux durante una sessione DOS. Linux non ha mezzi efficienti per capire che una directory è stata modificata da DOS, così Umsdos non può fare l'operazione umssync quando necessario.
Rimuovere il file --linux-.---
usando il DOS. Tutto qui.
Finché non si usa umssync
su una directory dove i file sono stati
aggiunti o rimossi da DOS, si noteranno alcuni problemi:
/var/adm/syslog
).