Kommandozeilenprogramme als Grundlage

Das Brennen von CD unter Linux / Kommandozeile besteht aus zwei Vorgängen:

  1. Erstellen einer einzelnen großen Datei, in die alle Dateien hineinkommen, die auf CD gebrannt werden sollen. Das Dateisystem in dieser Datei ist IsoImage.

  2. Das Kopieren dieses IsoImage-Abbildes auf einen CD-Rohling.

Die Kommandozeilentools mkisofs und cdrecord sind die Grundlage der meisten Brennprogramme (auch der grafischen Versionen) und nach einer gewissen Eingewöhnphase auch ohne GUI recht einfach zu benutzen.

cdrdao, ebenfalls ein Kommandozeilenprogramm, ist besonders zum Erstellen von Audio-CDs und anderen CDs, bei denen der DAO-Brennmodus angebracht ist, geeignet. Es wird ebenso wie cdrecord von vielen grafischen Oberflächen verwendet.

Tipps & Tricks

IsoImage erstellen

IsoImage erstellen (wenn man selbst eine Daten-CD zusammenstellen will und noch kein fertiges IsoImage hat):

mkisofs -J -R -o meinedaten.iso ~/zusammenstellung

IsoImage erstellen von mehreren Unterverzeichnissen

Die Vorgeghensweise ist:

  1. In einem Unterverzeichnis (z.B /tmp/neueCD) erzeuge ich Links auf alle zu brennenden Dateien.
  2. Ich erzeuge ein iso9660 Abbild, das alle diese Verzeichnisse enthält.

mkdir /tmp/neueCD
cd /tmp/neueCD
ln -s /c/home home
ln -s /c/pcc pcc
ln -s /c/mb mb
mkisofs -J -no-bak -f -o /tmp/imag.iso .

Hinweise

(Siehe auch : man mkisofs, mkisofs )

Das entstandene image imag.iso kann dann kopiert, per Mail versendet oder auf einen CD-Rohling gebrannt werden:

cdrecord -scanbus
cdrecord -dev=0,5,0 blank=fast
nice --3 cdrecord speed=4 -dev=0,5,0 /tmp/imag

IsoImages können auch durch das loop-Device geöffnet werden oder in eine unbenutzte Partition kopiert werden. Dafür kann man sich eine 700 MB große Partition einrichten (Beim installieren oder die alte 1GB-Festplatte wieder einbauen ;-) ) und das Image daraufkopieren.

Ein Beispiel für die Verwendung der Partitoion als iso-Zwischenspeicher mit anschließendem Mounten ist:

cd /home/hjh
mkisofs -o /dev/sdc1 . -J -no-bak
mount /dev/sdc1 /cd -t iso9660

Hinweise:

Eine vorhandene CD kann durch dd auf diese Partition kopiert werden:

dd if=/dev/hdc of=/dev/sdc1
mount /dev/sdc1 /cd -t iso9660

IsoImage von CD erstellen

Wenn man eine Daten-CD im Laufwerk (/dev/cdrom oder anderes) hat und ein IsoImage auf der Festplatte erstellen will. Das Kommando erhält auch den Bootsektor, d.h. die von diesem IsoImage gebrannten CDs sind ggf. auch bootfähig.

dd if=/dev/cdrom of=/pfad/mein.iso

CD-Brenner auffinden:

cdrecord -scanbus

(!) Damit wird der SCSI-Bus (oder bei EIDE: der emulierte SCSI-Bus ;) ) abgesucht nach CD-Brennern und eine Liste der gefundenen Geräte angezeigt, wo man sich dann was passendes raussuchen kann. Muss man i.d.R. nur einmalig machen.

Hinweis: Die meisten Oberflächen erledigen das automatisch.

Hinweis: Zumindest bei älteren Distributionen muss man, wenn man einen EIDE Brenner benutzt, in der /etc/lilo.conf dem Kernel die entsprechenden Kernelparameter mitgeben. In dem folgenden Beispiel ist /dev/hdb der EIDE Brenner.

append="hdb=ide-scsi"

Wer einen Kernel ab 2.6 (Durchweg eigentlich alle gängigen Distributionen) aufwärts verwendet braucht dies nicht mehr zu berücksichtigen, ab der Umstellung 2.4 auf 2.6 wurden die Schnittstellen dementsprechend angepasst. Es kann sogar zu Problemen führen, wenn man einen 2.6er Kernel verwendet und dazu noch "ide-scsi" verwendet.

CDRW löschen

Im Folgenden wird davon ausgegangen, dass der Brenner als Device 0,5,0 und mit der Geschwindigkeit 8 angesprochen werden kann:

cdrecord dev=0,5,0 speed=8 blank=fast

ISO-Image brennen:

cdrecord dev=0,5,0 speed=8 meinedaten.iso

Direktes brennen eines Datenverzeichnis (On the fly):

mkisofs -r -J ~/zusammenstellung | cdrecord -v dev=0,5,0 fs=6m speed=8 -

Bei diesem Befehl wird ein Datenverzeichnis (hier ~/zusammenstellung) über Pipe direkt zum brennen an cdrecord geschickt, ohne vorher ein IsoImage zu erstellen. Die Option fs=6m (Puffer) verhindert eine Brennunterbrechung und somit die Zerstörung des Rohlings. Am Ende des Befehls muß ein "-" stehen!

CD kopieren (funktioniert auch mit (s)vcds):

cdrdao --device 0,5,0

Wichtig:

Man kann sich das ganze auch durch ein Skript makecd (sowie darauf verweisenden SymLink makecdrw und readcd) etwas einfacher machen.

Multisession

Schon beim ersten Brennen Parameter -multi verwenden, z.B. cdrecord -multi dev=0,0,0 speed=8 backup.iso Der Trick ist, dass du beim Erstellen des zweiten IsoImages auf die erste Session verweisen musst.

Das machst Du z.B. so:

TRACKPOS=`cdrecord -msinfo dev=0,0,0`
mkisofs -J -R -f -o ../image.iso -C $TRACKPOS -M 0,0,0 .
cdrecord -v speed=8 dev=0,0,0 -eject -multi ../image.iso

Siehe hierzu im Detail mkisofs.

cdrecord -msinfo gibt zwei Werte aus, die in den mkisofs-Aufruf übergeben werden. Bei letzterem muss die CD bereits eingelegt sein. Bei der letzten Session das -multi weglassen, dann wird die CD abgeschlossen. -- BennySiegert 2002-10-23 17:55:57

Hier eine /BeispielAusgabe von cdrecord. - [Ich teste hier mal, ob es sinnvoll ist, sowas hier noch reinzubringen. Kommentare?] --FlorianKonnertz,11-02

Links

CdBrennen/PerKommandozeile (zuletzt geändert am 2007-12-23 22:45:24 durch localhost)