Infoquellen
Über das Thema Brandmeister Pinguin sind im Jahr 2000
in einer Miniserie zwei Artikel im Computer-Magazin c't erschienen [Heft
3/2000, S.224ff und Heft 8/2000, S. 194ff ]. Im ersten Artikel wird die nötige Kernelkonfiguration,
das System der benötigten Module, und das Erzeugen von Images mit
mkisofs/mkhybrid besprochen. Der zweite Teil behandelt die erhältliche
Software: cdrecord, cdrdao, xcdroast, gcombust.
Weitere Möglichkeiten zur Information bieten:
Wir wollen das Thema auch in zwei (mal zwei) Teilen besprechen:
-
Hardware einrichten: EIDE- und SCSI-Brenner
-
Software benutzen: xcdroast und Programme in der shell
Hardware einrichten (Fall 1): EIDE-Brenner
EIDE-Brenner machen den Löwenanteil der Gerätelandschaft vor
allem im Home-Bereich aus - sie sind preisgünstig und erfordern keine
extra Controller-Karte, da der EIDE-Controller auf dem Mainboard mit zwei
Kanälen verteten ist. Treiber für Windows und Mac liegen immer
bei, nur Linux fehlt. Doch das muss nicht traurig machen. Es gibt eben
auch Programmierer, die für lau und Linux Treiber schreiben - in diesem
Falle das ide-scsi Modul, das eine SCSI-Emulation für IDE-Laufwerke
in
das Betriebssystem einbaut. Schlussendlich sieht der Kernel einen EIDE-Brenner
als SCSI-Gerät an. Damit können Brennprogramme wie cdrecord (für
das diverse grafische Oberflächen wie das legendäre xcdroast,
das KDE-Programm KreateCD oder gcombust für gtk/gnome existieren)
und cdrdao gut umgehen.
Um einen EIDE-Brenner nutzen zu können, müssen wir also zuerst einmal einen neuen Kernel kompilieren:
Dabei ist der "normale" IDE/ATAPI CDROM Support zu deaktivieren:
Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/m/n/?] n
und stattdessen die SCSI Emulation für zu wählen:
SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) [N/y/m/?] y
Weiterhin müssen natürlich die gängigen Module, die zum Thema SCSI im Teil 2 der Hardwareeinrichtung genannt sind, kompiliert werden.
Sofern alles geklappt hat, sollte der CD-Brenner bei den IDE-Geräten
wie folgt auftauchen (dabei wird er noch als CDROM erkannt):
ide: i82371 PIIX (Triton) on PCI bus 0 function 57
ide0: BM-DMA at 0xf000-0xf007
ide1: BM-DMA at 0xf008-0xf00f
hda: Seagate Technology 1275MB - ST31276A, 1221MB w/0kB Cache, CHS=6
hdb: JVC CD-R XR-W2082, ATAPI CDROM drive - enabling SCSI emulation
ATAPI overlap supported: No
hdc: WDC AC420400D, 19470MB w/1966kB Cache, CHS=39560/16/63, DMA
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
Außerdem taucht er dann noch einmal unter der Rubrik SCSI auf:
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
kernel: scsi : 1 host.
Vendor: JVC Model: XR-W2082 Rev: 1.06
Type: CD-ROM ANSI SCSI revision: 03
scsi : detected total.
Mit dem Programm cdrecord
können wir den SCSI-Bus nach vorhandenen Geräten absuchen, sogar
in der SCSI-Emulation, wobei manche IDE-CD-Brenner immer noch als
einfache CDROM erkannt werden ;)
cdrecord -scanbus |
Cdrecord release 1.8a14 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
0) 'JVC ' 'XR-W2082 ' '1.06' Removable CD-ROM
1) *
2) *
3) *
4) *
5) *
6) *
7) *
|
Wenn der CD-Brenner ähnlich wie im Beispiel in der Liste auftaucht, dann
sollte alles funktionieren. Die Handhabung unterscheidet sich dabei nicht
von der eines "echten" SCSI-Brenners.
Was die Geschwindigkeit angeht, so ist man meist mit zweifacher Geschwindigkeit
auf der sicheren Seite, ohne einen Rohling zu riskieren.
Hardware einrichten (Fall 2): SCSI-Brenner
Für CD-Brenner mit SCSI-Anschluss gilt: gibt es einen Treiber (Modul)
für den SCSI-Controller im System, läuft auch der Brenner (hüstel).
Wenn bei der Linux-Installation schon ein SCSI-CDROM-Laufwerk mit eingerichtet
wurde, ist wahrscheinlich im installierten Standard-Kernel alles Nötige
vorhanden, damit auch der SCSI-Brenner läuft. Ansonsten müsste
man die benötigten Module mal mit
modprobe [Modulname Optionen]
von Hand testen, und eventuell einen neuen Kernel kompilieren.
Folgende Kerneloptionen/Module sind notwendig (Kernel 2.2):
SCSI support | scsi_mod | Modul |
SCSI CD-ROM support | sr_mod | Modul |
SCSI generic support | sg | Modul |
SCSI controller low level driver | aha1512 (z.B.) | Modul |
ISO9660 Dateisystem support | isofs | Modul |
MS Joliet Dateisystem support | | fest einkompiliert |
Die Bootmeldung des erkannten Brenners kann man sich mit dmesg|more
ansehen:
scsi0 : Tekram DC390/AM53C974 V2.0d23 1999/08/26
scsi : 1 hosts.
Vendor: YAMAHA Model: CDR-400t Rev: 1.0009
Type: CD-WRITER ANSI SCSI revision: 02
Brennerprogramme benutzen die Zuweisung der Geräte nach der Formel
dev=Bus,ID,LUN.
Dabei ist Bus die Nummer des SCSI-Controllers, beginnend mit 0. ID bezeichnet
die SCSI-ID des Brenners, LUN ist immer gleich 0. Ein Brenner am 1.SCSI-Controller
mit der SCSI-ID 3 wird also mit dev=0,3,0 bezeichnet.
Alle Optionen mit xcdroast
Das bekannteste und wohl meist gebrauchte Brennprogramm für Linux ist xcdroast von Thomas Niederreiter. Es ist sehr übersichtlich gegliedert und man kann schnell solche Sachen machen wie z.B. CD kopieren, Audio-CD aus verschiedenen WAV zusammenstellen und eine Backup-CD aus verschiedenen Dateien/Verzeichnissen zusammenklicken. Die Geräte (CD-ROM, Brenner) werden automatisch erkannt (technisch gesehen benutzt xcdroast den Befehl cdrecord -scanbus ).
Die Programm-Versionen bis 0.96 benutzen Tcl/Tk zur Darstellung der grafischen Oberfläche. Ab Version 0.98 kommt GTK+ zum Einsatz, zur Zeit gibt es hiervon schon stabile beta-Versionen. Die Bedienung von xcdroast ist fast selbsterklärend, ansonsten hilft ein Blick in die mitgelieferte Doku.
Das Programm läuft default mit root-Rechten. Will man als Normal-Benutzer brennen, sollte man sich eine Gruppe brenner anlegen, die entsprechenden User dort eintragen und die Rechte und Ausführungsbedingungen richtig setzen. Gruppen/Benutzer-Eintragungen kann man z.B. bei RedHat mit linuxconf und bei SuSE mit yast machen, oder auch per Hand.
groupadd -g 200 -o brenner ;
usermod -G brenner ;
chgrp brenner /usr/bin/xcdroast ;
chmod o-x /usr/bin/xcdroast ;
chmod +s /usr/bin/xcdroast
Den temporär benötigten Speicherplatz (für das CD-Image) legt man unter Setup/HD Setup an. Man sollte explizit ein Verzeichnis auf einer gemounteten Platte angeben, sonst könnte jeder Benutzer Partitionen löschen.
Brennerprogramme in der shell
Kommandozeilen-Programme lassen sich gut in Shell-Scripte einbauen, so dass man bestimmte Aufgaben wie CD-Kopieren oder ein Backup durch Eingabe eines einzigen Wortes bzw. automatisch mittels at oder cron durchführen kann. Die inkrementelle Sicherung der Konfiguration in /etc oder der benutzerdefinierten Einstellungen und Daten im /home-Zweig sind als Beispiele zu nennen.
Auf diese Wiese lassen sich die Fähigkeiten von cdrecord, cdrdao und der bash richtig ausreizen. Es ist so auch ohne X-Windows möglich, einen alten 486 DX-2/66 mit 16MB RAM, IDE/VLB-SCSI-Controller, 700MB Festplatte und Brenner, in eine Kopiermaschine zu verwandeln. Voraussetzung für das Kopieren von Audio-CD's, oder die Umwandlung z.B. in wav- oder mp3-Dateien, ist das Extrahieren der Audio-Daten. Der Fachbegriff nennt sich Digital Audio Extracting (DAE). Alte CD-ROM Laufwerke können das nicht unbedingt (z.B. mein altes SCSI-CD-ROM Sanyo CRD-254SH), alle neuen CD-ROM Laufwerke und Brenner (egal ob EIDE oder SCSI) sind dazu aber in der Lage.
Informationen über einen Rohling im Brenner mit SCSI-ID 4 erhält
man mit:
cdrecord -atip dev=0,4,0 |
Cdrecord release 1.8a30 Copyright (C) 1995-1999 Jörg Schilling
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Using libscg version 'schily-0.1'
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities :
Vendor_info : 'YAMAHA '
Identifikation : 'CDR400t '
Revision : '1.0q'
Device seems to be: Yamaha CDR-400.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : SWABAUDIO
ATIP info from disk:
Indicated writing power: 4
Is not unrestricted
Is not erasable
ATIP start of lead in: -11580 (97:27/45)
ATIP start of lead out: 333226 (74:05/01)
Disktype: Short strategy type (Phthalocyanine or similar)
Manuf. index: 9
Manufacturer: Kodak Japan Limited
|
Das Kommando zeigt zuerst die Einstellungen des Benners an, inklusive maximaler Brenngeschwindigkeit ("writing power: 4").
Dann folgen die Hersteller-Informationen auf dem Rohling, wie maximal bespielbare Länge, Typ usw.
Es ist sehr interessant, welche bekannten Firmen für unbekannte Labels
und umgekehrt pressen lassen ;-).
Inhaltsverzeichnis (TOC) und Länge einer Audio- oder Daten-CD lassen sich bestimmen mit:
cdrecord -toc dev=0,3,0 |
Cdrecord release 1.8a30 Copyright
(C) 1995-1999 Jörg Schilling scsidev: '0,3,0'
scsibus: 0 target: 3 lun: 0
Using libscg version 'schily-0.1'
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC LINKED
Vendor_info : 'SONY '
Identifikation : 'CD-ROM CDU-76S '
Revision : '1.1a'
Device seems to be: Generic CD-ROM.
Using generic SCSI-2 CD driver (scsi2_cd).
Driver flags :
first: 1 last 13
track: 1 lba: 32 ( 128) 00:02:32 adr: 1 control: 0 mode: -1
track: 2 lba: 26552 ( 106208) 05:56:02 adr: 1 control: 0 mode: -1
track: 3 lba: 52640 ( 210560) 11:43:65 adr: 1 control: 0 mode: -1
track: 4 lba: 74027 ( 296108) 16:29:02 adr: 1 control: 0 mode: -1
track: 5 lba: 95217 ( 380868) 21:11:42 adr: 1 control: 0 mode: -1
track: 6 lba: 117572 ( 470288) 26:09:47 adr: 1 control: 0 mode: -1
track: 7 lba: 144182 ( 576728) 32:04:32 adr: 1 control: 0 mode: -1
track: 8 lba: 163885 ( 655540) 36:27:10 adr: 1 control: 0 mode: -1
track: 9 lba: 188545 ( 754180) 41:55:70 adr: 1 control: 0 mode: -1
track: 10 lba: 209257 ( 837028) 46:32:07 adr: 1 control: 0 mode: -1
track: 11 lba: 231212 ( 924848) 51:24:62 adr: 1 control: 0 mode: -1
track: 12 lba: 253032 ( 1012128) 56:15:57 adr: 1 control: 0 mode: -1
track: 13 lba: 281437 ( 1125748) 62:34:37 adr: 1 control: 0 mode: -1
track:lout lba: 337525 ( 1350100) 75:02:25 adr: 1 control: 0 mode: -1
|
Um eine Audio-CD im CD-ROM-Laufwerk (SCSI-ID 3) auf den Rohling im Brenner
(SCSI-ID 5) mit zweifacher Geschwindigkeit zu kopieren, reicht folgendes:
nice --18 cdrdao copy --source-device 0,3,0 --device 0,5,0 --speed 2
Der nice-Wert von -18 sagt dem System, das dieser Prozess absolutem Vorrang
hat. Damit wird gesichert, dass kein zu öffnendes netscape oder gimp
den Brennvorgang unterbricht, weil der Puffer zwischenzeitlich leerläft
und dem Laser kurzzeitig die Daten fehlen. Zu achten wäre noch darauf,
dass der Befehl in einem Verzeichnis abgesetzt wird, in dem genug Platz
für die zwischenzeiliche Speicherung des CD-Inhalts - also ca. 650-690
MB - vorhanden ist.
Man kann auch ohne Plattenplatz, also on-the-fly, kopieren:
nice --18 cdrdao copy --on-the-fly --source-device 0,3,0 --device 0,5,0
Den Disc-At-Once Modus kann man immer dann gebrauchen, wenn Audio- oder
Daten-CD's einfach nur zu kopieren sind.
Möchte man Daten sichern, ist das Gespann mkisofs/cdrecord die
beste Wahl. Mit cdrecord kann man im Track-At-Once Modus (TAO) u.a. auch CD-RW's beschreiben. Zuerst wird immer ein Image der Daten erstellt, z.B. um den /home Zweig - also alle Benutzer-Daten - (ohne Komprimierung) zu sichern:
mkisofs -o isoimage.raw -R -J /home
Der Befehl erstellt das Image isoimage.raw im aktuellen Verzeichnis,
mit allen Dateienn aus /home, mit Joliet (-J) und Rockridge (-R) Format. Weitere Optionen zeigt man mkisofs !
Man kann das Image überprüfen mit:
mount isoimage.raw -r -t iso9660 -o loop /mnt
ls -al /mnt
Hier zeigt ls den Inhalt des erzeugten ISO9660 Dateisystems in der Datei isoimage.raw . Im übrigen taucht das Dateisystem auch bei einem df auf. Danach umount /mnt nicht vergessen, denn es ist keine gute Idee, ein gemountetes Dateisystem mit cdrecord auszulesen !
Danach kommt das Brennen des Images auf den Rohling. Dabei wird der Fortschritt in der Shell angezeigt ("-v"), die Geschwindigkeit ist 2-fach ("speed=2"), der Brenner hat die ID 5 ("dev=0,5,0"), und die fertige CD soll nach dem Brennen ausgespuckt werden ("-eject").
cdrecord -v speed=2 dev=0,5,0 -eject isoimage.raw |
Cdrecord release 1.8a30 Copyright (C) 1995-1999 Jörg Schilling
TOC Type: 3 = CD-ROM XA mode 2
scsidev: '0,5,0'
scsibus: 0 target: 5 lun: 0
Using libscg version 'schily-0.1'
atapi: 0
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities :
Vendor_info : 'YAMAHA '
Identifikation : 'CDR400t '
Revision : '1.0q'
Device seems to be: Yamaha CDR-400.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : SWABAUDIO
Drive buf size : 1176000 = 1148 KB
FIFO size : 4194304 = 4096 KB
Track 01: data 20 MB
Total size: 23 MB (02:19.25) = 10444 sectors
Lout start: 23 MB (02:21/19) = 10444 sectors
Current Secsize: 2048
ATIP info from disk:
Indicated writing power: 4
Is not unrestricted
Is not erasable
ATIP start of lead in: -11580 (97:27/45)
ATIP start of lead out: 333226 (74:05/01)
Disk type: Short strategy type (Phthalocyanine or similar)
Manuf. index: 9
Manufacturer: Kodak Japan Limited
...
Last chance to quit, starting real write in 1 seconds.
Waiting for reader process to fill input-buffer ... input-buffer ready.
Starting new track at sector: 0
Track 02: 20 of 20 MB written (fifo 100%).
Track 02: Total bytes read/written: 21385216/21385216 (10442 sectors).
Writing time: 90.939s
Fixating...
Fixating time: 47.316s
cdrecord: fifo had 653 puts and 653 gets.
cdrecord: fifo was 0 times empty and 512 times full, min fill was 98%.
|
Bei Multisession-CD's, auf die man den nächsten Rutsch aufbrennen möchte, muss die vorhergehende Session mit Start-und Endsektor ermittelt werden:
cdrecord -msinfo dev=0,5,0 |
0,24906
|
Bei einem leeren Rohling ist natürlich keine Session drauf, cdrecord bringt dann eine Fehlermeldung: "cdrecord: Input/output error. read toc: scsi sendcmd: retryable error ..."
Mit mkisofs wird die vorhergehende Session erst importiert und der zu sichernden Dateisystem-Zweig (hier: /home) angehängt:
mkisofs -o isoimage_2.raw -R -J -C 0,24906 -M /dev/cdrom /home ;
cdrecord -v speed=4 dev=0,5,0 -eject -multi isoimage_2.raw
Man sieht hier auch, dass die Notation der Devices (/dev/cdrom!) bei mkisofs anders ist als bei cdrecord. Die Option "-C 0,2906" sorgt für den richtigen Startpunkt, "-M" heisst Multisession, ebenso wie "multi" bei cdrecord. Auf den ersten Blick wirkt das Ganze etwas kompliziert. In selbstgeschriebenen Shell-Scripten, welche z.B. mittels grep cdrecord-Ausgaben auswerten und die Optionen automatisch richtig einsetzen, ist damit ein Backup auf RW-Medien elegant zu lösen. Wenn das zu schwierig oder die Datenmenge zu gross ist, löscht man vorher eine CD-RW mit:
cdrecord -force blank=all dev=0,5,0
Das Vertauschen der SCSI-ID's wäre bei diesem Befehl tödlich - "-force" heisst "Fehler ignorieren" und löscht eventuell bei "dev=0,1,0" das ganze System auf der 1.Festplatte ?
Andreas Kraska,
Tobias Stöber
|