[[linux:datenträger-einhängen-mounten]]

Datenträger einhängen (mounten)

Laufwerksbuchstaben gibt es bei Linux nicht, man hängt („mountet“) Datenträger an beliebigen Orten („Mountpoints“) im Verzeichnisbaum ein.

Beispiel: Der Inhalt einer USB-Festplatte soll im Verzeichnis /media/usbplatte zur Verfügung stehen:

mount -t ext3 /dev/sda1 /media/usbplatte

Der Befehl mount verlangt 3 Parameter: Zuerst den als Parameter den Dateisystemtyp, den ich mit der Option -t ext3 angebe, dann den Gerätenamen (/dev/sda1) und dann den Mountpoint(/media/usbplatte). In manchen Fällen kann der Dateisystemtyp auch automatisch ermittelt werden.

Mounten funktioniert auf diese Art nur für den Benutzer root. Bei Wechseldatenträgern kümmert sich meist ein Dienst um das automatische einhängen für Benutzer unterhalb des Verzeichnisses /media , man kann den Datenträger aber auch in die Datei /etc/fstab aufnehmen. Bei Datenträgern die während des bootens automatisch zur Verfügung gestellt werden sollen ist dies sogar notwendig. Die Datei /etc/fstab enthält pro Zeile die Definition für einen Mountpoint.

Die Zeilen haben folgenden Aufbau:

Gerätename Mountpoint Dateisystemtyp Mountoptionen dump1) fsck2)
/dev/hda1 /boot ext3 defaults 1 2
/dev/hdc /media/cdrom iso9660 ro,noauto,user 0 0

Die unteren beiden Zeilen sind Beispiele wie sie in der Datei /etc/fstab stehen könnten.

In der ersten Zeile existiert eine eigene Partition für /boot welche sich auf /dev/hda1 befindet und mit ext3 formatiert ist. „defaults“ bedeutet, das die Standardoptionen gelten sollen. In so einem Fall wird angenommen, das der Datenträger automatisch beim booten und beschreibbar gemountet werden soll. Die 1 ist ein Parameter für dump, der momentan nicht benutzt wird. Es ist üblich hier 1 für Systempartitionen anzugeben und 0 für alle anderen Partitionen. Die 2 steht für die Reihenfolge, in der das Dateisystem der Partition gecheckt werden soll. An dieser Stelle vergibt man eine 1 für die Root-Partition, eine 2 für alle weiteren Partitionen die gecheckt werden sollen und eine 0 für alle Partitionen die nicht gecheckt werden sollen oder können (z. B. CD-Rom oder andere Wechseldatenträger).

In der zweiten Zeile wird das Gerät /dev/hdc nach /media/cdrom gemountet. Das Dateisystem ist iso9660, welches das Standarddateisystem für CD-ROMs ist. Es werden die Optionen ro (read only=nur lesbar), noauto (nicht beim booten mounten) und user (darf durch normale User gemountet werden) angegeben. Die Option user ist also dafür zuständig, normalen Usern Mountrechte zu geben. „dump“ und ein möglicher Filesystemcheck werden hier nicht berücksichtigt, was bei CD-Roms auch gar nicht möglich wäre.

Wenn ich nun eine ext3 formatierte USB-Festplatte habe, welche vom System als sda1 erkannt wird, könnte ich meine fstab folgendermassen ergänzen:

/dev/sda1 /media/usbplatte ext3 rw,user,noauto 0 0

In diesem Fall kann ich als normaler Benutzer die USB-Festplatte mit einem verkürzten Mountbefehl einhängen:

mount /media/usbplatte

Die weiteren Angaben, werden aus der /etc/fstab entnommen.

Mit dem Befehl

cat /proc/mounts

oder durch Aufruf des Mount-Befehls kann man detaillierte Informationen zu den aktuell gemounteten Dateisystemen einsehen.

Unter Linux wird jedes Gerät durch eine Datei symbolisiert.

Dies sollte nicht mit dem Treiber verwechselt werden. IDE-Geräte, wie Festplatten und CD-Rom Laufwerke fangen stets mit den Buchstaben hd als Gerätebezeichnung an. Danach folgt ein weiterer Buchstabe, der angibt das wievielte Gerät im System gemeint ist.

Bei Ide-Geräten, bei denen wie vielleicht bekannt ist, jeweils 2 Geräte (Master und Slave) an einen IDE-Controller angeschlossen werden können, gilt: hda ist der Master am ersten IDE-Controller und hdb ist der Slave am ersten IDE-Controller. Dementsprechend ist hdc der Master am zweiten IDE-Controller und hdd der Slave am zweiten IDE-Controller.

SCSI-Festplatten beginnen mit sd. Dementsprechend ist sda die erste SCSI-Festplatte im System und sdb die zweite SCSI-Festplatte im System. SATA und USB-Laufwerke werden ebenfalls als SCSI-Laufwerke vom System behandelt. Für Partitionen auf diesen Datenträgern wird eine Zahl an das Gerät angehängt. hda1 ist also die erste Partition auf dem Master des ersten IDE-Controllers.

Dos-artige Partitionierungsschemas können bis zu 4 primäre Partitionen enthalten, von denen eine eine erweiterte Partition sein kann, welche nochmals max. 16 logische Partitionen enthalten kann. Da dies eigentlich keine Grenze von Dos/Windows ist, sondern von der x86 Hardware allgemein, gilt dies auch für Linux. Logische Partitionen, die in einer erweiterten Partition liegen fangen ihre Partitionsnummer daher immer mit 5 an zu zählen, selbst wenn es weniger als 4 primäre Partitionen im System geben sollte. /dev/hda6 steht also für die 2. logische Partition in einer erweiterten Partition des Laufwerks hda.

Gerät im Vergleich zu Windows
hda 1.IDE-Festplatte
hda1 C: (primäre Part.)
hda5 erweiterte Part.
hda6 E: (logisches Laufwerk)
hdb 2.IDE-Festplatte
hdb1 D: (primäre Part.)
anderere Typen
sda 1. SATA-Festplatte oder USB-Geräte (z.B. Stick)
hdc CD/DVD-Laufwerk am 2. EIDE-Controller
pdc_* Promise-Host-RAID-Partition
isw_* Intel-Host-RAID-Partition
via_* Via-Host-RAID-Partition

Wie man sieht geht die Bennung der Laufwerksbuchstaben bei Windows erst nach den primären Partitionen und nicht dem physikalischen Anschluß.

Bei aktuellen Distributionen und Kernelversionen werden Datenträger nicht mehr anhand ihrer logischen Benennung (/dev/sda1 usw.) sondern anhand einer eindeuten UUID angesprochen.

Das ermöglicht die Einrichtung eigener Regeln bei wechselnden Datenträgern. Wenn sich allerdings die UUID ändert muss man diese im Boot-manager eintragen. Der Befehl

blkid

listet die aktuellen UUID auf, diese trägt man dann in /boot/grub/menu.lst und /etc/fstab ein.

Außerdem kann der Datenträger auch über die ID, das Label, den (Bus-) Pfad angesprochen werden, so dass die Gerätedateien in den Verzeichnissen

  1. /dev/disk/by-id
  2. /dev/disk/by-label
  3. /dev/disk/by-path
  4. /dev/disk/by-uuid

liegen und über diese die Geräte ansprechbar sind.

Näheres auf der Seite zu udev.

Mount bietet die Möglichkeit einen aktuelle eingehängten Datenträger mit anderen Optionen erneut einzuhängen.

mount -o remount,noatime /

Hier wird die Option noatime (keine Zugriffszeitstempel schreiben) eingestellt.

Sinnvoll ist dieses „remounten“ wenn die aktuellen Einstellungen nicht gewünscht sind oder unsicher sind usw.

:!: mit mount -a werden alle Datenträger in der /etc/fstab eingehängt.

man kann mit dem normalen mount-Befehl auch (iso-)Abbilder einhängen:

mount [Pfad+iso-Datei] [Mountpoint] -t [Dateisystem, meist "iso9660"] -o loop

Angaben in eckigen Klammern muss man natürlich durch die eigenen Werte ersetzen.
Beispiel:

mount /media/usbdisk/isodatei.iso /home/username/iso/ -t iso9660 -o loop

:!: übrigens kann man mit dem Programm nrg2iso (für Linux und Windows) aus Nero-Abbildern iso9660-Abbilder erstellen.

Eine RAMdisk (Datenträger im Arbeitsspeicher) läßt sich mit Bordmitteln relativ leicht anlegen.

Folgender Eintrag in der /etc/fstab genügt:

none    /MOUNT-ORT       tmpfs   defaults,noexec,nodev,nosuid,noatime,size=50m,mode=770,uid=0,gid=0      0       0

Die Daten sind beim Herunterfahren des Betriebssystems natürlich weg.

Vorarbeiten:

  • die mount-Verzeichnisse anlegen /mnt/ …
  • username mit dem eigenen Namen ersetzen
  • Textdatei mit folgendem Inhalt anlegen:
#!/bin/bash
echo -n "Pw: "
read -s pw
ncpmount -u 1000 -g 100 -S SERVERNAME -A S5 -U BENUTZERNAME -P $pw -V Vol1/User/BENUTZERNAME /mnt/BENUTZERNAME
  • diese Textdatei ausführbar machen, entweder über Dateimanager oder chmod +x Dateiname in der Konsole
  • Datei ausführen (Konsole: ./Dateiname)

1)
,wird aktuell nicht benutzt
2)
Reihenfolge der Dateisystemprüfung, die root-Partition sollte die 1 haben, andere Datenträger die 2, 0 oder leer wenn nicht überprüft werden soll