Zu Befehl

Aus LinuxUser 05/2001

Zu Befehl

Die Erstbesteigung des Mount Linux

In der letzten “Zu Befehl”-Folge haben Sie erste Informationen zu Partitionen, Dateisystemen und deren Auslastung bekommen. In diesem Zusammenhang fiel auch kurz der Begriff “mounten”. Mit dem Befehl mount machen Sie einen Datenträger (z. B. Festplatte, Diskette, CD usw.) für Linux verfügbar. Anders als unter DOS und Windows gibt es unter Unix/Linux keine Laufwerksbuchtaben, vielmehr wird jede Partition irgendwo unterhalb des sogenannten Root-Verzeichnisses (Wurzelverzeichnis) eingebunden. In diesem Artikel geht es um Tipps und Tricks zu mount, die den Zugriff auf Datenträger erleichtern und in einigen Fällen sogar helfen, Geld zu sparen.

Mit mount wird also etwas in den Gesamtdateibaum “eingehängt” – dazu werden als Parameter die Device-Bezeichnung (z. B. /dev/hdc) des Datenträgers und das Verzeichnis angegeben, in dem das neue Dateisystem in den Verzeichnisbaum integriert wird. Tippen Sie auf der Kommandozeile einfach mal mount: Sie erhalten dann eine Übersicht der bereits eingebundenen Datenträger, die (abhängig von Ihrem Computer und den Komponenten) z. B. so aussehen kann:

huhn@asteroid:~$ mount
 /dev/hda2 on / type ext2 (rw,errors=remount-ro)
 proc on /proc type proc (rw)
 /dev/hda5 on /var type ext2 (rw)
 …
 /dev/hdb1 on /mnt/c type vfat (rw,gid=102,umask=007)
 /dev/hdc on /cdrom type iso9660 (ro,noexec,nosuid,nodev)

Hier kommen gleich jede Menge Informationen auf einmal: /dev/hda ist die erste IDE-Festplatte. Diese kann in bis zu vier primäre Partitionen aufgeteilt werden und wird dann mit /dev/hda1 bis zu /dev/hda4 durchnumeriert. Neben diesen primären Partitionen gibt es auch logische Partitionen; für diese sind die Ziffern ab fünf reserviert, also ist z. B. /dev/hda5 die erste logische Partition der ersten IDE-Platte. Eine zweite IDE-Festplatte (am gleichen Controller) würde im System /dev/hdb genannt, wohingegen SCSI-Platten /dev/sda oder /dev/sdb usw. heißen; eine Übersicht gibt Tabelle 1, “Partitionsbezeichnungen”.

Tabelle 1: Partitionsbezeichnungen

Gerätedatei Gerät
Festplatten / CD-ROMs
/dev/hda Master am primären IDE-Controller
/dev/hdb Slave am primären IDE-Controller
/dev/hdc Master am sekundären IDE-Controller
/dev/hdd Slave am sekundären IDE-Controller
/dev/sda Erste SCSI-Platte
/dev/sdb Zweite SCSI-Platte
/dev/scd0 Erstes SCSI-CD-ROM-Laufwerk
Disketten
/dev/fd0 Erstes Diskettenlaufwerk
/dev/fd1 Zweites Diskettenlaufwerk

Weiterhin erkennen Sie im ersten Listing, dass /dev/hda2 nach / (der Schrägstrich steht für die Root-Partition) gemountet ist. Auch den Typ des Dateisystems können Sie ablesen – kurze Erinnerung: Das Standarddateisystem unter Linux heißt ext2 (“extended filesystem, Version 2”); Windows 9x verwendet vfat. Apropos vfat: Im Listing entdecken Sie, dass die erste primäre Partition der zweiten IDE-Festplatte (/dev/hdb1) eine Windows-Partition ist (type vfat) und über das Verzeichnis /mnt/c angesprochen werden kann. Als letzter Eintrag im Listing findet sich ein CD-ROM-Laufwerk (/dev/hdc on /cdrom type iso9660). Was die Einträge rw,noexec,nodev,errors=remount-ro etc. bedeuten, soll später entschlüsselt werden. Jetzt geht es erstmal um den Zugriff auf CD-ROM-Laufwerke.

