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.
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).
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.
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.
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
Kopieren Sie die Audiodaten mit cdda2wav:
% cdda2wav -vall -D2,0 -B -Owav
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).
Der ATAPI-CD-Treiber stellt die einzelnen Stücke der CD über die Dateien /dev/acddtnn, 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
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 ...
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
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.
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.
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.
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 atapicamDie 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
<[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.