freeX: CDs Brennen leicht gemacht

Die ausschließlichen Vertriebsrechte an diesem Artikel liegen beim Computer- & Literaturverlag (C&L). Der Artikel darf nicht kopiert oder gar erneut in einer Zeitschrift oder einem Buch veröffentlicht werden ohne vorherige Erlaubnis von C&L. Der Verlag gestattet freundlicherweise die Veröffentlichung auf diesen Seiten. Wer öfter auf diesen Hinweis trifft, sollte sich überlegen, die Zeitschrift freeX zu abonnieren.

Mails mit procmail sortieren

 
Wenn man früher ein Backup seiner Daten anlegen wollte, dann geschah dieses meistens über Disketten. Heutzutage sehe ich dieses nicht einmal mehr als Option an. Die Menge der Daten hat in den letzten Jahren dermaßen zugenommen, daß Speichermedien mit erheblich größerem Fassungsvermögen nötig wurden.

 

1. Welche Brenner?
2. CD Mastern
3. Image testen
4. Brennen der CD
5. X-CD-Roast
6. Mailing-Liste
7. Weitere Quellen

Datensicherungen auf Großrechnern und Servern wurden mit Bandlaufwerken, sogenannten Streamern, durchgeführt. Im Server- und Unix-Bereich haben sich SCSI-Streamer mit einer Kapazität von ca. 300 - 1200 Megabytes (unkomprimiert) etabliert. Diese werden nach und nach durch DAT-Streamer mit höheren Kapazitäten (2-8GB bis zu 64GB mit Wechslern) ersetzt.

Seit Jahren werden neue Rechner mit CD-Laufwerken ausgeliefert. Bei gleichzeitig sinkenden Preisen für Medien wurde es daher einfacher, dem Anwender überdies auch große Datenmengen zukommen zu lassen. Für einige Betriebssysteme bekommt man die Software heutzutage ausschließlich auf CDs.

Während Linux in den ersten Tagen noch auf 2 Disketten (Boot- und Rootdisk von Jim Winstead jr.) und später auf rund 30 (SLS, Slackware) ausgeliefert wurde, muß man heutzutage lange nach einer Distribution auf Disketten suchen. Die Zusammenstellungen freier Betriebssysteme (Linux, Free-, Net- und OpenBSD) sind mit der Zeit so stark gewachsen, daß sie nur noch auf Massenspeichern ausgeliefert werden können.

[Schematische Darstellung]

Abbildung 1: CD-Erstellung unter Unix

Wenn diese Systeme auf CDs ausgeliefert werden ist es naheliegend, daß sich diese CDs auch unter Unix erstellen lassen. Dieser Artikel beschreibt die Erstellung und vermittelt Hintergrundwissen.

Der Name CD-ROM (Compact Disk Read Only Memory) deutet bereits an, daß sie nicht beschrieben werden können. Im Preßwerk werden mikroskopisch kleine Erhebungen und Vertiefungen auf die CD gepreßt und anschließend mit einer Alluminium-Schicht bedampft und versiegelt. Diese Erhebungen repräsentieren auf der CD gespeicherte Bits und werden mit einem feinen Laserstrahl abgetastet. Insgesamt lassen sich heutzutage auf herkömmlichen CDs rund 650 Megabytes speichern.

Neu sind sogenannte CD-R (CD-ROM Recordable), die anstelle der Alluminiumschicht mit einer farbigen Schicht versehen sind. Sie werden ohne Vertiefungen ausgeliefert. In einem CD-Schreiber wird der Laserstrahl mit mehr Energie erzeugt. Mit diesem werden die Erhebungen regelrecht in die farbige Schicht gebrannt. Daher stammt auch der Name CD-Brenner.

Welche Brenner?

Heutzutage kann man davon ausgehen, daß gängige CD-Schreiber bereits von der Unix-Software unterstützt werden. Dieses beinhaltet die aktuellen Modelle von Yamaha, HP, JVC, Philips, Plasmon, Plextor u.s.w. Einige alte Modelle werden nicht unterstützt, da sie zu alt sind. Dieses sind JVC XR-W1001, Pinnacle Micro RCD-202 und Ricoh RS-9200CD. Die Entwicklung ist inzwischen soweit vorangegangen, daß die Brenn-Software für Unix neben SCSI-Brennern auch ATAPI-Brenner ansteuern kann.