Silberlinge gewurzelt – Zugriff auf CD-ROMs

CD-ROM-Laufwerke werden im Prinzip ähnlich wie Festplatten verwaltet, mit dem elementaren Unterschied, dass sie im laufenden Betrieb eines Computers gewechselt werden können und dass sie ein eigenes Dateisystem besitzen (iso9660). Die Norm ISO 9660 für die Dateiverwaltung auf CD-ROMs sorgt übrigens dafür, dass CDs auf unterschiedlichen Rechnern und Betriebssystemen gelesen werden können. Um Daten von einer CD-ROM lesen zu können, legen Sie die CD in das Laufwerk ein und binden sie als root in den Verzeichnisbaum ein:

asteroid:~# mount -t iso9660 /dev/cdrom /mnt/cdrom

Sollten Sie hier eine Fehlermeldung erhalten wie z. B. mount: mount point /mnt/cdrom does not exist, legen Sie das Verzeichnis /mnt/cdrom an oder schauen bei Ihrer Distribution nach, wie es richtig heißt (bei SuSE und Debian z. B. /cdrom). Nun können Sie in das Verzeichnis hineinwechseln oder Daten von der CD auf die Festplatte kopieren. Bevor Sie die CD-ROM wieder aus dem Laufwerk nehmen können, müssen Sie sie erst “u(n)mounten” – der Befehl heißt umount /mnt/cdrom. Solange die CD gemountet ist, wird ein Druck auf die Eject-Taste des Laufwerks wirkungslos bleiben. Vorsicht: Das Unmounten funktioniert nicht, wenn die CD noch benutzt wird – dafür reicht es, wenn Sie sich in einer Shell noch in einem Verzeichnis auf der CD befinden. Auch Prozesse, die noch auf die CD zugreifen, verhindern die Freigabe. Kleiner Tipp, ohne groß ins Detail zu gehen: Mit dem Aufruf lsofgrep “device” erhalten Sie wertvolle Hinweise auf den schuldigen Prozess:

asteroid:~# lsof | grep /dev/hdc
 kscd       2647     root    6r   BLK       22,0      8315 /dev/hdc
 asteroid:~# kill -9 2647

Das Kommando lsof steht für “list open files”, werfen Sie ruhig einen Blick in die Man-Page zu diesem Programm.

Ab in die Tabelle

Alle Dateisysteme bei jedem Rechnerstart von Hand per mount einzubinden, wäre etwas lästig und würde ein automatisches Hochfahren des Rechners unmöglich machen. Daher gibt es die File System Table, die in der Datei /etc/fstab abgelegt wird und alle zu mountenden Dateisystem beschreibt. Eine typische fstab sieht wie folgt aus:

/dev/hda1       /mnt/dos        vfat    defaults 1 2
 /dev/hda5      /boot   ext2    defaults 1 2
 /dev/hda6      swap    swap    defaults 0 2
 /dev/hda7      /       reiserfs        defaults 1 1
 /dev/sda4      /mnt/zip        vfat    noauto,user 0 0
 proc   /proc   proc    defaults 0 0
 usbdevfs       /proc/bus/usb   usbdevfs        defaults 0 0
 devpts /dev/pts        devpts  defaults 0 0
 /dev/cdrom     /mnt/cdrom      auto    ro,noauto,user,exec 0 0
 /dev/fd0       /mnt/disk       auto    noauto,user 0 0

Hier interessant sind nur die jeweils ersten vier Spalten, in denen die Gerätedatei, der Mount-Punkt, das verwendete Dateisystem und die Mount-Optionen stehen. Steht im Optionenfeld “defaults”, beudetet dies, dass mount ohne weitere Optionen aufgerufen wird. Die Angaben “noauto” und “user” sind dabei keine mount-Optionen sondern werden nur in der fstab verwendet:

  • “noauto” bedeutet, dass das Dateisystem beim Hochfahren des Rechners nicht automatisch gemountet wird. Das ist sinnvoll für Wechselmedien (Diskette, CD, ZIP etc.), die beim Booten vielleicht gar nicht vorhanden sind.
  • “user” legt fest, dass jeder Anwender das Dateisystem mounten und un-mounten darf. . Die Kombination “noauto,user” bei CD und Diskette führt also dazu, dass jeder Anwender einfach durch die Befehle mount /mnt/cdrom und umount /mnt/cdrom CD-ROMs mounten und wieder entfernen kann.

