draheim
@informatik.hu-berlin.de
Software
-Sourceforge
- about the autor
- pTA study
- largefile *
- AutoFS howto
2
Bigger Projects
- PFE Forth *
- AC-Archive *
- ZzipLib *
- XML/g *
- C.L.F.R. *
- XM Tool *
Smaller Projects
- SDLstretch *
- errno(1)
- glib-man
- gstdint
- wine-vol-a
Older Projects
- MPEG split *
- XFCE *
- htm1-pp
- cc-headers
- runso
- substruct
- submorph
- xwpe
- xfce 3
sitemap
-guidod-pygtk
2006-11-07
(C) Guido Draheim
guidod@gmx.de
generated by
mksite.sh
|
HowTo Setup Linux AutoFS
|
First of all, let me tell you that I am a fan of the supermount
feature that had been floating around a long time but Linus was
stupid enough to overlook the potential for benefit to home pc
and work pc users. He seems to be more interested in bringing
linux all that SMP stuff for extreme-used webservers and other
LAN server stuff. Yes, we all can benefit from this as it makes
the OS better in lots of ways, but at the same time some of the
changes do simply break the supermount feature over and over
again. The supermount feature does currently work fine with all
devices that can signal their state to the kernel, most prominently
the modern ATAPI cdrom device which can tell to the software when
the tray opens, so that the kernel can always be sure that the same
disk is in there. But for stupid devices like a floppy disk the
supermount logic will be broken in every third linux minor version
you get - just don't count on it.
Maybe I have to note that even RMS (Richard M. Stallman) has asked
on the linux-kernel mailinglist whether linux could be made to support
a logic just like windows/msdos had with their drive letters, at least
somewhat similar, and everybody pointed to supermount as the name of
the feature. However, the supermount logic is not the only answer to
the actual problem - all we really want is to insert a cdrom or floppy
disk into its drive and then just access it, read it, write it, and
take it out again with no mysterious "mount" and "unmount" commands
inbetween - or see the cdrom drive locked when forgetting about it.
The other answer to the problem is generally called "automounter" and
some kind of automount facilities and automount daemons have a long
tradition in unix history - with the bsd automounter having the fame
to have been popular for quite a time. The linux kernel does now ship
the necessary stuff to setup an automount daemon, and these features
work reliably. Furthermore, all linux distributions
will ship along the autofs daemon and init.d startup script to start
the automounter - and preinstall an /etc/auto.master and
/etc/auto.net configuration file. AFAICS, Mandrake is
the only distribution to ship a default kernel with supermount, whereas
autofs is available in all distributions.
|
Well, if that would be so easy, there would no need to make up a howto
about this feature, you know - the autofs feature is not actually meant
for drives with removable media (so is the technical term) but it was
meant to automount harddisk on another PC, somewhat like a windows
network share in SMB speak, similar to what the samba service can do
for you. This automount scheme means that you just need to try to
access a /net-path (as specified in /etc/auto.net)
and the harddisk partition will be mounted to your local disk tree for
just as long as you need it. When there is no activity on the net-volume
then the automounter will automatically unmount the network-share again,
and usually this is done after a couple of minutes - just compare this
with your favourite screensave that blanks your monitor after a few
minutes (or even "lock"s the desktop) and so does the automounter
daemon - it will "sync" all changed-data back to the net-volume and
unmount it, just to be safe since the other PC could possibly get shut
down somehow.
However, we can use the automount feature for us and some removable
media type drives on the local computer - the trick is that we do not
use an umount-timeout of 600 seconds (the internal default of the
autofs daemon) and we do not use 60 seconds either (which is the usual
default that most init.d/autofs scripts will use or which you
will find as "--timeout 60" in the /etc/auto.master file) but
we use a much shorter value - something that a common user will not
recognize as a timespan or anything the user could get nervous about
when waiting. Just choose a timespan between 3 seconds and
6 seconds and it will work. If you are going to install the autofs
feature for a user who does not know about mount/umount in the first
place, then it is a good idea to use 3 seconds.
That way, you can write some data to the floppy disk, and about three
seconds later the computer will actually write the data as the magic
"unmount" will have to sync the data back that was just cached before
in the PC core. Likewise there is no problem when you just read some
data of the cdrom and then quickly try to open the tray
with the button on the forefront. It might happen that you see
the disk locked in - but the next hit on the button will finally open
it and give the CD back to you. Well, unless of course some shell of
yours is currently still chewing on the directory of the disk itself.
Sometimes you have to look through your "file commanders" and see to
get out of the cdrom's directory so that the automounter can do the
actual "unmount".
|
The Installation
|
On RPM based systems like Mandrake, Red Hat or SuSE installation - if
it has not been installed by default - is pretty simple: just install
the autofs rpm using any of the package managers. These distributions
all ship autofs RPMs with their CDs, no need to go hunting for it on the net.
For Mandrake the quickest way to install autofs would be "urpmi autofs"
from a command line. And make sure to disable supermount as it might clash
with autofs: backup your fstab with "cp /etc/fstab /etc/fstab.supermount"
and then issue a "supermount -i disable" which will remove the supermount
tags from the current fstab.
To actually set up the data, I do recommend that you do not add the
removable-media entries to the /etc/auto.net file - that
would be misleading the user. Restrict /etc/auto.net to
hold disks shared on other computers or atleast disk partitions being
network centric and shared with other computers on your network.
Instead, create a new file called /etc/auto.vol since the
term "vol" is the traditional unix-centric name of what we are about
to do - "vol" is short for "volume" and you might want remind yourself
of an analogy of a cd-changer with a dozen disk in the box but just one
drive to actually read one cd at a time. Likewise, the access path
should start at "/vol" on your local system and the "volumes" under
that top-directory should be numbered - usually with a name-prefix
telling the type of cd-changer or the computer holding the volumes. A
traditional name would say "cd-1" or "pc3-hdd".
In this example, I will use the dos-like names of our removable media
called "/vol/a" and "/vol/d" for the floppy and cdrom drive - this is
in a way a numbering-scheme starting at "a", passing "d" and "e" and
going up to "z". Many linux distributions will start to setup a
scheme like "/mnt/floppy" but I guess you are fine with "/vol/a" too,
and at the same time this is a traditional unix way. Nice eh! :-)
okay, here is your new /etc/auto.master
# Sample auto.master file
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
## /misc /etc/auto.misc --timeout=60
## /net /etc/auto.net --timeout=60
/vol /etc/auto.vol --timeout=3
Note that I did remove the "sample" /misc and /net mountpoints
since my home pc does not have a use for them. To let the timeout
be passed right there in the /etc/auto.master happens to be
a relativly new feature with linux, many older distributions will
require to set a install-variable (e.g. suse 6.x) and in some cases
you even have to modify the init.d/autofs file.
Then (mkdir /vol ; chmod 775 /vol) to create
the mountpoint on your disk - most linux distribution do not have
this old/common directory, they just have "/mnt" which is used for
some other taks too (e.g. the installation CDs might get mounted
there) and so we do not want to abuse it. Next we create the
/etc/auto.vol file.
|
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
a -fstype=auto,rw,sync,umask=002 :/dev/fd0
d -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
which assumes you already have a symlink /dev/cdrom pointing to
your cdrom drive (which might be actually /dev/hdb).
And basically, this is it, now you need to restart the autofs
daemon using (/etc/init.d/autofs stop ; /etc/init.d/autofs start)
and you can start accessing "/vol/a" and "/vol/d". Well, you could
of course make a some new icons on your KDE desktop - just rightlick
on the background and click on "new URL", then enter an URL as
"file:/vol/a" and choose an icon represting a floppy. The next time
that you click on that icon, a file-manager will pop up with "/vol/a"
in its view - which is the floppy disk of course.
|
Doing More With It
|
This scheme with an icon is however needed for another reason - to
guess why, just let your file-commander point to "/vol". So, what do
you see. What? Nothing? Well, that's good - as long as there is no
mounted volume then there should not be an entry. This is very, very
important: about once a day, some cron script will run over your
harddisk and look for trash files, and cleaning
up other stuff like compressing manual pages and such stuff. Nothing
important, but this script will often run the whole file tree
and when it comes to a directory like "/vol" it will scan all the
subdirectories of it - being possibly removable media which are not
there (which would not be that much of a problem - the subdirectory
would be empty). But when they are there then it will happily scan
your cdrom disk. And that is not what you want, right?
At the same time, this is also a problem for all those point-n-click
programs being around. Just try to open an image in "gimp" being on
the floppy disk. The gimp's "file open" dialog box will open up and
let you choose the file in the file tree, but the "/vol/a" directory
does not yet exist and there is now way to just say "/vol/a" to get
a list of files. You would have to remember the path and filename
on the floppy - which is not quite convenient. But again, there is a
way around it: create symlinks. The cron-find daemon above will not
walk across symlinks since he knows that a symlink will end at a real
file or directory that he will come across at another time too - and it
would not be good to scan a directory twice.
On the other hand, a symlink is just some text, so it does not mount
the disk unless of course someone is trying to read the symlink in
the process of trying to open the thing being at the other end of the
symlink. In that moment, the disk gets locked&mounted in the cd drive
making the "/vol/a" path to magically appear in that very moment. Just
try yourself - insert a floppy, and do (ln -s /vol/a /A) create a
symlink for "/vol/a" as the name "/A". Now wait three seconds, so that
the floppy gets unmounted. Run (ls /vol) - and see nothing, just an
empty directory. Then run (ls /A ; ls /vol) and see the "/vol/a"
directory to be there since you accessed it through "/A" in less
than three seconds before. This will also work in "open-file" dialog
boxes - just use "/A" instead of "/vol/a".
|
Well, you may have guessed now why we called it "/vol/a". If you
go and install "cygwin" or some other unix-emulation under windows,
then this unix-layer will map the local "A:" to "Z:" drives as
direct unix-tree paths calling them "/A" to "/Z". We simply adopted
this naming scheme for a true unix system to access the floppy that
our windows would call "A:". I expect most users to be able to
remember this mapping as "/A". Right? :-)
But we can go even beyond that (which I actually do on my system)
and map the msdos/windows drives too. Well, this assumes that your
linux installation has detected the win98 partitions on
your harddisk and has put them into your /etc/fstab.
In many cases, these disk partitions are mounted permanently
to the effect that the cron-find scripts will search these drives
too while running once a day. Well, this is unnecessary, so let's
remove the corresponding lines from /etc/fstab and add
them instead to /etc/auto.vol .. including setting up
symlinks for easy access.
Even more, I use some of my harddisk as a backup storage and
as a backside storage so I can put the mandrake rpms (or the
complete cooker rpms) on that extra partition. And since it
is accessed through an autofs point, it will not be searched by
the cron-find daemon nor will I be able to wrongly delete
some stuff there by mistake - it is another partition anyway.
To get yet another benefit, just remember those startup times
when the screen says "mounted too many times, check forced" and
runs "fsck" on your "fstab"-partitions. The "auto.vol" partitions
however are not listed in "fstab", so that "fsck" would have to
be run manually .. once a year. Since it is just some backup
storage, this is not a problem anyway - I do not run programs
on those partitions.
After all my, /etc/auto.vol looks like this last table:
|
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
## kernel -ro,soft,intr ftp.kernel.org:/pub/linux
a -fstype=auto,rw,sync,umask=002 :/dev/fd0
c -fstype=auto,rw,sync,umask=002 :/dev/hda1
d -fstype=auto,rw,sync,umask=002 :/dev/hda5
e -fstype=auto,rw,sync,umask=002 :/dev/hda6
m -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
n -fstype=iso9660,ro,nosuid,nodev :/dev/scd0
# the following entries are samples to pique your imagination
#boot -fstype=ext2 :/dev/hda1
#floppy -fstype=ext2 :/dev/fd0
#e2floppy -fstype=ext2 :/dev/fd0
#jaz -fstype=ext2 :/dev/sdc1
#removable -fstype=ext2 :/dev/hdd
02 -fstype=auto :/dev/hda2
07 -fstype=auto :/dev/hda7
12 -fstype=auto :/dev/hda12
13 -fstype=auto :/dev/hda13
1 -fstype=auto :/dev/hdd1
3 -fstype=auto :/dev/hdd3
5 -fstype=auto :/dev/hdd5
6 -fstype=auto :/dev/hdd6
7 -fstype=auto :/dev/hdd7
8 -fstype=auto :/dev/hdd8 |
| |
last modified 09/2002
(prior version)
|