CDs brennen unter Linux

Von Arne

Heute beschreibe ich mal wie man unter Linux eine CD Brennen kann, und zwar nur mit Tools auf Konsolen-Ebene. Wir brauchen genau 2 Programme, die uns fast alles ermöglichen:
cdrecord
mkisofs


Sind beide Programme installiert und in einer ausreichend aktuellen Version vorhanden kanns losgehen.
Ich benutze die folgenden Versionen:

$ rpm -q cdrecord
cdrecord-1.11-0.a32.1mdk
$ rpm -q mkisofs
mkisofs-1.15-0.a32.1mdk

ISO Image erstellen

Cdrecord ist nur in der Lage Iso-Images auf eine CD zu brennen, deshalb beschreibe ich zuerst wie man mit mkisofs ein Iso-Image erstellt. Hat man schon ein Iso-Image kann man unten weiterlesen.
Vorausgesetzt man hat sich schon überlget, welche Daten man brennen will, sollte man diese auf der Festplatte, so anordnen, wie sie auf der CD erscheinen sollen, d.h.Unterverzeichnisse usw. sollten schon angelegt sein. Ich nehme an, die Daten liegen in /mnt/daten und allen darunter leigenden Ordner. Außerdem sollte man vorher prüfen, dass die maximale Kapazität der CD nicht überschritten wird. Sind alle Voraussetzungen erfüllt kann es losgehen:
Wir erstellen das Iso-Image mit dem Befehl

$ mkisofs -o <outputfile> -J -r -v -V <diskname> /path/to/data

# mkisofs -o daten.iso -J -r -v -V daten_disk /mnt/daten
mkisofs 1.15a32 (i586-mandrake-linux-gnu)
Scanning /mnt/daten
Writing:   Initial Padbock                         Start Block 0
Done with: Initial Padbock                         Block(s)    16
Writing:   Primary Volume Descriptor               Start Block 16
Done with: Primary Volume Descriptor               Block(s)    1
Writing:   Joliet Volume Descriptor                Start Block 17
Done with: Joliet Volume Descriptor                Block(s)    1
Writing:   End Volume Descriptor                   Start Block 18
Done with: End Volume Descriptor                   Block(s)    1
Writing:   Version block                           Start Block 19
Done with: Version block                           Block(s)    1
Writing:   Path table                              Start Block 20
Done with: Path table                              Block(s)    4
Writing:   Joliet path table                       Start Block 24
Done with: Joliet path table                       Block(s)    4
Writing:   Directory tree                          Start Block 28
Done with: Directory tree                          Block(s)    1
Writing:   Joliet directory tree                   Start Block 29
Done with: Joliet directory tree                   Block(s)    1
Writing:   Directory tree cleanup                  Start Block 30
Done with: Directory tree cleanup                  Block(s)    0
Writing:   Extension record                        Start Block 30
Done with: Extension record                        Block(s)    1
Writing:   The File(s)                             Start Block 31
  1.68% done, estimate finish Thu Apr 24 19:33:39 2003
  3.37% done, estimate finish Thu Apr 24 19:33:39 2003
 [...]
 95.88% done, estimate finish Thu Apr 24 19:33:13 2003
 97.56% done, estimate finish Thu Apr 24 19:33:12 2003
 99.24% done, estimate finish Thu Apr 24 19:33:12 2003
Total translation table size: 0
Total rockridge attributes bytes: 351
Total directory bytes: 0
Path table size(bytes): 10
Done with: The File(s)                             Block(s)    297217
Writing:   Ending pad block                        Start Block 297248
Done with: Ending pad block                        Block(s)    16
Max brk space used 7864
297264 extents written (580 Mb)

Jetzt haben wir ein 580MB großes Iso-Image. Bevor wir es auf CD Brennen überprüfen wir sicherheitshalber den Inhalt, denn eine CD Brennt man im Allgemeinen nur einmal.
Mit dem Befehl mount können wir das Iso-Image im Dateisystem einhängen.
# mkdir /mnt/iso && mount -t iso9660 -o ro,loop=/dev/loop0 daten.iso /mnt/iso

Mit ls -al /mnt/iso können wir jetzt den Inahlt des Iso‘s überprüfen bevor es gebrannt wird.

Die CD Brennen

Nun haben wir ein Iso-Image welches auf die CD gebrannt werden soll. Eigentlich ist das jetzt der einfache Teil...
Mit dem Tool cdrecord lässt sich ein Iso-Image relativ leicht auf CD Brennen, die einzigste Hürde ist, dass man herausfinden muss, welches SCSI Device der CD Brenner ist. Übrigens wird unter Linux auch ein IDE Brenner als SCSI Device angesprochen, über eine Emulation die normalerweise im Kernel vorhanden sein sollte.
lsmod | grep scsi sollte Auschluß geben, ob das SCSI Modul im Kernel geladen ist.

