Das FreeBSD-Handbuch
Zurück | Kapitel 19. Speichermedien | Weiter

# 19.6. CDs benutzen

Beigesteuert von Mike Meyer.

## 19.6.1. Einführung

CDs besitzen einige Eigenschaften, die sie von konventionellen Laufwerken unterscheiden. Zuerst konnten sie nicht beschrieben werden. Sie wurden so entworfen, dass sie ununterbrochen, ohne Verzögerungen durch Kopfbewegungen zwischen den Spuren, gelesen werden können. Sie konnten früher auch leichter als vergleichbar große Medien zwischen Systemen bewegt werden.

CDs besitzen Spuren, aber damit ist der Teil Daten gemeint, der ununterbrochen gelesen wird, und nicht eine physikalische Eigenschaft der CD. Um eine CD mit FreeBSD zu erstellen, werden die Daten jeder Spur der CD in Dateien vorbereitet und dann die Spuren auf die CD geschrieben.

Das ISO 9660-Dateisystem wurde entworfen, um mit diesen Unterschieden umzugehen. Leider hat es auch damals übliche Grenzen für Dateisysteme implementiert. Glücklicherweise existiert ein Erweiterungsmechanismus, der es korrekt geschriebenen CDs erlaubt, diese Grenzen zu überschreiten und dennoch auf Systemen zu funktionieren, die diese Erweiterungen nicht unterstützen.

Der Port `sysutils/cdrtools` enthält das Programm mkisofs(8), das eine Datei erstellt, die ein ISO 9660-Dateisystem enthält. Das Programm hat Optionen, um verschiedene Erweiterungen zu unterstützen, und wird unten beschrieben.

Welches Tool Sie zum Brennen von CDs benutzen, hängt davon ab, ob Ihr CD-Brenner ein ATAPI-Gerät ist oder nicht. Mit ATAPI-CD-Brennern wird `burncd` benutzt, das Teil des Basissystems ist. SCSI- und USB-CD-Brenner werden mit `cdrecord` aus `sysutils/cdrtools` benutzt. Zusätzlich ist es möglich, über das Modul ATAPI/CAM SCSI-Werkzeuge wie `cdrecord` auch für ATAPI-Geräte einzusetzen.

Wenn Sie eine Brennsoftware mit grafischer Benutzeroberfläche benötigen, sollten Sie sich X-CD-Roast oder K3b näher ansehen. Diese Werkzeuge können als Paket oder aus den Ports (`sysutils/xcdroast` und `sysutils/k3b`) installiert werden. Mit ATAPI-Hardware benötigt K3b das ATAPI/CAM-Modul.

## 19.6.2. mkisofs

Das Programm mkisofs(8) aus dem Port `sysutils/cdrtools` erstellt ein ISO 9660-Dateisystem, das ein Abbild eines Verzeichnisbaumes ist. Die einfachste Anwendung ist wie folgt:

    # mkisofs -o Imagedatei /path/to/tree

Dieses Kommando erstellt eine `Imagedatei`, die ein ISO 9660-Dateisystem enthält, das eine Kopie des Baumes unter `/path/to/tree` ist. Dabei werden die Dateinamen auf Namen abgebildet, die den Restriktionen des ISO 9660-Dateisystems entsprechen. Dateien mit Namen, die im ISO 9660-Dateisystem nicht gültig sind, bleiben unberücksichtigt.

Es einige Optionen, um diese Beschränkungen zu überwinden. Die unter UNIX® Systemen üblichen Rock-Ridge-Erweiterungen werden durch `-R` aktiviert, `-J` aktiviert die von Microsoft Systemen benutzten Joliet-Erweiterungen und `-hfs` dient dazu, um das von Mac OS® benutzte HFS zu erstellen.

Für CDs, die nur auf FreeBSD-Systemen verwendet werden sollen, kann `-U` genutzt werden, um alle Beschränkungen für Dateinamen aufzuheben. Zusammen mit `-R` wird ein Abbild des Dateisystems, ausgehend von dem Startpunkt im FreeBSD-Dateibaum, erstellt, obwohl dies den ISO 9660 Standard verletzen kann.

Die letzte übliche Option ist `-b`. Sie wird benutzt, um den Ort eines Bootimages einer “El Torito” bootbaren CD anzugeben. Das Argument zu dieser Option ist der Pfad zu einem Bootimage ausgehend von der Wurzel des Baumes, der auf die CD geschrieben werden soll. In der Voreinstellung erzeugt mkisofs(8) ein ISO-Image im “Diskettenemulations”-Modus. Dabei muss das Image genau 1200, 1440 oder 2880 KB groß sein. Einige Bootloader, darunter der auf den FreeBSD-Disks verwendete, kennen keinen Emulationsmodus. Daher sollten Sie in diesen Fällen die Option `-no-emul-boot` verwenden. Wenn `/tmp/myboot` ein bootbares FreeBSD-System enthält, dessen Bootimage sich in `/tmp/myboot/boot/cdboot` befindet, können Sie ein Abbild eines ISO 9660-Dateisystems in `/tmp/bootable.iso` wie folgt erstellen:

    # mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

