[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cd's brennen unter Linux



Wer Linux installiert hat und einen SCSI-Brenner besitzt, kann diese
Umgebung auch gut zum Brennen von Cd's nutzen. Dazu stehen die beiden
Utilities "cdrecord" und "cdwrite" zur Verfuegung. Bei S.U.S.E. sind sie
Bestandteil der Distribution. Sie koennen aber auch aus dem Netz bezogen
werden. Es lassen sich alle gaengigen Cd-Formate wie Cd-r, Cd-Audio etc.
erstellen. Auch die wiederbeschreibbaren Cd-rw's lassen sich
verarbeiten. Mit Ide-Brennern arbeiten die Programme nicht. Aber einen
Ide-Brenner kauft ohnehin niemand, der die Sache wirklich ernst nimmt.

Am Beispiel von "cdrecord" moechte ich die Vorgehensweise zum Beschreiben
eines Rohlings aufzeigen. Dabei sieht man die einzelnen Schritte, die
zum Erstellen einer Cd grundsaetzlich immer erforderlich sind ebenso wie
die Besonderheiten unter Linux/Unix.

angenommen, wir moechten Dateien und Verzeichnisse von der Festplatte auf
eine Scheibe bringen. Wir machen es zunaechst scheinbar umstaendlich.
Hinterher vereinfachen wir den Vorgang, indem wir mehrere Schritte
zusammenfassen.

1. Zunaechst stellen wir die Daten so zusammen, dass sie sich in einem
gemeinsamen Ausgangsverzeichnis befinden. Dazu erzeugen wir im aktuellen
Verzeichnis also z. B. in ~ das Verzeichnis "daten". In dieses
Verzeichnis kopieren wir aus allen Quellen die Verzeichnisbaeume, die wir
brennen moechten. Falls es sich nur um einen Baum handelt, kann
dieser Schritt entfallen, da wir natuerlich auch gleich auf das
Ausgangsverzeichnis des zu brennenden Baumes zugreifen koennen. Dieser
Schritt unterscheidet sich kaum von Windows.

2. Jetzt erstellen wir die Image-Datei. Die Image-Datei ist quasi das
binaere 1 zu 1 Abbild der Cd. Cd's haben ihr eigenes Dateisystem. Es
nennt sich "Iso9660". Es ist nicht kompatibel zu den auf PC's
verwendeten Dateisystemen wie Vfat, Ntfs, Ext2fs o. ae., sondern etwas
voellig eigenstaendiges. Um unsere Dateien auf die Cd brennen zu koennen,
muessen wir sie daher zuvor in das Iso9660-Format umwandeln. Und genau
das tun wir mit dem Erstellen des Image. Das Image enthaelt all unsere
zu brennenden Dateien im Iso9660-Format.

Um ein solches Image zu erstellen, geben wir folgendes Kommando ein.

mkisofs -v -J -o rohdaten.bin daten/

Die Quelldaten werden gelesen und als Iso9660-Image in "rohdaten.bin"
gespeichert. Eine Prozentanzeige informiert ueber den Fortschritt.

Die Parameter haben folgende Bedeutung:
mkisofs - ist der Befehl zum erzeugen eines Iso9660-Image
-v - schaltet die Anzeige von Meldungen ein
-J - veranlasst die Verwendung der Joliet-Erweiterung (fuer lange
   Dateinamen unter Win95)
-o rohdaten.bin - ist der Name der Ausgabedatei

Jetzt haben wir unser Image. Unter Windows haben wir jedoch keine
Moeglichkeit, in dieser Datei als Dateisystem zu navigieren. Bei Unix
kein Problem.

Wenn wir wissen wollen, ob die Daten auch richtig in der Image-Datei
"rohdaten.bin" angekommen sind, koennen wir naemlich diese Datei ins
Dateisystem einbauen. Diesen Vorgang nennt man "mounten".Dazu benoetigen
wir allerdings Root-Rechte. Wir melden uns also im System als "root" an
und gehen wieder in unser Arbeitsverzeichnis, in dem sich "rohdaten.bin"
befindet. Mit dem Befehl mkdir cd-test legen wir das Verzeichnis zum
Mounten an.

Mit dem Befehl
mount rohdaten.bin -r -t iso9660 -o loop cd-test
bauen wir die Image-Datei ins "ganz normale" Dateisystem ein.

Jetzt koennen wir indirekt im Image navigieren. Mit "cd cd-test" gelangen
wir in die Image-Datei. Mit ls koennen wir uns die Dateien anzeigen
lassen. Mit cd .. verlassen wir "cd-test" wieder.

Mit umount cd-test wird die Kopplung zwischen "rohdaten.bin" und dem
Betriebssystem wieder aufgehoben. Das Verzeichnis "cd-test" koennen wir
mit "rmdir cd-test" wieder loeschen. Wir brauchen es nicht mehr. Es
diente nur als sogenannter "mount point" also als Haltepunkt.

Falls wir keine Root-Rechte haben, und daher unser Image nicht ins
Betriebssystem einbauen koennen, ist das auch nicht "schlimm". Auf das
Brennen hat der Umstand keinen Einfluss. Es geht lediglich darum, auf
elegante Weise zu kontrollieren, was im Image angekommen ist. Wenn wir
aber keinen Fehler gemachthaben, wird auch schon das Richtige bei der
Erstellung des Image dort angekommen sein.

3. Jetzt koennen wir die Scheibe beschreiben.
Mit dem Befehl
cdrecord -v speed=4 dev=5,0 rohdaten.bin
schreiben wir den Inhalt von "rohdaten.bin" auf den Rohling. Eine
Prozentanzeige informiert ueber den Fortschritt und den Fuellstand des
Datenpuffers. Die Cd wird automatisch
finalisiert, sofern man beim Aufruf von "cdrecord" nichts anderes
angegeben hat. "Speed=n" legt die Brenngeschwindigkeit fest, und mit
"dev=n,0" wird die SCSI-Id des Brenners angegeben. Die Zahl hinter dem
Komma ist die Lun. Sie kann im "Normalfall" weggelassen werden. Beim
ersten mal sollte man mit abgeschaltetem Laser brennen, um zu testen, ob
alles "klappt". Der Aufruf dafuer lautet "cdrecord -v -dummy ...". Bei
einem Image mit Ueberlaenge warnt "cdrecord", brennt aber anstandslos
weiter. Gerade bei Ueberlaengen sollte man auf jeden Fall vorher testen.

Ich habe uebrigens versuchsweise beim Brennen auch gleichzeitig den
Kernel neu kompiliert und andere Jobs wie die Indizierung unserer
Fblinu-Suchmaschine laufen lassen. Durch die Kompilierung mit der
Make-Option -j waren teilweise ueber 100 Jobs am Laufen. Zu keinem
Zeitpunkt sank der Fuellstand des Datenpuffers auf unter 90%. Die
Multitaskingeigenschaften dieses Betriebssystems sind einfach
hervorragend.

4. Wem das alles viel zu kompliziert erscheint oder wer keinen Platz fuer
die Image-Dateihat, kann in Unix-Manier die Schritte 2 und 3
kombinieren. Der Befehl
mkisofs -J daten/ | cdrecord -v speed=4 dev=5
brennt die Daten direkt auf die Cd, ohne die Image-Datei auf die
Festplatte zu schreiben.

Wenn das immernoch zu kompliziert ist, schreibe man sich ein
Shell-Skript (unter Dos wuerden wir sagen "Batch-Datei").

#!/bin/bash
# dieses Skript nennen wir brenne
# Skript zum Brennen von Cd's
# Der Aufruf lautet brenne Quellverzeichnis return
if [ $# -lt 1 ]; then
   echo "keine Datenquelle angegeben"
   exit
fi
mkisofs -J $1 | cdrecord -v speed=4 dev=5
# Ende vom Skript

Bei allen Aktionen sind selbstverstaendlich die Zugriffsrechte auf
die betroffenen Verzeichnisse und Dateien zu beachten.

Und wie kann man eine Cd vom Cdrom-Laufwerk 1 zu 1 auf den Brenner
kopieren? Ganz einfach! Als Quelle fuer "cdrecord" wird keine Image-Datei
angegeben, sondern "cdrecord" liest direkt vom Cdrom-Laufwerk". Da die
Original-Cd ihrerseits ein Iso9660-System ist, ist es fuer "cdrecord"
egal, woher es seine Daten bezieht. Angenommen, das Cdrom-Laufwerk ist
/dev/sr0, dann bewirkt der Befehl

cdrecord -v speed=4 dev=5,0 /dev/sr0

also genau das, was wir beabsichtigt haben.

Fazit
Das Brennen von Cd's ist unter Linux nicht komplizierter als unter
anderen Betriebssystemen. Wenn etwas kompliziert erscheint, dann ist es
die Technik des Cd-Brennens an sich. Mit dieser Technik muss man sich
natuerlich etwas beschaeftigen. Das gilt aber fuer alle Betriebssysteme und
Brennprogramme. Es ist im Gegenteil sogar verblueffend einfach. Fuer die
meisten Teilaufgaben, die beim Erstellen der Cd anfallen, gibt es
naemlich schon die Hausmittel. Nur das Brennprogramm fehlt, und das ist
mit "cdrecord" gegeben. Durch konsequentes Kombinieren mit diesen
Hausmitteln wie Pipes lassen sich aus dem Werkzeugkasten komplexe
Aufgaben loesen.

Gruesse