Benutzer:Deutschercomputerfreak/Automounter
Automounter
Einleitung
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.
Vorausssetzungen
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.
Einrichtung
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: /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 optional. Sie enthält Optionen 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 prüft 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
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 . Hinzu kommt lediglich die Option -fstype=, die angibt welches Dateisystem das Medium hat. Abweichend von den Voreinstellungen wäre übrigens bei CD's -fstype=auto,ro empfehlendswert.
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 [[Partition[[en, z.B. NFS-Partitionen oder sogar auf FTP-Server, wie in der ersten Zeile der Map der Standardinstallation angegeben.
Um auf NFS-Partition zuzugreifen braucht man folgende Zeile in der Map /etc/auto.misc. 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(Datenklau) mit uns freigegeben hat[2]. golem -fstype=nfs golem:/home
Damit der Automounter arbeiten kann, müssen alle Mountpoints existieren, d.h. als (leere) Verzeichnisse angelegt sein. Sonst funktioniert der Automounter nicht.
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 ( bei LinuxPPC 2,3 und 5 ) 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. `
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. 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 dieses Medium mounten und auswerfen dürfen, letztere dass nicht schon beim Booten versucht wird, dieses Medium zu mounten. Das soll ja erst später der Automounter tun.
Anmerkungen
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. 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).