Wenn Sie `md` in Ihrem Kernel konfiguriert haben, können Sie danach das Dateisystem einhängen:

    # mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
    # mount -t cd9660 /dev/md0 /mnt

Jetzt können Sie überprüfen, dass `/mnt` und `/tmp/myboot` identisch sind.

Sie können das Verhalten von mkisofs(8) mit einer Vielzahl von Optionen beeinflussen. Insbesondere können Sie das ISO 9660-Dateisystem modifizieren und Joliet- oder HFS-Dateisysteme brennen. Details dazu entnehmen Sie bitte der Hilfeseite mkisofs(8).

## 19.6.3. burncd

Wenn Sie einen ATAPI-CD-Brenner besitzen, können Sie `burncd` benutzen, um ein ISO-Image auf CD zu brennen. `burncd` ist Teil des Basissystems und unter `/usr/sbin/burncd` installiert. Da es nicht viele Optionen hat, ist es leicht zu benutzen:

    # burncd -f cddevice data imagefile.iso fixate

Dieses Kommando brennt eine Kopie von `imagefile.iso` auf das Gerät `cddevice`. In der Grundeinstellung wird das Gerät `/dev/acd0` benutzt. burncd(8) beschreibt, wie die Schreibgeschwindigkeit gesetzt wird, die CD ausgeworfen wird und Audiodaten geschrieben werden.

## 19.6.4. cdrecord

Wenn Sie keinen ATAPI-CD-Brenner besitzen, benutzen Sie `cdrecord`, um CDs zu brennen. `cdrecord` ist nicht Bestandteil des Basissystems. Sie müssen es entweder aus den Ports in `sysutils/cdrtools` oder dem passenden Paket installieren. Änderungen im Basissystem können Fehler im binären Programm verursachen und führen möglicherweise dazu, dass Sie einen “Untersetzer” brennen. Sie sollten daher den Port aktualisieren, wenn Sie Ihr System aktualisieren bzw. wenn Sie STABLE verfolgen, den Port aktualisieren, wenn es eine neue Version gibt.

Obwohl `cdrecord` viele Optionen besitzt, ist die grundlegende Anwendung einfacher als `burncd`. Ein ISO 9660-Image erstellen Sie mit:

    # cdrecord dev=device imagefile.iso

Der Knackpunkt in der Benutzung von `cdrecord` besteht darin, das richtige Argument zu `dev` zu finden. Benutzen Sie dazu den Schalter `-scanbus` von `cdrecord`, der eine ähnliche Ausgabe wie die folgende produziert:

    # cdrecord -scanbus
    Cdrecord 1.9 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling
    Using libscg version 'schily-0.1'
    scsibus0:
            0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
            0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
            0,2,0     2) *
            0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
            0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
            0,5,0     5) *
            0,6,0     6) *
            0,7,0     7) *
    scsibus1:
            1,0,0   100) *
            1,1,0   101) *
            1,2,0   102) *
            1,3,0   103) *
            1,4,0   104) *
            1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
            1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
            1,7,0   107) *

Für die aufgeführten Geräte in der Liste wird das passende Argument zu `dev` gegeben. Benutzen Sie die drei durch Kommas separierten Zahlen, die zu Ihrem CD-Brenner angegeben sind, als Argument für `dev`. Im Beispiel ist das CDRW-Gerät 1,5,0, so dass die passende Eingabe `dev=1,5,0` wäre. Einfachere Wege das Argument anzugeben, sind in cdrecord(1) beschrieben. Dort sollten Sie auch nach Informationen über Audiospuren, das Einstellen der Geschwindigkeit und ähnlichem suchen.

## 19.6.5. Kopieren von Audio-CDs

Um eine Kopie einer Audio-CD zu erstellen, kopieren Sie die Stücke der CD in einzelne Dateien und brennen diese Dateien dann auf eine leere CD. Das genaue Verfahren hängt davon ab, ob Sie ATAPI- oder SCSI-Laufwerke verwenden.

SCSI-Laufwerke

1. Kopieren Sie die Audiodaten mit `cdda2wav`:

       % cdda2wav -vall -D2,0 -B -Owav

2. Die erzeugten `.wav` Dateien schreiben Sie mit `cdrecord` auf eine leere CD:

       % cdrecord -v dev=2,0 -dao -useinfo  *.wav

   Das Argument von `dev` gibt das verwendete Gerät an, das Sie, wie in Abschnitt 19.6.4 beschrieben, ermitteln können.

ATAPI-Laufwerke

