[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Zugriff auf Disketten

Da wir zur Zeit muLinux jedesmal von der Start-Diskette neu booten, gehen alle unsere Änderungen verloren. muLinux wird ja jedesmal wieder jungfräulich in den Arbeitsspeicher geladen. Für Übungszwecke kann dies ja auch sehr nützlich sein. Manchmal wollen wir aber doch die Ergebnisse unserer Arbeit sichern. Am ungefährlichsten ist es, unsere Arbeit auf Disketten zu speichern.

Unter Unix gibt es keine Laufwerksbuchstaben wie bei DOS.

Diese einfache Art auf Disketten- bzw. Festplatten zuzugreifen stammt noch aus einer Zeit, als die Personalcomputer nur über ein oder zwei Diskettenlaufwerke verfügten (A:, B:). Später kamen dann Festplatten hinzu (C:, D:, ...).

Dieses Prinzip bringt aber heute auch einige Probleme:

Disketten spielten und spielen in der Unix-Welt keine große Rolle. Der Superuser kann den Zugriff auf Disketten für normale Benutzer sogar sperren. Unix war von Anfang an auf die Arbeit mit mehreren Festplatten ausgelegt. Dabei muß die Struktur der Daten unabhängig von den Speichermedien sein. Verzeichnisse unter Unix können so Bereiche auf Festplatten, Wechselmedien oder in Arbeitsspeicher darstellen. So heißt z. B. die Adresse für die Anwenderdaten immer /home, egal auf welchen Festplatten sich der Inhalt befindet.

Das Disketten-Laufwerk mounten

Der Vorgang der Zuordnung von Speichermedien zu Verzeichnissen nennt man mount (engl. für montieren). Das Verzeichnis in dem der Inhalt des Speichermediums erscheinen soll, heißt mountpoint. Der Befehl dazu heißt mount.

Meist sind schon Verzeichnisse als mountpoints für Wechselmedien vorhanden. Leider gibt es bei den verschiedenen Unixversionen keine einheitliche Handhabung. Manchmal befinden sie sich im Verzeichnis /mnt. Bei anderen Versionen gibt es ein Verzeichnis /floppy für das Diskettenlaufwerk. Unter muLinux existiert dafür ein Verzeichnis /a. Man kann aber auch einfach ein Verzeichnis erstellen, um es als mountpoint zu nutzen. Das wäre eine notwendige Angabe für den mount-Befehl.

Die andere Angabe ist die entsprechende Gerätedatei für das Disketten-Laufwerk. Wir hatten bei der Betrachtung der Verzeichnisstruktur das Verzeichnis /dev als Ort der Gerätedateien kennengelernt. Dort werden Geräte durch Dateien angesprochen. Das erste Diskettenlaufwerk, unter DOS das Laufwerk A:, wird allgemein durch die Datei /dev/fd0 symbolisiert.

Wir entnehmen die muLinux-Startdiskette und legen eine DOS-Diskette in das Diskettenlaufwerk ein. Um das Diskettenlaufwerk dem Verzeichnis /a zuzuweisen, geben wir folgendes ein:

/# mount /dev/fd0 /a

muLinux erkennt automatisch ob es eine DOS-Diskette oder eine Linux-Diskette ist. Nun können wir uns den Inhalt der Diskette anschauen.

/# ls /a

Bevor wir die Diskette wieder aus dem Laufwerk nehmen können, müssen wir die mount-Zuordnung aufheben. Dazu dient der Befehl umount mit der Angabe der Gerätedatei oder des mountpoints.

/# umount /a

Wer sehen will was zur Zeit gerade so gemountet ist, gibt dazu den Befehl mount ohne Optionen ein:

/# mount
/dev/ram0 on / type ext2 (rw)
/proc on /proc type proc (rw)
/dev/ram1 on /usr type ext2 (rw)
/dev/ram2 on /tmp type ext2 (rw)
/dev/fd0 on /a type umdos (rw)
/# _

Wir sehen RAM-Disks (/dev/ram*) mit den mountpoints /, /usr und /tmp. Und das Spezialverzeichnis /proc. Außerdem erkennen wir den jeweiligen Typ. Das Dateisystem ext2 ist übrigens das Standard-Dateisystem für Linux.

Die fettgedruckte Zeile erscheint nur, wenn wir eine DOS-Diskette gemountet haben. Durch die Befehlswiederholung (Cursor-Teste nach oben) können wir den entsprechenden Befehle schnell wieder aufrufen. Wir mounten das Diskettenlaufwerk auch, um etwas zu experimentieren.

/# mount /dev/fd0 /a
/# cd /a
/a# _

Wir sind jetzt also im gemounteten Disketten-Laufwerk. Wir erstellen jetzt ein Verzeichnis mit einem sehr langen Namen:

/a# mkdir abcdefghijklmnopqrstuvwxyz
/a# ls
abcdefgh
/a# _

Wie wir sehen, können wir auf der DOS-Diskette keine längeren Dateienamen erzeugen. Sie werden, entsprechend den DOS-Einschränkungen, nach 8 Zeichen abgeschnitten. Und noch ein Experiment:

/a# mkdir ABC
/a# ls
abc       abcdefgh
/a# _

Groß- und Kleinschreibung wird unter DOS nicht unterschieden. Das DOS-Diskettenformat eignet sich gut, um Daten mit der DOS- und Windows-Welt auszutauschen. Als Speichermedium für Linux ist es aber ungeeignet.

Nun heben wir die mount-Zuordnung wieder auf:

/a# umount /a
umount: /dev/fd0: device is busy
/a# _

Warum ist das Gerät (engl. device) beschäftigt (engl. busy)? Na klar! Der mountpoint /a ist noch das aktuelle Verzeichnis.

/a# cd /
/# umount /a
/# _

Jetzt ist alles wieder in Ordnung. Trotzdem sind wir neugierig und wollen wissen was jetzt in /a ist.

/# ls /a
total 0
/# _

Da ist jetzt nichts drin.

Formatieren von Disketten

Wir haben festgestellt, daß DOS-Disketten nur zum Datenaustausch mit der DOS- und Windows-Welt gut sind. Das Linux-Format heißt ext2. Die Formatierung unter Linux erfolgt in zwei Schritten:
  1. Low-Level-Formatierung mit dem Befehl fdformat (floppy disk format).
  2. Anlegen des Dateisystems mit dem Befehl mkfs.ext2. In anderen Unix-Versionen heiß dieser Befehl mkfs (make file system).
Als Parameter für die Befehle müssen wir das entsprechende device angeben. Das kann aber in diesem Fall nicht das allgemeine device /dev/fd0 sein. Zur Formatierung brauchen wir das konkrete device für das 1,44 MByte-Format: /dev/fd0H1440. Das Disketten-Laufwerk darf dazu nicht gemountet sein.

/# fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verfying ... done
/# mkfs.ext2 /dev/fd0H1440
...
...
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
/# _

Wir nehmen die Diskette aus dem Laufwerk und beschriften diese mit einem Bleistift als "muLinux-Arbeitsdiskette". Danach schieben wir sie wieder in das Laufwerk.

Jetzt können wir diese Diskette mounten und uns den Inhalt anschauen. Dieser müßte eigentlich leer sein. Es befindet sich aber ein Verzeichnis mit dem Namen lost+found auf der Diskette. In diesem Verzeichnis werden Dateien gespeichert, deren Zuordnung im Dateisystem verloren ging.

Weitere Disketten-Formate

Wer ein zweites Diskettenlaufwerk hat, kann es mit /dev/fd1 ansprechen. Wer wissen will welche Disketten-Formate zur Verfügung stehen, kann sich die entsprechenden Gerätedateien auflisten lassen. Der Stern * ist ein sogenannter wildcard und dient als Jokerzeichen und vertritt eine beliebige Anzahl beliebiger Zeichen dar.

/# ls /dev/fd0*
0 /dev/fd0       0 /dev/fd0H1440     0 /dev/fd0h17220     0 /dev/fd0h1440    
/# _

Wir sehen, daß es auch ein Disketten-Format mit 1,722 MByte gibt. Wir können also unsere Disketten mit höherer Kapazität formatieren. Dies ist aber nicht zu empfehlen, da diese Diskette unter einer anderen Linux-Version nicht immer lesbar sind.

Überprüfen der Laufwerks-Belegung

Wie können wir feststellen, wieviel Platz uns noch auf Laufwerken zur Verfügung steht? Der Befehl df (engl. disk free) zeigt den freien Platz auf allen gemounteten Laufwerken an. Wir müssen die Diskette also vorher mounten.

/# df
Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/ram0               1428    1284      144     90%   /
/dev/ram1               1884    1542      342     82%   /usr
/dev/ram2                987     368      568     39%   /tmp
/dev/fd0                1390      13     1305      1%   /a
Wir können aber auch df auf ein Laufwerk beschränken:

/# df /dev/fd0
Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/fd0                1390      13     1305      1%   /a

Hier die deutsche Übersetzung:

Filesystem   1024-blocks               Used               Available     Capacity                  Mounted on
Dateisystem  Anzahl der 1024er Blöcke  Verwendete Blöcke  freie Blöcke  verwendete Kapazität in % mountpoint

Konfiguration der Dateisysteme und deren Mountpoints

Klingt gut, wa? Ich hatte weiter oben erwähnt, daß der Zugriff auf Diskettenlaufwerke für normale Nutzer gesperrt werden kann. Diese und andere Konfigurationen befinden sich in der Datei fstab. Diese befindet sich als Einstellungsdatei natürlich im Verzeichnis /etc. Schauen wir uns diese Datei mal an:

/# less /etc/fstab
...
/dev/fd0 /a auto defaults,noauto,rw 1 1
...

Eine Zeile entspricht jeweils einem zu mountenden Dateisystem. Hier werden also CDROM-, Disketten- und Festplattenlaufwerke automatisch gemountet bzw. dem normalen Nutzer Zugriffsrechte zum Mounten ermöglicht. Die obige Zeile gibt an, daß das Diskettenlaufwerk /dev/fd0 standardmäßig auf das Verzeichnis /a gemountet wird. Das heißt, bei dem Befehl mount /dev/fd0 /a kann /dev/fd0 auch weggelassen werden. Das auto bewirkt eine automatische Erkennung des Dateisystems. Es werden also DOS- oder ext2-Disketten automatisch erkannt.

Der Parameter defaults setzt die nachfolgen Parameter auf Standardwerte (soweit ich es verstehe). Bei meinem "normales" Linux (SuSE) wird hier folgende Zeile verwendet:

...
/dev/fd0 /a auto noauto,user,exec,sync 0 0
...

Die Diskette wird nicht automatisch gemountet (noauto), kann aber von "normalen" Nutzern gemountet werden (user) und wird nach beim unmounten synchronisiert (sync). Programme und Skripte können auf der Diskette gestartet werden (exec). Letzteres ist für das Starten von Installationsprogrammen von Diskette notwendig.

[Zurück] [Home] [Weiter]