Inhaltsverzeichnis
Kommandozeilenprogramme als Grundlage
Das Brennen von CD unter Linux / Kommandozeile besteht aus zwei Vorgängen:
Erstellen einer einzelnen großen Datei, in die alle Dateien hineinkommen, die auf CD gebrannt werden sollen. Das Dateisystem in dieser Datei ist IsoImage.
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:
- In einem Unterverzeichnis (z.B /tmp/neueCD) erzeuge ich Links auf alle zu brennenden Dateien.
- 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
mkisofs -f folgt den Soft-Links.
mkisofs -J -no-bak -o /var/tmp/imag.iso /c/home /c/pcc /c/mb würde alle Verzeichnisse auf die CD in das Hauptverzeichnis kopieren.
(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:
- -J : Joliet extension : Lange Dateinamen für NT oder Win95
- -l : Lange Dateinamen für Amiga
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:
- cdrecord braucht ausreichend Rechte für den Zugriff auf die Brennerhardware:
- als root brennen oder
cdrecord SetUid-root machen
chmod u+s /usr/bin/cdrecord
- optional kann man nur einer speziellen Gruppe Ausführungsrechte erteilen
chmod o-x /usr/bin/cdrecord chgrp cdbrennen /usr/bin/cdrecord
- optional kann man nur einer speziellen Gruppe Ausführungsrechte erteilen
oder man kann nur dem Konsolenbenutzer die Ausführung mit root-Rechten erlauben (über PAM)
was man absolut NICHT machen sollte:
- Usern direkte Schreibrechte auf ein Device geben. Sie könnten dann weit mehr als CDs brennen.
- weiter besteht die Möglichkeit mit sudo normalen Benutzern die Rechte zu geben Programme als root zu starten.
- Zuerst die Gruppe 'burning' anlegen und die Benutzer dieser Gruppe zuweisen die brennen dürfen. Danach als root 'visudo' eingeben und folgende Einträge hinzufügen:
%burning ALL=NOPASSWD:/usr/bin/cdrecord %burning ALL=NOPASSWD:/usr/bin/cdrdao
Danach darf man als normaler Benutzer mit 'sudo /usr/bin/cdrecord' und 'sudo /usr/bin/cdrdao' die Programme als root ausführen. Wem das sudo tippen zuviel ist kann auch mit 'alias cdrecord='sudo /usr/bin/cdrecord' eine Alias definieren (z.B. in der ~/.bash_profile)
- Zuerst die Gruppe 'burning' anlegen und die Benutzer dieser Gruppe zuweisen die brennen dürfen. Danach als root 'visudo' eingeben und folgende Einträge hinzufügen:
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
Kleiner Workshop mit vielen Beispiel-Skripten