freeX: CDs Brennen leicht gemacht
|
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? |
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.
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.
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.
| Funktion | Programm |
|---|---|
| ISO-9660 | mkisofs/mkhybrid |
| RockRidge | mkisofs/mkhybrid |
| Joliet | mkhybrid |
| HFS | mkhybrid |
| El Torito | mkisofs/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.
| -a | Alle Dateien werden geschrieben. Normalerweise werden Dateien, die '~' oder '#' enthalten, nicht übernommen. |
| -A | 128 Zeichen lange Application ID. Dieser Text sollte die Anwendung auf der CD beschreiben. |
| -b | Beschreibt den Pfad zum Boot-Image, falls von der CD gebootet werden soll. |
| -l | Verwendet alle 32 Zeichen pro Pfad. Normalerweise wird die 8.3-Notation verwendet, um die CD auch unter DOS lesbar zu halten. |
| -m glob | Dateien ausschließen. |
| -o file | Pfad der zur schreibenden Image-Datei |
| -P | 128 Zeichen lange Beschreibung des Publishers, normalerweise mit E-Mail-Adresse und Telefonnummer. |
| -p | 128 Zeichen lange Beschreibung des Erstellers der CD, normalerweise mit E-Mail-Adresse und Telefonnummer. |
| -R | RockRidge RR und SUSP Blöcke zur feineren Beschreibung der Dateien schreiben. |
| -r | Wie -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. |
| -T | TRANS.TBL Dateien schreiben, um lange Dateinamen konvertieren zu können, wenn kein RockRidge unterstützt wird (z.B. Windows) |
| -V | Volume ID der CD |
| -v | Erzeugt mehr Informationen während des Erzeugens des Images |
| -x path | Schließ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".
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
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:
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.
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.
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.
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. -eject Wenn die Befehle abgeschlossen sind, wird die CD ausgeworfen. -v Verbosity hochsetzen. Es wird mehr auf dem Terminal geschrieben. Dieser Parameter kann mehrfach angegeben werden. -dummy Führt alle Befehle aus, der Laserstrahl ist jedoch ausgeschaltet. blank Lö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
cdrecord dev=3,0 speed=4 -eject -v /tmp/ftp.iso
Abbildung 4: Mit X-CD-Roast lassen sich bequem CDs brennen
X-CD-Roast
Abbildung 5: Feintuning mit X-CD-Roast
Mailing-Liste
Weitere Quellen
Quelle: freeX 1/98