Login


 
Newsletter
Werbung

Fr, 29. März 2002, 00:00

Automatisches Mounten/Unmounten mit autofs

Dieses Tutorial zeigt, wie man auch unter Linux das Mounten/Unmountenunter Zuhilfenahme von autofs automatisieren kann, damit Wechselmedien auch über ihre Auswurftaste ohne vorheriges manuelles Unmounten ausgeworfen werden können.

Vorwort

Jedem, der von Windows oder MacOS umsteigt, fällt sicher das Verhalten der meisten Linux-Distributionen beim Umgang mit Wechselmedien auf. So ist es beispielsweise nicht möglich, eine CD ohne vorheriges Unmounten auszuwerfen, auch wenn keine Anwendung auf die CD zugreift. Oberflächen wie KDE bieten dazu eine Funktion, die vor dem softwaregesteuerten Auswurf das Unmounten in einem Schritt erledigt, andere Leute schreiben sich Shellskripte, die umount und eject nacheinander aufrufen. Dieses Tutorial zeigt, wie man auch unter Linux diesen Prozess unter Zuhilfenahme von autofs automatisieren kann, damit Wechselmedien auch über ihre Auswurftaste ohne vorheriges manuelles Unmounten ausgeworfen werden können. Anders als im Beitrag von Jörn Eisenkrätzer wird auf den Einsatz von supermount verzichtet, das in einigen Fällen, z.B. SMP-Kernel, Probleme machen kann und das Patchen der Kernelquellen erfordert. Grundsätzlich leisten aber beide Verfahren das Gleiche.

Voraussetzungen

Für die Einrichtung von autofs benötigt man:

  1. u.U. die Kernelquellen, z.B. von Linux Kernel Archives oder aus der verwendeten Distribution.
  2. den Userspace-Daemon zu autofs vom FTP-Server. Ich habe die Version autofs-4.0.0pre10 genommen.

Vorgehen

Kernel anpassen

Zunächst sollte in Erfahrung gebracht werden, ob der installierte Kernel nicht schon autofs oder autofs4 einkompiliert hat. In der Konfigurationsdatei zum Kernel sollte also eine der folgenden Zeilen zu finden sein:

CONFIG_AUTOFS4_FS=m
CONFIG_AUTOFS4_FS=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS_FS=y

Gute Karten hat auch, wer in einem Unterverzeichnis von /lib/modules/<aktueller Kernel> das Modul autofs.o oder autofs4.o findet (in der Regel unter kernel/fs/autofs bzw. autofs4).

Falls das autofs nicht im Kernel enthalten ist, sollte es in der Kernelkonfiguration unter File Systems/Kernel automounter version 4 (also supports v3) aktiviert werden. Anders als in der Hilfe zu diesem Menüpunkt erwähnt, muss NFS nicht aktiviert werden, um autofs benutzen zu können. Nach erfolgreicher Modulkompilierung mit

make modules
make modules_install

wird in /etc/modules.conf bzw. /etc/conf.modules

alias autofs autofs4

eingetragen.

Daemon installieren

Die Userspace-Tools von autofs werden installiert (z.B. per RPM oder Selbstkompilat), näheres in der README zu autofs. Das Installieren per RPM ist trivial und auch das Kompilieren geht ruckzuck.

Konfiguration

Im folgenden gehe ich von zwei CDROM-Laufwerken aus, die über die Devices /dev/cdrom und /dev/cdrom1 ansprechbar sind und auf /mnt/cdrom und /mnt/cdrom1 gemountet werden. Diese Angaben sind jeweils durch die tatsächlich verwendeten Device-Namen und Mountpoints zu ersetzen.

  1. Autofs benötigt ein Verzeichnis, in dem bei Einlegen von Wechselmedien die zugehörigen Unterverzeichnisse automatisch erstellt werden. Sinnvoll ist z.B. /vol für Volume, das als Root erzeugt wird, falls es (und das ist die Regel) noch nicht verhanden ist:

    mkdir /vol
    chmod 755 /vol
    
  2. Die Konfiguration der Mountpoints geschieht in /etc über die Datei auto.vol nach folgendem Vorbild:

    # 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
    cdrom -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
    cdrom1 -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom1
    
  3. Damit der Daemon automatisch beim Start hochgefahren wird, erstellt man im Verzeichnis /etc/init.d (dieser Pfad kann je nach Distribution auch anders lauten) die Datei autofs:

    #!/bin/sh
    #
    # autofs This script starts autofs
    #
    insmod autofs4
    /usr/sbin/automount -t3 /vol file /etc/auto.vol
    exit 0
    

    die durch

    chmod 755 autofs
    

    ausführbar gemacht wird.

    Wenn autofs nicht als Modul geladen wird, sondern fest im Kernel steckt, fällt die Zeile mit insmod einfach weg. Der Wert 3 steht übrigens für den Timeout, nach dem ein Laufwerk unmounted wird und kann entsprechend den eigenen Vorlieben angepasst werden.

    Obiges Skript ist sehr simpel gestrickt, autofs bringt auch ein Beispielskript mit, das seine Konfiguration aus der Datei /etc/auto.master ausliest und noch einiges mehr kann, für unsere Zwecke reicht aber die Kurzfassung.

    Mit einem SysV-Init Editor wird dafür gesorgt, dass dieses Skript auch im normalerweise gefahrenen Runlevel gestartet wird.

  4. Ist man gewohnt, seine CDROM-Laufwerke über /mnt/cdrom o.ä. anzusprechen und möchte das auch in Zukunft tun, hilft folgender Trick:

    Die Mountpoints werden gelöscht (mit rmdir als Root) und durch symbolische Links ersetzt:

    rmdir /mnt/cdrom
    ln -s /vol/cdrom /mnt/cdrom
    

    Für die weiteren CDROM-Laufwerke ist genauso zu verfahren, wobei der Bezeichner cdrom durch die korrekten Teilpfade ersetzt wird, z.B. cdrom1.

    Beim Verzicht auf diese Links ist es nicht möglich, im Verzeichnis /vol die Wechsellaufwerke zu browsen, sondern nur durch den direkten Zugriff auf das jeweilige Verzeichnis (/vol/cdrom im obigen Fall) wird das Laufwerk eingehängt. Der symbolische Link leistet eben diesen initialen Zugriff.

Das Ergebnis

Nach einem Neustart (oder manuellem Aufruf des Services autofs) können eingelegte CDs durch einfachen Zugriff auf die gewohnten Mountpoints gelesen werden, ohne vorheriges Mounten. Ein Druck auf den Auswurfknopf oder softwaregesteuert mit eject entfernt die CD aus dem Laufwerk ohne den Zwang zum Unmounten (natürlich nur, wenn das Laufwerk durch keinen Prozess blockiert wird).

Referenzen

Jeder, der autofs noch etwas weiter ausreizen möchte, oder noch Fragen hat, sollte in die folgenden Quellen schauen, die auch Grundlage diese Tutorials sind:

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung