old-www/HOWTO/UMSDOS-HOWTO-6.html

172 lines
5.9 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>UMSDOS HOW-TO: Basic principle</TITLE>
<LINK HREF="UMSDOS-HOWTO-7.html" REL=next>
<LINK HREF="UMSDOS-HOWTO-5.html" REL=previous>
<LINK HREF="UMSDOS-HOWTO.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="UMSDOS-HOWTO-7.html">Next</A>
<A HREF="UMSDOS-HOWTO-5.html">Previous</A>
<A HREF="UMSDOS-HOWTO.html#toc6">Contents</A>
<HR>
<H2><A NAME="s6">6. Basic principle</A></H2>
<P>
<P>
<H2><A NAME="ss6.1">6.1 Introduction</A>
</H2>
<P>
<P><EM>Umsdos</EM> map <EM>Linux</EM> files directly to <EM>Ms-DOS</EM> files.
This is a one for one translation. File content is not manipulated
at all. <EM>Umsdos</EM> only works on names. For special files (links
and devices for example), it introduces special management.
<P>For each directory, there is a file named <CODE>--linux-.---</CODE>.
<P>
<H2><A NAME="ss6.2">6.2 <EM>Umsdos</EM> can replace the <EM>Ms-DOS</EM> file-system.</A>
</H2>
<P>
<P><EM>Umsdos</EM> can be thought as a general purpose superset
of the <EM>Ms-DOS</EM> file system of linux. In fact this
capability or flexibility yields much confusion about
<EM>Umsdos</EM>. Here is why. Try to mount a newly formatted
<EM>DOS</EM> floppy like this.
<P>
<BLOCKQUOTE><CODE>
<PRE>
mount -t umsdos /dev/fd0 /mnt
</PRE>
</CODE></BLOCKQUOTE>
<P>And do this,
<P>
<BLOCKQUOTE><CODE>
<PRE>
ls / >/mnt/LONGFILENAME
ls -l /mnt
</PRE>
</CODE></BLOCKQUOTE>
<P>You will get the following result
<P>
<BLOCKQUOTE><CODE>
<PRE>
-rwxr-xr-x 1 root root 302 Apr 14 23:25 longfile
</PRE>
</CODE></BLOCKQUOTE>
<P>So far, it seems that the <EM>Umsdos</EM> file system does not do
much more (in fact nothing at all) than the normal <EM>Ms-DOS</EM>
file system of <EM>Linux</EM>.
<P><EM>???</EM>
<P>
<H2><A NAME="ss6.3">6.3 Directory promotion</A>
</H2>
<P>
<P>Pretty unimpressive so far. Here is the trick. Unless promoted
a <EM>DOS</EM> directory will be managed the same way with <EM>Umsdos</EM>
than the <EM>Ms-DOS</EM> file-system will. <EM>Umsdos</EM> use a special
file in each subdirectory to achieve the translation between
the extended capabilities (long name, ownership, etc...) of
<EM>Umsdos</EM> and the limitation of the <EM>DOS</EM> file-system.
This file is invisible to <EM>Umsdos</EM> users, but visible when
you boot <EM>DOS</EM>. To avoid cluttering the <EM>DOS</EM> partition
with those file (<CODE>--linux-.---</CODE>) uselessly, the file is now
optional. If absent, <EM>Umsdos</EM> behave like <EM>Ms-DOS</EM>.
<P>When a directory is promoted, any subsequent operation will be
done with the full semantic normally available to <EM>Unix</EM> and
<EM>Linux</EM> users. And all subdirectory created afterward will
be silently promoted.
<P>This feature allows you to logically organize your <EM>DOS</EM> partition
into <EM>DOS</EM> stuff and <EM>Linux</EM> stuff. It is important to
understand that those <CODE>--linux-.---</CODE> file do take some place
(generally 2k per directory). <EM>DOS</EM> generally use large
cluster (as big as 16k for a 500meg partition), so avoiding
putting <CODE>--linux-.---</CODE> everywhere can save your day.
<P>
<H2><A NAME="ss6.4">6.4 How to promote: <CODE>/sbin/umssync</CODE></A>
</H2>
<P>
<P>A directory can be promoted any time using <CODE>/sbin/umssync</CODE>.
It can be used at any time. Promoting a directory do the
following operation
<P>
<UL>
<LI>Create a <CODE>--linux-.---</CODE>.</LI>
<LI>Establish a one to one relation between the <CODE>--linux-.---</CODE>
and the current content of the directory.</LI>
</UL>
<P><CODE>/sbin/umssync</CODE> maintain an existing <CODE>--linux-.---</CODE> file.
It does not create it from scratch all the time. It simply add
missing entries in it (Files created during a <EM>DOS</EM> session).
It will also removed files which do not exist anymore in the
<EM>DOS</EM> directory from the <EM>--linux-.---</EM>. <CODE>umssync</CODE> gets
its name from that. It put <EM>--linux-.---</EM> in sync with
the underlying <EM>DOS</EM> directory.
<P>
<H2><A NAME="ss6.5">6.5 Using <CODE>/sbin/umssync</CODE> at boot time</A>
</H2>
<P>It is a good idea to place a call to <CODE>/sbin/umssync</CODE>
at the end of your /etc/rc.d/rc.S if it's not there. The following
command is adequate for most system:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/sbin/umssync -r99 -c -i+ /
</PRE>
</CODE></BLOCKQUOTE>
<P>The <CODE>-c</CODE> option prevent <CODE>umssync</CODE> from promoting
directories. It will only update existing <CODE>--linux-.---</CODE>.
<P>This command is useful if you access <EM>Linux</EM> directory during
a <EM>DOS</EM> session. <EM>Linux</EM> has no efficient way to tell that
a directory has been modified by <EM>DOS</EM> so <EM>Umsdos</EM> can't
do a <EM>umssync</EM> operation as needed.
<P>
<H2><A NAME="ss6.6">6.6 How to UN-promote</A>
</H2>
<P>
<P>Remove the <CODE>--linux-.---</CODE> file using <EM>DOS</EM>. You will
be sorry.
<P>
<H2><A NAME="ss6.7">6.7 What about files created during a <EM>DOS</EM> session ?</A>
</H2>
<P>
<P>Unless you use <CODE>umssync</CODE> on a directory where files have
been added or removed by <EM>DOS</EM>, you will notice some problems:
<P>
<UL>
<LI>It won't crash the system nor it won't cause major
problems, only annoyance :-)</LI>
<LI>Files created by <EM>DOS</EM>.
<UL>
<LI>They will be invisible in <EM>Linux</EM>.</LI>
<LI>When trying to create a file with the same name,
you will get an error message stating that the
file already exist.</LI>
<LI>This creates more confusion that real problem. It
does not harm the file system.</LI>
</UL>
</LI>
<LI>Files deleted by <EM>DOS</EM> won't cause problem. <EM>Umsdos</EM>
will notice the absence at the first access. A message
will be output (and generally written into
<CODE>/var/adm/syslog</CODE>).</LI>
</UL>
<P>
<HR>
<A HREF="UMSDOS-HOWTO-7.html">Next</A>
<A HREF="UMSDOS-HOWTO-5.html">Previous</A>
<A HREF="UMSDOS-HOWTO.html#toc6">Contents</A>
</BODY>
</HTML>