Wer vom MacOS kommt ist es gewohnt, das ein Medium, das in ein Laufwerk geschoben wird, auch sofort und automatisch gemountet wird. Dies funktioniert bei Linux so nicht. Normalerweise muss man jedes Medium per Hand mounten. Mit dem Automounter kann man dies aber automatisieren, auch wenn man damit noch nicht den Komfort des MacOS erreicht. Der Automounter wird nämlich erst aktiv, wenn ein Zugriff auf das Medium erfolgt (genaugenommen ein Zugriff auf den dem Medium zugeordnenten Pfad). In diesem Moment versucht der Automounter das im betreffenden Laufwerk liegende Medium zu mounten. Nun aber zum praktischen:
Eigentlich muss man nur das Paket
autofs
(auf der LinxuPPC 1999-CD in der Version autofs-3.1.3.3.rpm
,
bei LinuxPPC 2000 in der Version autofs-3.1.3.9.rpm
oder im xinstaller in
Admin Tools
) installiert haben.
Nützlich ist auch noch das Packt eject
(eject-2.0.2-3.rpm
bei
LinuxPPC 1999; bei LinuxPPC 2000 ist es Teil des Basissystems und sollte installiert sein.)
Die wichtigste Voraussetzung ist jedoch, dass im Kernel die Unterstüyzung für den
automounter einkompiliert ist. Beim Standardkernel von LinuxPPC 2000 (2.2.15pre3) ist dies der
Fall, beim Standardkernel von LinuxPPC 1999 (2.2.6-15apmac) nicht. In diesem Fall muss man sich entweder
einen Kernel mit autofs-support aus dem Netz besorgen (der Standardkernel von LinuxPPC 2000
sollte es eigentlich auch mit LinuxPPC 1999 tun) oder einen eigenen Kernel bauen, bei dem man
autofs
einschaltet.
Genaugenommen überwacht der Automounter nicht Medien sondern Pfade, auf denen dann die Mountpoint der einzelnen Medien liegen. Wird nun auf einen der überwachten Pfade zugegriffen tritt der Automounter in Aktion.
Welche Pfade überwacht werden sollen, regelt die Datei auto.master
.
Vom autofs
-Packet wird folgende Beispieldatei installiert (die Kommentare lasse ich weg):
/misc /etc/auto.misc --timeout 60
Diese Zeile bewirkt, dass der automounter den Pfad /misc/
überwacht und wenn
dieser Pfad angesprochen wird, in der Datei) /etc/auto.misc
, der sogenannten map,
nachguckt, was zu tun ist.
Für jeden überwachten Pfad muss eine Map existieren. Die letzte Spalte hier ist optinonal.
Sie enthält Optinen des Automounter, die für die gesammte Map gelten sollen.
Meistens wird dies die hier angegebene Option --timeout Sekunden
sein.
Sie gibt an nach welcher Zeit der Inaktivität[1]
der betreffende Pfad bzw. das betreffende Medium geumountet, d.h. freigegeben werden soll.
Es wird dabei aber nicht ausgeworfen (siehe Mehr Eleganz)
Wie bereits erwähnt liegen in den überwachten Pfaden die eigentlichen Mountpoints.
Der Automounter wird nun eigentlich erst dann aktiv, wenn auf einen der Mountpoints in
einem der überwachtet Pfade zugegriffen wird. Dann guckt er in die entsprechende Map-Datei nach
und handelt wie dort angegeben. Bei der Standardinstallation findet er in
/etc/auto.misc
:
kernel -ro,soft,intr ftp.kernel.org:/pub/linux cd -fstype=iso9660,ro :/dev/cdrom
Was bedeutet dies nun?
Fangen wir mit der zweiten Zeile an:
Wenn auf den Pfad /misc/cd
zugegriffen wird,
wird der das Medium mit dem Device /dev/cdrom
mit den Optionen -fstype=iso9660,ro
.
Diese Optionen sind die üblichen mount-Optionen
(mehr dazu vielleicht mal an anderer Stelle, etwas steht schon hier).
Hinzu kommt lediglich die Option -fstype=
, die angibt welches Dateisystem das Medium hat.
Abweichend von den Voreinstellungen würde ich übrigens bei CD's
-fstype=auto,ro
empfehlen.
Der ':
' vor dem device soll nur andeuten,
dass es sich um einen Divece auf dem lokalen Rechner handelt
(in Anlehnung an die Syntax bei NFS-Partitionen s.u.).
Mit dem Automounter kann man nicht nur auf lokale Medien zugreifen, sondern auch auf einfernte Partitionen, z.B. NFS-Partitionen oder sogar auf ftp-Server, wie in der ersten Zeile der Map der Standardinstallation angegeben (auch wenn ich es noch nie ausprobiert habe).
Um auf NFS-PArtitioen zuzugreifen bracuht man folgende Zeile in der map /etc/auto.misc
(Und das habe ich ausprobiert! ;-) ).
Sie bewirkt,
dass die Pfad /home
auf dem Rechner golem
unter /misc/golem
eingebunden wird. Voraussetzung ist natürlich das golem
den Pfad /home
auch wirklich an unseren Rechner exportiert,
d.h. zum Filesharing mit uns freigegeben hat[2].
golem -fstype=nfs golem:/home
Noch eine wichtige Anmerkung: Damit der Automounter arbeiten kann, müssen alle Mountpoints existieren, d.h. als (leere) Verzeichnisse angelegt sein. Sonst tut der Automounter nix.
Zwar installiert der Automounter schon eine parktische Map. Aktiviert ist er deshalb noch lange nicht, d.h. normalerweise läft er noch nicht (so als wäre unter MacOS eine Systemerweiterung unter 'Systemerweiterungen (Aus)' installiert worden). Um ihn nun zu Aktivieren, gibt es ein init-Sktipt (mehr zu Runlevel und init-Skripte). Dies kann man entweder per Hand starten:
/etc/rc.d/init.d/autofs start
oder dies (besser!) gleich beim Booten erledigen zu lassen.
Dazu legt man in den Verzeichnissen der gewünschten Runleveln
(ich würde bei LinuxPPC 2,3 und 5 vorschlagen)
entsprechende Links an (z.B. in /etc/rc.d/rc5.d/
):
ln -s ../init.d/autofs S92autofs
Interessanterweise wurden die K-init-Skripte vom Paket autofs
gleich mitinstalliert.
Wir brauchen uns also darum nicht mehr zu kümmern.
Schön ist es ja nicht, die CD immer über /misc/cd
anzusprechen.
Es geht aber auch eleganter. Den Mountpoint /misc/cd
brauchen wir zwar weiterhin.
Aber wird können ihn hinter einem symbolischen Links
(mehr zu symbolischen Links)
verstecken und das ganze funktioniert immer noch. Also z.B.
cd / ln -s /misc/cd cd
und man Kann für die CD über /cd
zugreiffen.
Man kann sogar einen symbolischen Link auf eine Verzeichnis innerhalb eine autozumountenden Mediums legen.
Dies hat den zusätzlichen Vorteil, dass man die Mountpoints auch jederzeit sieht.
Der Automounter versteckt diese nämlich,
so dass man bei laufendem Automounter die Mountpoints nicht mehr zu finden sind, solange
kein Medium auf ihnen gemountet ist.
Um schleisslich Wechselmedien aus dem Rechner zu bekommen ohne sich nach dem Auswurfknopf zu bücken
gibt es das Kommando eject
. So schmeisst
eject /misc/cd
die CD raus. Leider funktionieren über die symbolischen Links nicht :-(.
Damit dies auch also "Normaluser" geht, muss man noch zu einen kleinen Trick greifen.
Dazu muss man in der /etc/fstab
ein Zeile für das
Medium einrichten. Da einige device nur symbolische Links (z.B. /dev/cdrom
) und eject mit diesen
nicht funktioniert, muss man zunächst die 'wahren' devices heraus finden.
Dazu guckt man sich diesen device einfach mit dem Kommando
an.
Bei mir entspriccht z.B.
ls -l device-file
/dev/cdrom
dem device /dev/hde
Nun richtet für diesen device und den betreffenden Mountpoint des automounters eine
Zeile für in der /etc/fstab
ein, die z.B. so aussehen könnte:
/dev/hde /misc/cd auto noauto,user,exec 0 0
Nun funktioniert eject /misc/cd
auch für normale User.
Wichtig ist dabei die 'user
' und die 'noauto
' Option nicht vergessen wird.
Erstere bewirkt, dass auch 'normale' Nuzter diese Medium umounten und auswerfen dürfen, letztere
dass nicht schon beim Booten versucht wird, dieses Medium zu mounten.
Das soll ja erst später der Automountrer tun.