Wie in anderen Bereichen auch, in denen Hardware-Treiber als freie Software entwickelt werden, können nur bestimmte Schreiber unterstützt werden. Wenn die Funktionsweise der Schreiber bekannt ist, dann ist es nur eine Frage der Zeit, wann der Treiber geschrieben ist. Einige Hersteller geben die Spezifikationen ihrer Produkte jedoch nicht heraus, um so Firmengeheimnisse zu schützen. Freie Software zeichnet sich nicht nur dadurch aus, daß sie kostenlos über das Internet zu beziehen ist, sondern auch dadurch, daß man den kompletten Quellcode erhält. Daraus könnte man Rückschlüsse auf die Funktionsweise der Hardware ziehen.

Aus diesem Grund werden folgende CD-Schreiber nicht unterstützt: Creative Labs CDR 4210 JVC XR-W2001, XR-W2010 und XR-W2020 Panasonic CW-7501, Pinnacle Micro RCD-1000, RCD-5020 und RCD-5040, Plasmon CDR-4240, Ricoh RS-1060C, Sony CDU-928E und CDW-900E.

Wie bereits erwähnt, unterstützt die freie Unix-Software inzwischen nicht nur SCSI-Brenner sondern auch die billigeren ATAPI-Brenner. Hier sollte jedoch beachtet werden, daß IDE-Systeme höhere Last auf dem internen Datenbus - und für den Prozessor - bedeutet. Während man auf einem schnellen SCSI-System (150MHz oder schneller) beim Brennen einer CD mit vierfacher Geschwindigkeit problemlos einen Kernel kompilieren kann, sollte man auf einem IDE-System während des Brennvorgangs alle sonstigen Aktivitäten drastisch einschränken.

Die Festplatte, von der gebrannt wird, und der CD-Brenner sollten zudem nicht am gleichen IDE-Bus angeschlossen sein, da es sonst hin und wieder ebenfalls zu Abbrüchen kommen kann. Die SCSI-Technologie ist hier erheblich flexibler - jedoch auch teurer.

CD-Brenner werden normalerweise mit passender Software (meistens für Windows) ausgeliefert. Sollten Sie einen Brenner erwischt haben, der von der Unix-Software (noch) nicht unterstützt wird, dann können Sie zwar unter Unix selbst keine CDs brennen, jedoch weiterhin die CDs dort zusammenstellen.

Die Brenn-Software ist meistens in der Lage fertige Image-Dateien direkt auf CD zu brennen, ohne sie selbst zu erstellen. Mit diesen Image-Dateien wird nicht nur gearbeitet, wenn auf einem anderen Betriebssystem als unter Unix gebrannt wird. Unter Unix sieht es genauso aus.

Da eine CD am Stück geschrieben werden muß, also ohne abzusetzen, müssen die zu brennenden Daten am Stück vorliegen. Der Brenner benötigt einen kontinuierlichen Datenstrom. Wird dieser unterbrochen, z.B. weil gerade von anderer Stelle der Festplatte gelesen wird, dann wird der Brennvorgang abgebrochen und die CD ist hinüber.

Je nach verwendeter Brenn-Geschwindigkeit werden kontinuierlich 150kB/s (Single-Speed), 300kB/s (Double-Speed) oder 600kB/s (Quad-Speed) benötigt. Um die konstante Zufuhr mit Daten gewährleisten zu können, muß die CD vorher gemastert werden und als Imagedatei vorliegen. Technisch ist es ebenfalls möglich, das Image während der Erstellung brennen. Davon wird jedoch aufgrund des engen Timings abgeraten.

[cdrecord]

Abbildung 2: CD-Schreiben mit cdrecord

CD Mastern