Die zum Artikelbeginn beschriebene Option “errors=remount-ro” legt das Verhalten bei Auftreten eines Dateisystemfehlers fest; in diesem Fall wird der Datenträger dann als read only neu gemountet: Der Lesezugriff bleibt also weiterhin möglich, ein Schreibzugriff wird unterbunden, um weitere Schäden zu verhindern. Alternativen dazu sind “errors=continue” (einfach weiter machen) und “errors=panic” (sofortiger Systemhalt). Erklärungen zu diesen und etlichen weiteren mount-Optionen (die zudem noch abhängig vom Dateisystemtyp sind) finden Sie wie üblich mit man mount und man fstab in den Manual Pages.

Images von CDs und Disketten mounten

Ein Image (engl. Bild, Abbild) ist eine Eins-zu-Eins-Kopie eines Datenträgers – solche Images werden zum Beispiel beim Kopieren verwendet: Um eine Diskette zu kopieren, würden Sie etwa zunächst mit

dd if=/dev/fd0 of=/tmp/disk.img

eine Diskette einlesen (und in der Datei /tmp/disk.img zwischen speichern), um dann die Disketten zu wechseln und die Kopie mit dem umgekehrten Befehl

dd if=/tmp/disk.img of=/dev/fd0

zu erstellen. Das Kommando dd steht übrigens für “convert & copy” – der Name cc war aber auf gängigen Unix-Systemen schon vom C-Compiler belegt, daher dd

Wie unterscheiden sich nun eigentlich das Disketten-Image und die Diskette selbst? Die Inhalte sind identisch, schließlich ist das Image ja durch (blockweises) Auslesen der Diskette entstanden. So könnte man auf den Gedanken kommen, anstelle der Diskette einmal das Image zu mounten. Ein mount /tmp/disk.img /mnt/disk wird aber fehlschlagen:

asteroid:~ # mount /tmp/disk.img /mnt/disk
 mount: /tmp/disk.img is not a block device (maybe try `-o loop'?)
 asteroid:~ #

mount schlägt hier schon von selbst vor, es mit der Option “-o loop” zu versuchen – tatsächlich reicht das in der Regel schon aus, um ein Disketten-Image erfolgreich zu mounten. Eventuell wird zusätzlich noch die Angabe benötigt, welches Dateisystem der Datenträger (in diesem Fall das Image) besitzt. Wurde eine DOS-Diskette eingelesen, so wäre der volle Aufruf

mount -o loop -t vfat /tmp/disk.img /mnt/disk

Zeit und Geld sparen beim Brennen

Genau das Gleiche können Sie auch mit CD-ISO-Images machen: Und wie kommen Sie an solche ISO-Images? Ein Weg ist identisch mit dem bei Disketten beschriebenen: dd if=/dev/cdrom of=/tmp/cd.img liest eine eingelegte CD-ROM aus (funktioniert nicht mit Audio-CDs!). Eine andere Möglichkeit ist der Download von CD-Images, aber am wahrscheinlichsten ist die Erstellung mit mkisofs, wie im Schwerpunkt-Beitrag ab S. 15 beschrieben. Und hier ergibt sich auch eine häufig sinnvolle Anwendungsmöglichkeit, die man unter Windows vermisst: Wenn Sie CDs manuell brennen, also kein Frontend verwenden, sondern zunächst mit mkisofs ein CD-Image erstellen und dieses dann mit cdrecord auf den CD-Rohling brennen, dann haben Sie unter Linux die Chance, vor dem eigentlichen Brennvorgang das erstellte Dateisystem zu mounten und auf Fehler zu untersuchen. Haben Sie ein Verzeichnis ausgelassen oder sind unerwünschte Dateien mit hineingerutscht? Dann löschen Sie einfach das Image und starten von vorne – kein Grund, 15 Minuten auf das Brennergebnis zu warten und dann einen Rohling wegzuwerfen.

LinuxUser 05/2001 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben