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
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:
#!/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
chmod +x Dateiname
in der Konsole./Dateiname
)