# /sbin/lsmod | grep scsi
ide-scsi                8212   0
scsi_mod               90372   3  [sd_mod sr_mod ide-scsi]

Wenn bei euch auch das ide-scsi Modul geladen ist, sollte alles in Ordnung sein. Klappt die SCSI Emulation nicht, kann diese How-To leider im Moment nicht helfen.

Als nächstes lassen wir von cdrecord den scsi-bus scannen um alle SCSI Geräte zu erkennen:
# cdrecord -scanbus
Cdrecord 1.11a32 (i586-mandrake-linux-gnu) Copyright (C) 1995-2002
Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version ‘schily-0.6‘
scsibus0:
        0,0,0     0) *
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) ‘PHILIPS ‘ ‘PCRW1208        ‘ ‘ 1.2‘ Removable CD-ROM
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *

Jetzt wissen wir, dass der CD Brenner die Device Nummer 0,3,0 hat.
Um mit cdrecord jetzt das Iso-Image zu brennen benutzen wir folgenden Befehl:
cdrecord -v -eject speed=12 -dev=0,3,0 daten.iso, nach dem einlegen eines Rohlings in den Brenner kann es losgehen:
# cdrecord -v -eject speed=12 dev=0,3,0 daten.iso
Cdrecord 1.11a32 (i586-mandrake-linux-gnu) Copyright (C) 1995-2002
Jörg Schilling
TOC Type: 1 = CD-ROM
scsidev: ‘0,3,0‘
scsibus: 0 target: 3 lun: 0
Linux sg driver version: 3.1.24
Using libscg version ‘schily-0.6‘
atapi: 1
Device type    : Removable CD-ROM
Version        : 0
Response Format: 1
Vendor_info    : ‘PHILIPS ‘
Identifikation : ‘PCRW1208        ‘
Revision       : ‘ 1.2‘
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags   : SWABAUDIO
Supported modes: TAO PACKET RAW/R16 RAW/R96R
Drive buf size : 3244032 = 3168 KB
FIFO size      : 4194304 = 4096 KB
Track 01: data   580 MB
Total size:      666 MB (66:03.54) = 297266 sectors
Lout start:      667 MB (66:05/41) = 297266 sectors
Current Secsize: 2048
ATIP info from disk:
  Indicated writing power: 5
  Is not unrestricted
  Is not erasable
  Disk sub type: Medium Type B, low Beta category (B-) (4)
  ATIP start of lead in:  -11644 (97:26/56)
  ATIP start of lead out: 359849 (79:59/74)
Disk type:    Short strategy type (Phthalocyanine or similar)
Manuf. index: 10
Manufacturer: Lead Data Inc.
Blocks total: 359849 Blocks current: 359849 Blocks remaining: 62583
Starting to write CD/DVD at speed 12 in real TAO mode for single session.
Last chance to quit, starting real write in 0 seconds. Operation starts.
Waiting for reader process to fill input buffer ... input buffer ready.
Performing OPC...
Starting new track at sector: 0
Track 01:  580 of  580 MB written (fifo 100%) [buf  97%]  12.6x.
Track 01: Total bytes read/written: 608796672/608796672 (297264 sectors).
Writing  time:  348.138s
Fixating...
Fixating time:   23.645s
Average write speed  11.8x.
Min drive buffer fill was 95%
cdrecord: fifo had 9590 puts and 9590 gets.
cdrecord: fifo was 0 times empty and 4788 times full, min fill was 93%.

CD mounten

Nun haben wir ein fertig gebranntes Iso-Image auf der CD. Wir werden die CD nun mounten um zu testen, ob alles richtig geklappt hat.
Wir benutzen den Befehl mount:

# mount /dev/cdrom /mnt/cdrom

Mit dem Tool ls kann man nun den Inhalt überprüfen, man bekommt die CD wieder aus dem Laufwerk, indem man sie wieder aushängt.
# umount /mnt/cdrom

Fazit

Wir haben es bis jetzt geschafft Iso-Images zu erstellen und auf CD zu brennen, das direkte kopieren einer CD bleibt als Übung für den Leser offen.

Dieses How-To wurde unter Mandrake 9.0 entwickelt und getestet. Die Unterschiede zu anderen Distributionen sollten sich in Grenzen halten. Größere Unterschiede gibt es nur mit dem neuen 2.6er Kernel, hier wird beim Cd-brennen keine Scsi-Emulation mehr benötigt.

 


 

Vielleicht auch interessant:


Über den Autor

Wenn Arne keine Artikel für planet-rcs schreibt dann programmiert er Webanwendungen in Python und trainiert mit dem Fahrrad für die Vattenfall-Cyclassics.

Feedback