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.
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, „cdrecord“
beschrieben, ermitteln können.
Ü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/acd
,
zur Verfügung. d
tnn
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
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).
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:
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:
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:
Danach müssen Sie Ihr System neu starten, um den Treiber zu aktivieren.
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:
Die folgenden Zeilen werden ebenfalls benötigt, sollten aber schon Teil der Kernelkonfiguration sein:
Übersetzen und installieren Sie den neuen Kernel. Der CD-Brenner sollte nun beim Neustart des Systems erkannt werden:
Ü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).
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>.