Zu Befehl
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
Eigentlich steht die Abkürzung des Programmes dd für "convert and copy" – cc ist allerdings schon für den C-Compiler vergeben. Das Tool überträgt Daten zwischen verschiedenen Speichermedien und führt auf Wunsch auch Konvertierungen der Daten durch. Dabei kopiert dd nicht nur einzelne Dateien, sondern kann auch direkt auf Devices zugreifen. So lassen sich neben ganzen Festplatten oder Partitionen auch CD-ROMs kopieren.
Die Optionen werden ohne vorangehenden Bindestrich übergeben. Es lassen sich die Blockgrößefür die Ein- und Ausgabedatei und die Anzahl der zu kopierenden Blöcke bestimmen. Den Boot-Sektor von der ersten Festplatte sichern Sie beispielsweise mit:
asteroid:~# dd if=/dev/hda of=bootsektor bs=512 count=1
Die Option if ("infile") bestimmt die Eingabedatei (default ist die Standardeingabe); of ("outfile") bezeichnet die Zieldatei. Mit dem Parameter bs ("blocksize") geben Sie die Blockgröße an; count legt fest, wieviele Blöcke kopiert werden sollen. Im Klartext bedeutet der Aufruf also: Kopiere von der ersten IDE-Platte (/dev/hda) in eine Datei namens bootsektor den ersten Block (count=1), der 512 Bytes groß ist (bs=512).
Weitere Anwendungsmöglichkeiten sind z. B. das Erstellen einer Boot-Diskette, indem der Kernel (vmlinuz) auf eine Diskette kopiert wird:
asteroid:~# dd if=/vmlinuz of=/dev/fd0
Mit einer solchen Diskette lässt sich das Linux-System auch noch starten, nachdem eine spätere Windows-Installation den Boot-Sektor überschrieben hat. Der einfachste Weg zum Kopieren einer reinen Daten-CD ist:
asteroid:~# dd if=/dev/cdrom of=bla.iso 1349272+0 records in 1349272+0 records out
Hierfür muss die CD nicht gemountet sein – dd ist unabhängig von der Art der Daten auf der CD. Nur eine Audio-CD darf es nicht sein, Musik wird mit anderen Programmen ausgelesen (cdda2wav).
Sollen Daten zunächst selbst gesammelt und dann auf eine CD geschrieben werden, muss aus diesen ein ISO-Image erstellt werden. Hier kommt das Kommando mkisofs ("make ISO9660 filesystem") ins Spiel. Das Programm erzeugt eine Datei nach den ISO9660-Richtlinien.
Der einfache Aufruf, um Daten aus einem Verzeichnis in ein Image zu schreiben, lautet:
mkisofs [parameter] -o datei.iso /tmp/daten
Die Option -o bestimmt die Ausgabedatei, in die das Image geschrieben wird (hier datei.iso); gelesen wird aus /tmp/daten. Die gängigsten Parameter, die Sie immer wieder verwenden werden, sind -r und -J – Rockridge- und Joliet-Erweiterungen. So stellen Sie sicher, dass die CD auch unter Windows-Betriebssystemen gelesen werden kann. Statt der Option -r darf auch -R an dieser Stelle stehen. Hier wird ebenfalls Rockridge genutzt, aber Rechte und Dateieigentümer bleiben erhalten – die richtige Wahl also, wenn beispielsweise ein Backup eines /home-Verzeichnisses für den eigenen Rechner angelegt werden soll.
Eine weitere wichtige Option ist -b zum Anlegen einer Boot-CD. Die Datei, welche durch -b spezifiziert wird, muss 1,2 MB, 1,44 MB oder 2,88 MB groß und das Image einer Bootdiskette sein – Voraussetzung ist natürlich, dass innerhalb der ersten 512 Bytes der Boot-Sektor liegt. Zusätzlich sollten Sie immer auch die Option -c verwenden, die relativ zum Root-Verzeichnis der CD eine (noch nicht vorhandene) Datei angibt, die als Boot-Katalog erzeugt wird, z. B. mkisofs -c images/boot.cat.
Mit der Option -V setzen Sie eine VolumeID, also den "Namen" der CD, z. B. -V "Backup vom 01. Dezember 2002". Typische LinuxUser-Heft-CD-Images werden beispielsweise mit der folgenden Befehlszeile erzeugt:
mkisofs -V "LU 01-2003" -J -r -P "Linux New Media" \ -b Boot/cdrom.img -c Boot/boot.cat \ -o lu-2003-01.iso lu01/
Die Möglichkeiten, die ein 1,44 MByte großes Boot-Disk-Image bietet, sind beschränkt – sollen neben dem Kernel noch Module auf dieses Image, wird es eng. Eine Alternative bietet das Isolinux-System (http://syslinux.zytor.com/iso.php), das eine Weiterentwicklung des Boot-Loaders SysLinux für Disketten ist. Über eine Konfigurationsdatei kann ein beliebiger Kernel aktiviert werden, der auf dem CD-Dateisystem liegt. Auch RAM-Disks, die beim Linux-Start geladen werden sollen, lassen sich hier direkt von der CD laden. Das Boot-Menü von Isolinux wird über eine Konfigurationsdatei isolinux/islinux.cfg eingerichtet, in der (ähnlich wie in der LILO-Konfiguration) Abschnitte der Form
label linux kernel vmlinuz append initrd=disk.rdz ramdisk_size=32000 root=/dev/ram3 vga=788 automatic=method:cdrom
zu finden sind. Dabei liegen der Kernel vmlinuz und die RAM-Disk disk.rdz im Verzeichnis /isolinux der CD-ROM; es können auch Unterverzeichnisse von /isolinux verwendet werden.
Ein CD-Image mit Isolinux-Bootloader wird nun über den folgenden mkisofs-Aufruf erzeugt:
mkisofs -J -r -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 \ -boot-info-table \ -o output.iso verzeichnis/
Bevor Sie das neue Image mit dem Programm Ihrer Wahl brennen (z. B. cdrecord oder X-CD-Roast), können Sie es auf eventuelle Fehler untersuchen. Mit dem Befehl mount lassen sich nicht nur Datenträger, wie z. B. Festplatten oder CDs, in das Linux-Dateisystem einbinden, sondern auch ISO-Images zur Verfügung stellen. Als Administrator root mounten Sie ein solches Image mit dem Aufruf:
asteroid:~# mount -o loop bla.iso /mnt/tmp/
Eventuell braucht das Kommando noch Hilfestellung bei der Wahl des Dateisystems; in diesem Fall fügen Sie eine weitere Option -t iso9660 hinzu. Das Image lässt sich mit dem Befehl umount /mnt/tmp wieder unmounten.
Glossar
Blockgröße
Ein Block ist eine fortlaufende Ansammlung von Bytes auf einem Datenträger. Bestimmte Geräte organisieren ihre Daten in diesen Blöcken ("block devices"), im Gegensatz zu anderen Geräten, die zeichenorientiert arbeiten ("character devices") und bei denen jeweils einzelne Bytes gelesen oder geschrieben werden.
ISO
Linux unterstützt mehrere Typen von Dateisystemen. Dazu gehören nicht nur die eigenen, wie z. B. ext2, ext3 oder reiserfs, sondern auch vfat- und ntfs-Dateisysteme, wie sie unter Windows verwendet werden. ISO 9660, wie der komplette Name lautet, ist der Standard für die Verwaltung von Dateien auf CD-ROMs. Ursprünglich wurden nur kurze Dateinamen unterstützt; die Rockridge- und Joliet-Erweiterungen heben diese Beschränkung auf.
Rockridge
Die Rockridge Extensions erweitern das ISO-CD-Dateisystem um Unix-typische Dateiinformationen wie Besitzer und Gruppe, Zugriffsrechte (Lesen, Schreiben, Ausführen) und symbolische Links. Dadurch ist ein Kopieren von Daten aus einem Unix-Dateisystem auf eine CD ohne Informationsverlust möglich. Außerdem erlaubt Rockridge längere Dateinamen.
Joliet
Von Microsoft kommt eine alternative Erweiterung des ISO9660-Dateisystems namens Joliet, die ebenfalls lange Dateinamen zulässt.