Mounten unter Linux. Was bedeutet Mounten?
Bevor man sich mit dem Begriff "mounten" beschäftigt, sollte man sich einmal mit der Dateiverwaltung von Linux beschäftigen. Anders als Windows, wo man die einzelnen Laufwerke (Festplatte, Partitionen, ) als "C:\", "D:\", "E:\", etc bezeichnet, gibt es bei Linux eine allgemeine Verzeichnisstruktur, welche für die einzelnen Laufwerke keine Extra-Laufwerksbezeichnungen vergibt. Die Linux-Dateiverwaltung wird auch als Wurzelstruktur beschrieben, denn ausgehend von dem Wurzelverzeichnis ("/") folgen sämtliche Unterverzeichnisse, so dass die grafische Darstellung der Dateien und Verzeichnisse das Abbild einer Wurzel Darstellen. Lange Rede, kurzer Sinn: Linux besitzt nur ein Laufwerk (also nur ein "C:\", was bei Linux Root- oder Wurzelverzeichnis heißt), integriert alle anderen Laufwerke und Partitionen in dieses Wurzelverzeichnis.
Verzeichnisstrukur von Linux ähnelt einer Wurzel
Die Datei book.html hat also den Pfad
/home/User2/Favoriten/book.html
Linux hängt die Laufwerke (CD-ROM, Festplatte, USB-Sticks, etc) unmittelbar in das Dateisystem ein. Die Laufwerke müssen "gemountet" werden, damit sie in das Dateisystem eingehängt werden. Linux verwaltet die Laufwerke dann wie ein herkömmliches Verzeichnis. Man kann sich das grob so vorstellen, dass man auf dem Dateisystem einen Ordner anlegt, in dem sich die Dateien des Laufwerks befinden. Und das macht man halt über das Mounten. Das gilt nicht nur für Laufwerke, sondern bsp. auch für Freigaben. In der Datei "/etc/fstab" legt man fest, wo genau welches Laufwerk eingehängt werden soll, damit man es später mit dem Befehl "mount [Gerät]" bzw. "umount [Gerät]" mounten bzw. wieder aushängen kann.
Beispiel: CD mounten
Nun ein Beispiel, um das ganze etwas verständlicher zu machen: Um auf den Inhalt einer CD zugreifen zu können, muss das CD-Laufwerk in das Dateisystem eingehängt werden. In der Regel hat man sich ein Verzeichnis erstellt, wo man sein CD-Laufwerk einhängt. Um die Übersicht zu behalten, erstellt man die Verzeichnisse zum Mounten in /mnt/. Wichtig: In der Regel darf nur der Root-Benutzer (Administrator) Laufwerke mounten! Sie müssen sich ggf. als Root anmelden.
mkdir /mnt/mount_cdrom
mount /dev/cdrom /mnt/mount_cdrom
ls /mnt/mount_cdrom
// Erstellen eines beliebigen Verzeichnisses
// Mounten der CD in das Verzeichnis
// Anzeigen des CD-Inhalts
In dem Verzeichnis /dev/ befinden sich alle Geräte, also Festplatten, Laufwerke, Partitionen, etc. Dies sind aber nur die "physischen Adressen", denn man kann nicht darauf zugreifen. Mit dem oben genannten Mount-Befehl "mount /dev/cdrom /mnt/mount_cdrom" sagt man dem System, dass es das CD-ROM-Laufwerk an /dev/cdrom in das Verzeichnis /mnt/mount_cdrom/ einhängen und somit Zugriff auf das die Daten haben soll.
Wenn man sich mit dem Befehl "ls /dev/" den Inhalt des /dev/-Verzeichnisses anzeigen lässt, wird man schnell seine Festplatten, Partitionen, Laufwerke, etc. sehen. Diese kann man natürlich auch mounten. So könnte man beispielsweise seine Zweite Festplatte mounten. Der Befehl dazu könnte "mount /dev/hdb1 /mnt/mount_zweite_festplatte" lauten.
Weiteres Beispiel: Mounten eines Netzlaufwerks
Jede erdenkbare Datenquelle muss man mounten, also in das Dateisystem einhängen und somit die Daten vom Datenträger zugänglich machen. So ist es auch möglich, Netzwerkfreigaben in sein System einzuhängen und somit auf die Daten eines anderen Rechners im Netzwerk zuzugreifen. In diesem Fall wird eine Freigabe eines Windows-Rechners gemountet. Vorraussetzung für den Zugriff ist eine funktionierende Installation von Samba (diese Software ermöglicht den Zugriff von Linux- auf Windows-Rechnern und umgekehrt)
### Netzlaufwerk wird nach /mnt/lan/
//192.168.2.3/D smbfs /mnt/lan/
### mit DNS (oder '/etc/hosts') und mit Passwort
//roland/D /mnt/lan/ smbfs username=,password=123456,noauto 0 0
### Hier mit zusätzlichen Parametern
//roland/D /mnt/lan/ smbfs uid=subby,gid=users,username=,password=123456,rw,noauto 0 0
Automatisches Mounten über die Datei /etc/fstab
Jedes Mal die kompletten Befehlsparameter einzutippen, ist auf Dauer ziemlich lästig. Aus diesem Grund gibt es eine zentrale Datei /etc/fstab, in der man die gewünschten Datenträger automatisch beim Starten mounten lassen kann. Hier ein Auszug aus einer typischen fstab-Datei:
"PARTITION" /dev/hdb2 /dev/hdb4 /dev/hdb3 /dev/hdb1 /dev/cdroms/cdrom0 /dev/fd0 //192.168.0.1/Daten //192.168.0.1/distfiles | "MOUNTPOINT" /boot / none /mnt/win /mnt/cdrom /mnt/floppy /mnt/mnt_daten /usr/portage/distfiles/ | "DATEISYSTEM" ext2 xfs swap vfat iso9660 auto smbfs smbfs | "MOUNT-OPTION" noauto,noatime noatime sw auto noauto noauto noauto noauto | "DUMP / FSCK" 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
Die Einträge in der fstab sind relativ selbsterklärend, wenn man einmal das Prinzip verstanden hat. In diesem Beispiel sind die ersten vier Einträge die Mountpunkte der Festplatte. Auf der Festplatte befinden sich insgesamt vier Partitionen, wobei sich auf der ersten Partition (hdb1) Windows , auf der zweiten (hdb2) das Bootverzeichnis, auf der dritten (hdb3) das Auslagerungsverzeichnis (Swap) und auf der vierten (hdb4) die eigentliche Linux-Installation befinden. Um Beispeilsweise von Linux aus auf die Windows-Installation zugreifen zu können, wurde das Verzeichnis /mnt/win/ angelegt und in der fstab-Datei festgelegt, dass die erste Partition (hdb1, hier wurde ja Windows installiert) in dieses Verzeichnis eingehängt werden soll. Der anschließende Eintrag "FAT32" bezieht sich auf das Dateisystem des jeweiligen Datenträgers. Hier kann man gegebenfalls auch auto eintragen, dann versucht Linux das entsprechende Dateisystem herauszufinden. Wichtig ist, dass die Dateisysteme auch im Kernel einkompiliert wurden. Das fünfte Feld wird von dump benutzt um festzustellen, ob die Partition gesichert werden soll oder nicht. Normalerweise läßt man diesen Wert auf 0 (Null). Das sechste Feld wird von fsck ausgelesen um festzustellen, ob es nach unsauberem Herunterfahren des System nötig ist das Dateisystem auf Inkonsistenz zu prüfen. Das Root-Dateisystem sollte in diesem Feld eine 1 haben; alle anderen Dateisysteme eine 2 (Dateisysteme, bei denen keine Prüfung notwendig ist eine 0).
Nach dem Eintrag für die Dateisysteme legt man fest, ob die Laufwerke automatisch oder manuell eingebunden werden sollen. Setzt man diesen Wert auf "noauto", so muss die Laufwerke separat mit dem Befehl "mount" in das Dateisystem einhängen, um dort zugreifen zu können.
Dieses Prinzip wendet man alle Datenträger an, die an dem Rechner angeschlossen werden oder auf die man zugreifen möchte. In diesem Beispiel befinden sich auch ein CD-Laufwerk (/dev/cdroms/cdrom0) und ein Diskettenlaufwerk (/dev/fd0). Diese müssen natürlich auch in der fstab eingetragen sein. Eine weitere praktische Möglichkeit ist das festlegen von Netzlaufwerken in der fstab, denn dann muss man nicht den langen Befehl in die Konsole eintippen, sondern es reicht in diesem Fall ein kurzes "mount /mnt/mnt_daten". Oder man lässt die Netzwerklaufwerke automatisch beim Booten mounten.
Die eigenen Linux-Partitionen müssen in der fstab vorhanden sein, ansonsten bootet Linux nicht. Aber andere Datenträger wie ein CD-Laufwerk müssen nicht zwingend eingetragen werden. Doch der Vorteil, diese in die fstab zu notieren, liegt in der kürzeren Befehlszeile. Hat man ein Laufwerk nicht in der fstab stehen, muss man die kompletten Kommandos samt den Parametern eingeben, beispielsweise
"//roland/D /mnt/lan/ smbfs uid=subby,gid=users,username=,password=123456,rw,noauto 0 0" .
Das kann auf Dauer ziemlich nervend sein. Aus diesem Grund gibt es die Datei fstab, denn vor dem Mounten schaut das System in die fstab nach einem entsprechenden Eintrag. Hat man die Netzlaufwerkfreigabe wie oben in die fstab eingetragen, reicht ein kurzes "mount /mnt/lan/".
Parameter für den Mount-Befehl
Für den Mountbefehl gibt es natürlich mehrere Paramater. Im folgendem wird aber nur auf die wichtigsten Parameter eingegangen, denn die komplette Beschreibung des Mount-Befehls würde den Umfang dieses Artikels sprengen. Sollten daher noch Fragen offen bleiben, so sollte man einen Blick in die Manpage von mount (Der Befehl lautet: man mount) schauen.
Ein. wichtiger Parameter ist die Angabe des Dateisystems, dass man in der Regel angeben muss. Eine Windows XP-Partition benutzt in der Regel NTFS, eine Daten-CD das iso9660-Filesystem oder ein Macintosh-System HFS. Damit Linux weiß, welches Dateisystem auf dem zu mountenden Datenträger ist, muss man entweder "auto" oder das entsprechende Dateisystem manuell angeben. Die macht man mit dem Parameter -t.
Beispiel für das Mounten mit Angabe eines Dateisystems:
mount -t ntfs /dev/hda1/ /mnt/win_xp/
Mittlerweile gibt es eine recht große Anzahl an Dateisystemen und es ist relativ schwer, sich alle im Kopf zu behalten. Aus diesem Grund sollte Linux auch mit dem Parameter "auto" alleine zurecht kommen und das Dateisystem automatisch erkennen. Sollte dies aber nicht der Fall sein, hilft folgende Auflistung:
Dateisysteme, die man als Parameter angeben kann:
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs,
ext (Linux), ext2 (Linux), ext3 (Linux), hfs (Macintosh),
hpfs, iso9660 (Daten-CD), jfs, minix, msdos,
ncpfs, nfs, ntfs (Windows 2000/XP), proc, qnx4, ramfs,
reiserfs (Linux), romfs, smbfs (Samba), sysv, tmpfs,
udf, ufs, umsdos, vfat (FAT32), xenix, xfs, xiafs.
Und hier noch weitere Optionen, die man in die fstab eintragen kann:
_netdev The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system).
noatime Do not update inode access times on this file system (e.g, for faster access on the news spool to speed up news servers).
noauto Can only be mounted explicitly (i.e., the -a option will not cause the file system to be mounted).
nodev Do not interpret character or block special devices on the file system.
noexec Do not allow execution of any binaries on the mounted file system. This option might be useful for a server that has file systems containing binaries for architectures other than its own.
nosuid Do not allow set-user-identifier or set-group-identifier bits to take effect. (This seems safe, but is in fact rather unsafe if you have suidperl(1) installed.)
nouser Forbid an ordinary (i.e., non-root) user to mount the file system. This is the default.
remount Attempt to remount an already-mounted file system. This is commonly used to change the mount flags for a file system, especially to make a readonly file system writeable. It does not change device or mount point.
ro Mount the file system read-only.
rw Mount the file system read-write.
suid Allow set-user-identifier or set-group-identifier bits to take effect.
sync All I/O to the file system should be done synchronously.
dirsync All directory updates within the file system should be done synchronously. This affects the following system calls: creat, link, unlink, symlink, mkdir, rmdir, mknod and rename.
user Allow an ordinary user to mount the file system. The name of the mounting user is written to mtab so that he can unmount the file system again. This option implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line user,exec,dev,suid).
users Allow every user to mount and unmount the file system. This option implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line users,exec,dev,suid).