> Anmerkung: Über das Modul ATAPI/CAM kann `cdda2wav` auch mit ATAPI-Laufwerken verwendet werden. Diese Methode ist für die meisten Anwender besser geeignet als die im folgenden beschriebenen Methoden (Jitter-Korrektur, Big-/Little-Endian-Probleme und anderes mehr spielen hierbei eine Rolle).

1. Der ATAPI-CD-Treiber stellt die einzelnen Stücke der CD über die Dateien `/dev/acd`d`t`nn``, zur Verfügung. `d` bezeichnet die Laufwerksnummer und `nn` ist die Nummer des Stücks. Die Nummer ist immer zweistellig, das heißt es wird, wenn nötig, eine führende Null ausgegeben. Die Datei `/dev/acd0t01` ist also das erste Stück des ersten CD-Laufwerks. `/dev/acd0t02` ist das zweite Stück und `/dev/acd0t03` das dritte.

   Überprüfen Sie stets, ob die entsprechenden Dateien im Verzeichnis `/dev` auch angelegt werden. Sind die Einträge nicht vorhanden, weisen Sie Ihr System an, das Medium erneut zu testen:

       # dd if=/dev/acd0 of=/dev/null count=1

   > Anmerkung: Unter FreeBSD 4.X werden diese Einträge nicht mit dem Wert Null vordefiniert. Falls die entsprechenden Einträge unter `/dev` nicht vorhanden sind, müssen Sie diese hier von `MAKEDEV` anlegen lassen:

   >     # cd /dev
   >     # sh MAKEDEV acd0t99

2. Die einzelnen Stücke kopieren Sie mit dd(1). Sie müssen dazu eine spezielle Blockgröße angeben:

       # dd if=/dev/acd0t01 of=track1.cdr bs=2352
       # dd if=/dev/acd0t02 of=track2.cdr bs=2352
       ...

3. Die kopierten Dateien können Sie dann mit `burncd` brennen. Auf der Kommandozeile müssen Sie angeben, dass Sie Audio-Daten brennen wollen und dass das Medium fixiert werden soll:

       # burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate

## 19.6.6. Kopieren von Daten-CDs

Sie können eine Daten-CD in eine Datei kopieren, die einem Image entspricht, das mit mkisofs(8) erstellt wurde. Mit Hilfe dieses Images können Sie jede Daten-CD kopieren. Das folgende Beispiel verwendet `acd0` für das CD-ROM-Gerät. Wenn Sie ein anderes Laufwerk benutzen, setzen Sie bitte den richtigen Namen ein.

    # dd if=/dev/acd0 of=file.iso bs=2048

Danach haben Sie ein Image, das Sie wie oben beschrieben, auf eine CD brennen können.

## 19.6.7. Einhängen von Daten-CDs

Nachdem Sie eine Daten-CD gebrannt haben, wollen Sie wahrscheinlich auch die Daten auf der CD lesen. Dazu müssen Sie die CD in den Dateibaum einhängen. Die Voreinstellung für den Typ des Dateisystems von mount(8) ist `UFS`. Das System wird die Fehlermeldung “`Incorrect super block`” ausgeben, wenn Sie versuchen, die CD mit dem folgenden Kommando einzuhängen:

    # mount /dev/cd0 /mnt

Auf der CD befindet sich ja kein `UFS` Dateisystem, so dass der Versuch, die CD einzuhängen fehlschlägt. Sie müssen mount(8) sagen, dass es ein Dateisystem vom Typ `ISO9660` verwenden soll. Dies erreichen Sie durch die Angabe von `-t cd9660` auf der Kommandozeile. Wenn Sie also die CD-ROM `/dev/cd0` in `/mnt` einhängen wollen, führen Sie folgenden Befehl aus:

    # mount -t cd9660 /dev/cd0c /mnt

Abhängig vom verwendeten CD-ROM kann der Gerätename von dem im Beispiel (`/dev/cd0`) abweichen. Die Angabe von `-t cd9660` führt mount_cd9660(8) aus, so dass das Beispiel verkürzt werden kann:

    # mount_cd9660 /dev/cd0 /mnt

Auf diese Weise können Sie Daten-CDs von jedem Hersteller verwenden. Es kann allerdings zu Problemen mit CDs kommen, die verschiedene ISO9660-Erweiterungen benutzen. So speichern Joliet-CDs alle Dateinamen unter Verwendung von zwei Byte langen Unicode-Zeichen. Zwar unterstützt der FreeBSD-Kernel derzeit noch kein Unicode, der CD9660-Treiber erlaubt es aber, zur Laufzeit eine Konvertierungstabelle zu laden. Tauchen bei Ihnen also statt bestimmter Zeichen nur Fragezeichen auf, so müssen Sie über die Option `-C` den benötigten Zeichensatz angeben. Weitere Informationen zu diesem Problem finden Sie in der Manualpage mount_cd9660(8).

