From: jack@solucorp.qc.ca (Jacques Gelinas)
Newsgroups: comp.os.linux.announce
Subject: Umsdos is not part of linux 1.1.35
Date: 25 Jul 1994 19:04:34 +0300
Approved: linux-announce@tc.cornell.edu (Lars Wirzenius)
Message-ID: <310nqi$s4m@klaava.Helsinki.FI>

Well, this is it. Umsdos is now part of the standard kernel distribution.
Starting with 1.1.35. Since more and more people will be exposed to
it, I have written some intro to it. I would be happy if this finds
its way in a FAQ or a HOWTO. Not sure which one. Comments are welcome.

Introduction to Umsdos
======================

Umsdos is a file system driver that run on top the MSDOS fs driver.
It is written by Jacques Gelinas (jacques@solucorp.qc.ca)

Umsdos is not a file system per se, but a twist to make a boring
one into a useful one.

It gives you:

	long file name
	Permisssions and owner
	Links
	Special files (devices, pipe...)
	All is need to be a linux root fs.
	swap file capability and mmap.

(Note that the swap file and mmap features have been done in the msdos
fs driver).

There is plenty of documentation on it in the source. A formated document
made from those comments is available from
sunsite.unc.edu:/pub/Linux/ALPHA/umsdos/umsdos-0.3.doc.gz

There is 3 ways to use Umsdos:

	1-For those who already have linux running and want to make
	  better uses of their DOS partition(s).
	2-Those who want to install linux without any trouble directly
	  in their DOS partition.
	3-Those who don't have a DOS partition, don't plan to have one
	  but still have friends who don't plan to have a linux partition :-)

So I will describe how umsdos work for case 1 and 2. I will conclude
with a status report on the umsdos project.

You already have linux running and you have a DOS partition
===================================================

	Mostly...

	You mount a DOS partition like this

	mount -t umsdos /dev/hda3 /mnt
	         ^
	---------|

All option are passed to the msdos drivers. Option like uid,gid etc are
given to msdos. Note that the utility umssetup allows you to change those
settings on the fly on a mounted partition.

The default behavior of Umsdos is to do the same thing as the msdos driver
mostly passing commands to it without much processing. Again, this is
the default. After doing the mount on a DOS partition, nothing special
happen. This is why all mount options are passed to the Msdos fs driver.
The MsDOS file system has no room to store user id, groupe id and permissions
bits. Those mount options allow you to set default values for files and
directory. Please remember, default values.

Umsdos use a special DOS file --linux-.--- to store the information
which can't be handle by the normal MsDOS file system. This is the trick.

--linux-.--- is optionnal. There is one per directory.

**** If --linux-.--- is missing, then Umsdos process the directory the
     same way the msdos driver do. Short file name, no goodies, default
     owner and permissions. So each directory may have or not this
     --linux-.--- file.

Now, how to get those --linux-.---.

\begin joke_section
	Well send me a directory listing
	and I will send you one customised for you.
	$5 per directory. Add any applicable taxes.
\end joke_section

A utility umssync creates those and maintain them. It is available
from the same directory above (sunsite) in the file umsdos_progs-0.3.tar.gz.
A compiled version is available in umsdos-0.3a.bin.tar.gz.

So in our example, after mounting mnt, we do

umssync /mnt

This will promote this directory (a recursive option is available) to full
umsdos capabilities (long name ...). A ls -l before and after won't show
much difference however. The file which were there are still there. But now
you can do all this:

	chmod 644 *
	chown you.your_groupe *
	ls >THIS_IS.A.VERY.LONG.NAME
	ln -s toto tata
	ls -l

Once a directory is promoted, all subdirectory created will inherit that
promotion.

What happen if you boot DOS and create files in those promoted directories ?
Umsdos won't notice new files, but will signal removed file (it won't crash).
Using umssync in /etc/rc will make sure the DOS directory is in sync with
the --linux-.--- file. This is why it is called umssync. If you don't
touch those directory with DOS, then umssync is not needed since umsdos
take care of --linux-.---.

So umsdos allows you to logically organised your DOS partitions into
linux directories and DOS directories.

You want to install linux right in your DOS partition
======================================================

Few packaging are available which already support Umsdos. Slackware
is one. There are others (please those who already support umsdos
could you send me some email so I can add your package's name here).

Another option is to use my small installation kit available from the
same directory at sunsite. I am currently working on a new release.
The big idea is that it install from DOS (A:INSTALL ...) and is focussing
desktop user. Please stay tuned.

Supporting Umsdos installation (Umsdos as root fs) is not difficult.
Distribution makers, this is for you...

Installing is not much different than installing over an ext2.
The difference is that there is already data in the partition (DOS data)
and this data has to stay there and is unrelated to linux. The following
(oversimplified) script would install a bunch of package on an umsdos fs.

	mount -t umsdos /dev/hda3 /mnt
	umssync /mnt
	for i in *.tgz
	do
		cat $i | gunzip | (cd /mnt; tar xvf -)
	done

There is a problem. This will probably create the directories bin etc
tmp proc root usr var ... in the root of the DOS partition. The user
won't like it. He may even have those directories made for other purpose
on DOS. He won't be happy to see all those file into them.

Umsdos support a powerful trick to solve this. It is call "pseudo-root".
Instead of installing everything into the root of the DOS partition, install
everything into a subdirectory linux (C:\linux).

	mount -t umsdos /dev/hda3 /mnt
	mkdir /mnt/linux
	umssync /mnt/linux
	for i in *.tgz
	do
		cat $i | gunzip | (cd /mnt/linux; tar xvf -)
	done

When umsdos boot, it probes for a directory /linux/etc. If it exists, it
does some magic to move its root right in /linux and logically move
the real root into a virtual subdirectory /linux/DOS. All Linux utilities
will happily see their /bin /etc directory.

Note also that the real root is not "umssync'ed". A DOS directory may
contain a linux directory. Most linux user will never see --linux-.---
files.


The status of Umsdos
==================== 

Umsdos is now integrated in linux 1.1.35. It is reliable and won't crash
your disk. It is wildly used.

There are 2 known bugs with it.

1-A rename from a non promoted (pure DOS) directory to a promoted
  one fails and the file seems to vanish. The file is still there and
  applying umssync to the destination directory will show it again.

2-Unmounting the root partition (shutdown) fail, telling the root
  is not mount. This looks much disturbing but is not so bad. This is
  caused by the pseudo-root mode where / is not the real root so
  (in linux/fs/super.c) inode != inode->sb->s_mounted.

  Unmounting the root fs does very few things (set read only mode)
  so you can safely ignore the error message from shutdown.

I am working to fix those two. I am also working to increase performance.
Stay tune for this.

--------------------------------------------------------
Jacques Gelinas (jacques@solucorp.qc.ca)
Ever think of installing unix without partitionning ?
Use UMSDOS, and enjoy LINUX!

--
Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
PLEASE remember Keywords: and a short description of the software.