Bevor eine CD gebrannt wird, muß sie gemastert werden. Das so erstellte Image kann anschließend beliebig oft auf CDs gebrannt werden. Um Benutzern das Brennen zu erleichtern stellen einige Organisationen sogar komplett gemasterte CD-Images im Internet zum Download zur Verfügung (z.B. http://cdimage.debian.org/)

Wie jedes Speicher-Medium, muß eine CD ein Dateisystem enthalten, in dem die Dateien organisiert sind. Oftmals soll die CD unter verschiedenen Betriebssystemen gelesen werden können. Daher kann kein Dateisystem verwendet werden, das nur für dieses Betriebssystem vorhanden ist. Aus diesem Grund wurde ein neues System entwickelt und man hat sich auf ISO-9660 als portablen Standard für alle Betriebssysteme geeinigt.

Das ISO-9660 Dateisystem zeichnet sich durch maximal 32 Zeichen lange Dateinamen aus. Die Dateien können dabei in bis zu 8 Unterverzeichnissen angeordnet werden. Beide Einschränkungen werden unter Linux umgangen, da meistens die RockRidge-Erweiterungen verwendet werden. Diese ermöglichen zum einen lange Dateinamen und bieten zum anderen die Möglichkeit, Dateiattribute, wie sie unter Unix üblich sind, zu verwenden.

Ein weiterer Vorteil bei der Verwendung der RockRidge-Erweiterungen ist die Umsetzung der Dateinamen von der kurzen Form auf die lange. Die Voreinstellung besagt nämlich, daß die Kurzform der Dateinamen in das von DOS her bekannte 8.3-Schema paßt. Daher können die so gemasterten CDs auch unter Betriebssystemen gelesen werden, die keine langen Dateinamen unterstützen oder diese anders darstellen.

Sollen die langen Dateinamen auch unter Windows sichtbar sein, dann werden (meistens zusätzlich) die Joliet-Erweiterungen benutzt. Um die CD schließlich unter MacOS als Macintosh HFS-Volume zu lesen, wird ebenfalls HFS beim Mastern hinzugefügt.

Wie von CDs gebootet werden kann, ist in der El Torito-Spezifikation beschrieben. Um dieses zu erreichen, muß auf der CD das Image einer bootfähigen 1.2MB, 1.44MB oder 2.88MB Diskette gespeichert sein. Die Position dieser Image-Dateien auf der CD wird über El Torito gespeichert. Das BIOS des Rechners liest während des Bootvorgangs die El Torito Informationen und springt dann zum Diskettenimage.

Das CD-Image enthält den Inhalte einer kompletten CD und kann auf jeder beliebigen lokalen Platte gespeichert werden. Das Dateisystem ist dabei irrelevant (eine DOS-formatierte Platte zum Austausch mit anderen Systemen ist z.B. ausreichend). Soll das Image gebrannt werden, dann können Netzwerk-Verzeichnisse, auf die z.B. über NFS, Samba oder AppleTalk zugegriffen wird, zu langsam sein und sollten vermieden werden. Sie können keinen konstanten Datenstrom garantieren.

FunktionProgramm
ISO-9660mkisofs/mkhybrid
RockRidgemkisofs/mkhybrid
Jolietmkhybrid
HFSmkhybrid
El Toritomkisofs/mkhybrid
Tabelle 1: CDs mastern

Zur Erstellung von Images stehen unter Unix zwei Programme, "mkisofs" und "mkhybrid" zur Verfügung. Das erste Programm unterstützt bereits die RockRidge- und El Torito-Erweiterungen. Wer HFS oder Joliet benötigt, z.B. damit die CD auch vernünftig unter Windows95 gelesen werden kann, der benutzt stattdessen "mkhybrid", welches eine Weiterentwicklung von "mkisofs" darstellt.

Beide Programme lesen eine komplette Verzeichnisstruktur ein und schreiben sie in ein Image. Dieses hat zur Folge, daß die zu schreibenden Daten komplett innerhalb eines Verzeichnisses vorliegen müssen. Es ist weder möglich, Dateien aus anderen Verzeichnissen hinzuzunehmen noch Dateien nachträglich hinzuzufügen.

Sie müssen überdies darauf achten, daß ihre Daten nicht den Platz von 650MB übersteigen, da das Image sonst größer ist als die CD fassen kann. Dieses würde in einer nicht geschlossenenen CD-Session enden. Solche CDs lassen sich nicht lesen. Um die Verzeichnisstruktur selbst auf der CD zu speichern, werden ebenfalls ein paar MB belegt.

-aAlle Dateien werden geschrieben. Normalerweise werden Dateien, die '~' oder '#' enthalten, nicht übernommen.
-A128 Zeichen lange Application ID. Dieser Text sollte die Anwendung auf der CD beschreiben.
-bBeschreibt den Pfad zum Boot-Image, falls von der CD gebootet werden soll.
-lVerwendet alle 32 Zeichen pro Pfad. Normalerweise wird die 8.3-Notation verwendet, um die CD auch unter DOS lesbar zu halten.
-m globDateien ausschließen.
-o filePfad der zur schreibenden Image-Datei
-P128 Zeichen lange Beschreibung des Publishers, normalerweise mit E-Mail-Adresse und Telefonnummer.
-p128 Zeichen lange Beschreibung des Erstellers der CD, normalerweise mit E-Mail-Adresse und Telefonnummer.
-RRockRidge RR und SUSP Blöcke zur feineren Beschreibung der Dateien schreiben.
-rWie -R, allerdings werden alle Dateien mit Mode 0444 (bzw. 0555 bei Programmen) und alle Verzeichnisse mit Mode 0555 geschrieben, damit sie von allen gelesen und ggf. ausgeführt werden können.
-TTRANS.TBL Dateien schreiben, um lange Dateinamen konvertieren zu können, wenn kein RockRidge unterstützt wird (z.B. Windows)
-VVolume ID der CD
-vErzeugt mehr Informationen während des Erzeugens des Images
-x pathSchließt path von der CD aus.
Tabelle 2: Die wichtigsten Parameter von mkisofs

Um zum Beispiel den lokalen FTP-Server auf CD zu brennen, wird das Image mit folgender Befehlszeile erzeugt. Das fertige Image liegt anschließend als "ftp.iso" im Verzeichnis /tmp. Dort muß natürlich ausreichend Platz vorhanden sein.

  mkisofs -o /tmp/ftp.iso -r -x /home/ftp/pub/Incoming /home/ftp/pub

Bei der Erstellung können Dateien ausgelassen werden. Standardmäßig werden alle Dateien, dessen Name '~' und '#' enthält, nicht mit ins Image aufgenommen. Dieses sind oftmals Sicherheitskopieen verschiedener Programme. Zusätzlich kann mit "-m" ein Muster (z.B. "*.bak") von Dateinamen angegeben werden, die ebenfalls nicht übernommen werden sollen. Dieser Parameter kann mehrfach verwendet werden.

Ganze Verzeichnisse können mit dem Parameter "-x" ausgeschlossen werden. Das dort angegebene Verzeichnis ist der komplette Verzeichnisname, es wird nicht relativ zum CD-Pfad berechnet. Wenn z.B. "/var/CDROM" alle Daten für die CD enthält, jedoch dort das Verzeichnis "test" nicht auf die CD kopiert werden soll, muß "-x /var/CDROM/test" als Parameter zu "mkisofs" angegeben werden. Dieser Parameter kann ebenfalls mehrfach benutzt werden.

Image testen

Unter Linux kann das so erstellte CD-Image nun getestet werden. Dazu wird neben Unterstützung für das ISO-9660-Dateisystem ein spezieller Treiber benötigt. Das sogenannte Loopback-Device ermöglicht es, Dateisysteme in Dateien zu mounten und wie sonst auch in die Verzeichnis-Struktur einzufügen. Dazu muß dieses in den Kernel eincompiliert oder als Modul verfügbar sein.

Ob das Loopback-Device vorhanden ist, läßt sich leicht durch die Befehle "insmod loop" und "cat /proc/devices" herausfinden. Der zweite Befehl muß eine Zeile mit "7 loop" anzeigen. Ist dieser Treiber im Kernel enthalten, dann wird das oben erzeugte Image mit folgendem Befehl ins Dateisystem gehängt.

  mount -r -t iso9660 -o loop /tmp/ftp.iso /cdrom

Fortan beinhaltet /cdrom den Inhalt der CD. Der Parameter "-r" sollte jeweils angegeben werden, wenn das Dateisystem read-only eingebunden wird. Wenn das Image gelöscht wird, muß die Verknüpfung im Dateisystem zuerst entfernt werden. Dieses geschieht mit dem Befehl "umount /cdrom".

[X-CD-Roast SCSI]

Abbildung 3: X-CD-Roast SCSI-Geräte werden automatisch erkannt

Brennen der CD

Zum Brennen der CD stehen unter Unix die Programme "cdwrite" und "cdrecord" zur Verfügung. "cdwrite" wird jedoch nicht mehr weiterentwickelt und unterstützt nur eine geringe Anzahl an Brennern. Daher wird heutzutage meistens "cdrecord" benutzt.

Die Brennsoftware muß roh auf den jeweiligen Brenner zugreifen, um direkt mit ihm zu kommunizieren. Der Treiber für den jeweiligen Brenner ist hier nicht im Kernel integriert, sondern in der Brenn-Software. Die üblicherweise verwendeten Gerätetreiber /dev/scd* und /dev/sd* greifen nicht direkt auf die SCSI-Geräte zu, sondern über einen Treiber im Kernel.

Daher werden zum Brennen andere Gerätedateien benutzt. Der Linux-Kernel muß daher den sogenannten "Generic SCSI"-Treiber enthalten. Analog zum Loopback-Treiber kann man die Existenz mit den Befehlen "insmod sg" und "cat /proc/devices" überprüfen. Ist der Treiber enthalten, dann muß der zweite Befehl eine Zeile mit "21 sg" anzeigen.

Die SCSI-Geräte stehen fortan als /dev/sg zur Verfügung. Zum Brennen der CD wird das Progamm "cdrecord" verwendet, welches direkt auf diese Gerätedateien zugreift. Die wichtigsten Parameter dieses Programms beschreiben die Adresse des Brenners und das zu schreibende Image.

dev=Spezifiziert den Brenner als bus-nr,scsi-id,lun. Wenn die Bus-Nr. gleich 0 ist, darf sie weggelassen werden.
speed=Gibt die Geschwindigkeit an, mit der gebrannt werden soll. 1, 2, 4 und 6 sind gültige Werte.
-ejectWenn die Befehle abgeschlossen sind, wird die CD ausgeworfen.
-vVerbosity hochsetzen. Es wird mehr auf dem Terminal geschrieben. Dieser Parameter kann mehrfach angegeben werden.
-dummyFührt alle Befehle aus, der Laserstrahl ist jedoch ausgeschaltet.
blankLöscht eine CD-RW.
driver=Setzt den zu verwendenden Treiber, falls der automatisch erkannte nicht passen sollte. Mit driver=help wird die Liste der möglichen Treiber angezeigt.
Tabelle 3: Die wichtigsten Parameter von cdrecord

Wenn der CD-Schreiber am ersten (bzw. einzigen) SCSI-Bus angeschlossen ist und die SCSI-ID 3 hat, dann sieht die Befehlszeile zum Brennen einer CD mit vierfacher Geschwindigkeit wie folgt aus:

  cdrecord dev=3,0 speed=4 -eject -v /tmp/ftp.iso

[X-CD-Roast]

Abbildung 4: Mit X-CD-Roast lassen sich bequem CDs brennen

X-CD-Roast

Wer lieber mit einer grafischen Schnittstelle arbeitet, für den ist X-CD-Roast genau das richtige. Das Programm stellt eine umfangreiche und komplexe Oberfläche für die bisher beschriebenen Programme zur Verfügung. Mit wenigen Mausklicken lassen sich einfach CDs brennen.

Da auf den Brenner schreibend meistens nur als Benutzer "root" zugegriffen werden kann, muß auch Xcdroast als dieser Benutzer gestartet werden. Bei den Kommandozeilen-orientierten Programmen ist dieses nicht weiter schwer, unter X11 muß jedoch bedacht werden, daß normalerweise nur der Benutzer, der X11 gestartet hat, auf der Oberfläche schreiben (und damit Programme darstellen) darf.

Um "root" die Erlaubnis zu geben, die Ausgabe des Programms auf dem lokalen X darzustellen, muß die Oberfläche kurzzeitig mit "xhost +rechnername" geöffnet werden. Als "root" wird die grafische Ausgabe des Programms mit "DISPLAY=rechnername:0.0; export DISPLAY" auf den Bildschirm des normalen Benutzers gelenkt. Anschließend kann das Programm wie gewohnt gestartet werden. Ist dieses geschehen, dann sollte X mit "xhost -rechnername" wieder geschlossen werden, um Mißbrauch vorzubeugen.

[X-CD-Roast Setup]

Abbildung 5: Feintuning mit X-CD-Roast

Direkt nach dem Aufruf von "xcdroast" wird man gebeten, das Setup auszuführen. Dort sieht man gleich, ob die Hardware korrekt erkannt wurde. Wenn der falsche Treiber für den Brenner eingestellt ist, wird er hier geändert. Wenn eine CD gemastert werden soll, dann muß für diese eine eigene Partition zur Verfügung stehen. Xcdroast kann ein CD-Image zur Zeit nicht an beliebiger Stelle im Verzeichnisbaum speichern.

Wenn Änderungen vorgenommen wurden, müssen die Einstellungen mit "Save" abgespeichert werden. Mit "Done" kehrt man in das Hauptmenü zurück. Dort stehen von nun an Tasten zum Mastern und Brennen von Daten- und Audio-CDs zur Verfügung.

Mailing-Liste

Entwickler und Anwender der hier vorgestellten Sofware diskutieren relevante Themen auf einer Mailing-Liste. Die Liste (cdwrite@other.debian.org) steht allen Interessenten offen. Wer in Sachen CD-Brennen unter Unix auf dem Laufenden bleiben möchte, der ist eingeladen sich dort einzuschreiben.

Um sich auf dieser Liste einzutragen, wird eine Mail an "cdwrite-request@other.debian.org" geschickt. In der Subject-Zeile muß das Wort "subscribe" stehen.

Weitere Quellen

Martin Schulze
Quelle: freeX 1/98