> Anmerkung: Damit der Kernel diese Zeichenkonvertierung (festgelegt durch die Option `-C`) erkennt, müssen Sie das Kernelmodul `cd9660_iconv.ko` laden. Dazu fügen Sie folgende Zeile in die Datei `loader.conf` ein:

>     cd9660_iconv_load="YES"

> Danach müssen Sie allerdings Ihr System neu starten. Alternativ können Sie das Kernelmodul auch direkt über kldload(8) laden.

Manchmal werden Sie die Meldung “`Device not configured`” erhalten, wenn Sie versuchen, eine CD-ROM einzuhängen. Für gewöhnlich liegt das daran, dass das Laufwerk meint es sei keine CD eingelegt, oder dass das Laufwerk auf dem Bus nicht erkannt wird. Es kann einige Sekunden dauern, bevor das Laufwerk merkt, dass eine CD eingelegt wurde. Seien Sie also geduldig.

Manchmal wird ein SCSI-CD-ROM nicht erkannt, weil es keine Zeit hatte, auf das Zurücksetzen des Busses zu antworten. Wenn Sie ein SCSI-CD-ROM besitzen, sollten Sie die folgende Zeile in Ihre Kernelkonfiguration aufnehmen und einen neuen Kernel bauen:

    options SCSI_DELAY=15000

Die Zeile bewirkt, dass nach dem Zurücksetzen des SCSI-Busses beim Booten 15 Sekunden gewartet wird, um dem CD-ROM-Laufwerk genügend Zeit zu geben, darauf zu antworten.

## 19.6.8. Brennen von rohen CDs

Sie können eine Datei auch direkt auf eine CD brennen, ohne vorher auf ihr ein ISO 9660-Dateisystem einzurichten. Einige Leute nutzen dies, um Datensicherungen durchzuführen. Diese Vorgehensweise hat den Vorteil, dass Sie schneller als das Brennen einer normalen CD ist.

    # burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate

Wenn Sie die Daten von einer solchen CD wieder zurückbekommen wollen, müssen Sie sie direkt von dem rohen Gerät lesen:

    # tar xzvf /dev/acd1

Eine auf diese Weise gefertigte CD können Sie nicht in das Dateisystem einhängen. Sie können Sie auch nicht auf einem anderen Betriebssystem lesen. Wenn Sie die erstellten CDs in das Dateisystem einhängen oder mit anderen Betriebssystemen austauschen wollen, müssen Sie mkisofs(8) wie oben beschrieben benutzen.

## 19.6.9. Der ATAPI/CAM Treiber

Beigetragen von Marc Fonvieille.

Mit diesem Treiber kann auf ATAPI-Geräte (wie CD-ROM-, CD-RW- oder DVD-Laufwerke) mithilfe des SCSI-Subsystems zugegriffen werden. Damit können Sie SCSI-Werkzeuge, wie `sysutils/cdrdao` oder cdrecord(1), zusammen mit einem ATAPI-Gerät benutzen.

Wenn Sie den Treiber benutzen wollen, fügen Sie die folgende Zeile in `/boot/loader.conf` ein:

    atapicam_load="YES"

Danach müssen Sie Ihr System neu starten, um den Treiber zu aktivieren.

> Anmerkung: Alternativ können Sie die Unterstützung für atapicam(4) auch in Ihren Kernel kompilieren. Dazu fügen Sie die folgende Zeile in Ihre Kernelkonfigurationsdatei ein:

>     device atapicam

> Die folgenden Zeilen werden ebenfalls benötigt, sollten aber schon Teil der Kernelkonfiguration sein:

>     device ata
>     device scbus
>     device cd
>     device pass

Übersetzen und installieren Sie den neuen Kernel. Der CD-Brenner sollte nun beim Neustart des Systems erkannt werden:

    acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
    cd0 at ata1 bus 0 target 0 lun 0
    cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
    cd0: 16.000MB/s transfers
    cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Über den Gerätenamen `/dev/cd0` können Sie nun auf das Laufwerk zugreifen. Wenn Sie beispielsweise eine CD-ROM in `/mnt` einhängen wollen, benutzen Sie das nachstehende Kommando:

    # mount -t cd9660 /dev/cd0 /mnt

Die SCSI-Adresse des Brenners können Sie als `root` wie folgt ermitteln:

    # camcontrol devlist
    <MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

Die SCSI-Adresse `1,0,0` können Sie mit den SCSI-Werkzeugen, zum Beispiel cdrecord(1), verwenden.

Weitere Informationen über das ATAPI/CAM- und das SCSI-System erhalten Sie in den Hilfeseiten atapicam(4) und cam(4).

Zurück | Zum Anfang | Weiter
USB Speichermedien | Nach oben | DVDs benutzen

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.