26.6 Praktische Beispiele
26.6.1 ZIP-Laufwerke
ZIP-Laufwerke sind – nicht zuletzt aus Kostengründen, bei denen CD-RW, DVD-RW und USB-Medien unschlagbar sind – nicht allzu sehr verbreitet, stellen aber dennoch ein gutes Backup-Medium dar. ZIP-Disketten sind immer praktisch, wenn es darum geht, etwas größere Datenmengen von A nach B zu transportieren oder eben zu sichern, da sie immer wieder beschrieben werden können.
Je nach Laufwerk ist man in der Lage, eine oder mehrere der drei Größen (100 MB, 250 MB und 750 MB) zu lesen. Ein 100er-Laufwerk kann beispielsweise nur 100er- Disketten lesen, ein 250er aber sowohl 100- als eben auch 250-MB-Medien.
Medien mounten
Die Disketten können ganz einfach über das mount-Kommando in das Dateisystem eingehängt werden. Der Dateisystemtyp ist, wenn er nicht verändert wurde, FAT32 oder FAT16. Mit dem Tool eject wird das Medium aus dem Laufwerk gestoßen.
eject funktioniert übrigens auch bei CD- und DVD-Laufwerken.
# mount -t vfat /dev/sd* /mnt/zip # umount /mnt/zip # eject /dev/sd*
Listing 26.23 Ein ZIP-Medium mounten, unmounten und ejecten
Wenn Sie die Unterstützung für die Laufwerke im Kernel aktiviert haben, wird ein entsprechendes Device – sofern vorhanden – beim Booten erkannt. Erinnern Sie sich im Zweifelsfall einfach an den dmesg-Befehl, und suchen Sie etwa nach folgendem Inhalt:
# dmesg | grep ZIP hdc: IOMEGA ZIP 100 ATAPI, ATAPI FLOPPY drive
Listing 26.24 Erkennen des Laufwerks in den Boot-Meldungen
Hier wurde ein internes am IDE-Bus hängendes ZIP-Laufwerk erkannt. USB-Geräte hingegen werden wie entsprechende SCSI-Laufwerke als sd* erkannt.
26.6.2 Neue Festplatten integrieren
Wie Sie bereits wissen, werden Speichermedien mit dem (c)fdisk-Programm partitioniert.
Gesetzt den Fall, in Ihrem Rechner ist bisher nur eine Platte (/dev/hda) integriert, dann wird die neu integrierte Platte wahrscheinlich die Bezeichnung /dev/hdb tragen. <Oder /dev/hdc oder /dev/hdd, was von den Jumper-Settings und dem verwendeten IDE-Port im Rechner abhängig ist.>
Formatieren
Die Formatierung wird mit dem für zukünftige Dateisysteme angemessenen Programm erledigt, also etwa mke2fs für das Standard-Dateisystem ext2 oder mkreiserfs für das Reiser-Dateisystem.
# mkreiserfs /dev/hdb1
Listing 26.25 Formatierung einer Partition
Mountpoint festlegen
Nun muss lediglich noch der Mountpoint für die neue Platte erstellt werden.
Eventuell sollte eine dauerhafte Mount-Zeile in der fstab-Datei angelegt werden. <Mehr zum Thema fstab-Datei erfahren Sie in Kapitel 9, »Grundlegende Verwaltungsaufgaben«.>
# mkdir /var/www/htdocs/pub # mount /dev/hdb1 /var/www/htdocs/pub
Listing 26.26 Einbinden der neuen Partition
26.6.3 Eine Datei als Dateisystem: Loop Device
Ein Loop Device bezeichnet eine spezielle Gerätedatei /dev/loop*, die das Mounten von als Dateien vorliegenden Dateisystemen erlaubt. Das ist notwendig, da mount nur auf Gerätedateien operieren kann.
Sinnvoll wird das Ganze bei aus dem Netz geladenen CD-Images, die man zum Beispiel vor dem Brennen kontrollieren möchte. Man kann aber auch alle möglichen anderen Dateien über so ein Loop Device mounten.
Doch wie erstellt man selbst eine solche Datei? Im Prinzip ist dies relativ einfach:
Zuerst erstellen wir mit dem dd-Programm eine Datei beliebiger Größe.
Im folgenden Beispiel entscheiden wir uns für eine 30 MB große Datei. Als Eingabequelle wird /dev/zero verwendet, um unser Image mit binären Nullen zu füllen – irgendeinen initialen Inhalt brauchen wir schließlich.
# dd if=/dev/zero of=filefs.img bs=1M count=30 30+0 records in 30+0 records out # ls -l filefs.img -rw-r--r-- 1 root wh 31457280 Jan 9 16:28 filefs.img
Listing 26.27 Erzeugen der Raw-Datei
Dateisystem!erzeugen
Auf dieser Datei wird anschließend ein Dateisystem – in unserem Fall ext2 – erzeugt. Dabei werden 1024 Bytes pro Inode (-i) bei einer Blockgröße von 1024 Bytes pro Block verwaltet. Eine Inode entspricht nun also genau einem Block, was vor allem bei kleineren Dateisystemen Sinn macht.
Zudem entscheiden wir uns, 3 Prozent <Der Standardwert ist fünf Prozent.> der Partitionsgröße als für root reservierten Speicher zu verwenden (-m). Die Frage, ob das Dateisystem erstellt werden soll, obwohl es sich nicht um ein dafür vorgesehenes Gerät handelt, kann in unserem Fall mit y (yes) beantwortet bzw. mit dem -F-Parameter unterdrückt werden.
# mke2fs -i 1024 -b 1024 -m 3 -v filefs.img mke2fs 1.22, 22-Jun-2001 for EXT2 FS 0.5b, 95/08/09 filefs.img is not a block special device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 30720 inodes, 30720 blocks 921 blocks (3.00%) reserved for super user First data block=1 4 block groups 8192 blocks per group, 8192 fragments per group 7680 inodex per group Superblock backups stored on blocks: 8193, 24577 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Listing 26.28 Dateisystem erzeugen
Fertig! Jetzt müssen wir noch die Datei mittels losetup an ein Loop Device binden und dieses dann mounten:
# mkdir /loop # losetup /dev/loop0 filefs.img # mount -t ext2 /dev/loop0 /loop
Listing 26.29 losetup und mount
Alternativ kann man auch mount die Arbeit mit losetup überlassen, wenn man die loop-Option nicht vergisst:
# mount -t ext2 filefs.img /loop -o loop
# cat /dev/zero > /loop/file # Testdatei mit Inhalt
^C
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.7G 1.5G 2.1G 30% /
/root/filefs.img 26M 13M 13M 48% /loop
Listing 26.30 Eine Datei direkt mounten
Und das Ganze mit dem RAM
Ein Dateisystem können Sie auch im Hauptspeicher anlegen, zum Beispiel um für zeitkritische Anwendungen Perfomanceverluste wegen langer Plattenzugriffe zu vermeiden. Das Ganze nennt sich dann »Ramdisk« und läuft über /dev/ram*:
# mke2fs /dev/ram0 mke2fs 1.22, 22-Jun-2001 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 1944 inodes, 7777 blocks …{} …{} # mount /dev/ram0 /mnt/ramdisk # df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 3.7G 1.5G 2.1G 30% / /dev/ram0 7.4M 13k 6.9M 1% /mnt/ramdisk
Listing 26.31 RAM-Device
26.6.4 USB-Sticks und -Platten, Digitalkameras und Co.
USB-Speichermedien (dazu zählen beispielsweise Digitalkameras, MP3-Player, USB-Sticks und USB-Festplatten) sind zurzeit sehr beliebt. Auch für größere Datenmengen sind diese Platzwunder schon recht brauchbar. Aus diesem Grund wollen wir Ihnen nun die Linux-Nutzung dieser Hardware näher erläutern.
USB-Treiber
Um diese Sticks nutzen zu können, brauchen wir notwendigerweise einen PC mit einem Mainboard, das USB unterstützt. Meistens wird der entprechende Support schon bei der Installation erkannt, und die entsprechenden Module werden geladen:
# lsmod | grep usb …
Listing 26.32 USB-Support im Kernel?
Findet man dann Ausgaben wie ohci-hcd oder usb-ohci, wird zumindest bereits der Controller unterstützt. Wenn nicht, muss man eventuell ein entsprechendes Modul nachladen. Für Kernel 2.4 heißt das Modul usb-ohci oder je nach Mainboard auch usb-uhci, ab Kernel 2.6 eben ohci-hcd bzw. uhci-hcd oder ähnlich.
Als Nächstes braucht man – falls es nicht bereits eingebunden ist – nun das Modul, das den USB-Stick als Speichermedium ansprechen kann. Dazu muss man – falls dies nicht bereits automatisch geschehen ist – das Modul usb-storage laden.
# modprobe usb-storage # mkdir /mnt/usb
Listing 26.33 Kernel-Modul laden
26.6.5 Das Device ansprechen
Bei der Gelegenheit haben wir gleich einen Mountpoint für den Stick unter
/mnt/usb angelegt. Der Stick wird später als SCSI-Festplatte erkannt werden, <Wir benötigen also SCSI-Support im Kernel!> und es wird dann, da im Normalfall keine weiteren Platten installiert sein werden, das entsprechende Device als /dev/sda bezeichnet sein.
Dort sprechen wir dann die erste Partition als /dev/sda1 an.
Um das Mounten und Unmounten später zu vereinfachen, fügen wir folgende Zeile in die /etc/fstab ein:
/dev/sda1 /mnt/usb vfat rw,noauto,owner,user 0 0
Listing 26.34 Der USB-Stick in der fstab
Jetzt können wir den Stick ganz einfach mit mount /mnt/usb mounten. Ganz wichtig: Vor dem Ausziehen des Sticks müssen wir denselben wieder unmounten!
Ohne entsprechenden Eintrag in der fstab-Datei lässt sich ein USB-Stick natürlich auch mounten.
Entweder man gibt keine Partition an und verwendet den Dateisystem-Typ »usbfs« (mount -t usbfs /dev/sdb /mnt/usb), oder aber man gibt die Partition sowie deren Dateisystem-Typ wie in der obigen fstab direkt an (mount -t vfat /dev/sdb1 /mnt/usb).