Was ist der Automounter und wie benuzte ich ihn?

  1. Einleitung
  2. 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:

  3. Vorausssetzungen
  4. 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.

  5. Einrichtung
  6. 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.

    auto.master

    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)

    Die Map

    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.

    Aktivierung

    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.

    `

  7. Etwas mehr Eleganz
  8. 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

    ls -l device-file

    an. Bei mir entspriccht z.B. /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.


Anmerkungen

  1. Ein Pfad ist erst dann inaktiv (d.h. nicht "busy"), wenn keine Shell mehr ihr aktuelle Verzeichnis dort oder auf einem Unterverzeichnis zu stehen hat und keine Dateien mehr in einem der Unterverzeichnisse diese Pfades geöffnet sind.
  2. Das Filesharing bei UNIXen funktioniert etwas anders als bei MacOS. Pfade werden hier nicht für bestimmte Benutzer freigegeben, sondern an bestimmte Rechner. Das dann doch nicht jeder Benuzter auf beliebige Datei dort zugreifen kann wird über die üblichen Dateirechte geregelt (genauso wie bei Dateien verschiedener Nutzer auf demselben Rechner).

Rüdiger Goetz
Last modified: Sun Apr 30 10:32:30 CEST 2000