
Mein Freund hat versucht, das CD-ROM-Gerät über das Netzwerk mithilfe eines Servers zu exportieren nbd
, aber wir haben festgestellt, dass dies zwar bei Daten-CDs funktioniert, Audio-CDs sich jedoch nicht wie normale Datenträger verhalten. Und ich spreche nicht von der Anwesenheit oder dem Fehlen eines Dateisystems, sondern von rohem Blockebenenzugriff.
Ich verstehe zwar, dass Audio-CDs nicht wirklich auf Dateiebene interpretiert werden können, also nicht wirklichmontieren, mir ist klar, dass sie eine Menge zusätzlicher Informationen enthalten, die wirklich spezifisch für Audio sind, und mir ist klar, dass sie nicht wirklich CRC haben wie Datenträger, also ist der gesamte Datenlesevorgang anders, ich verstehe immer noch nicht ganz, warum sie nicht wie ein normales Blockgerät von /dev/sr0
oder gelesen werden können /dev/cdrom
. Was ist so besonders an CDDA, dass sie nicht einfach auf Blockebene von normaler Software gelesen werden können?
Ich meine, am Ende ist es nur ein Bytestrom - wenn nicht wie ein Blockgerät, dann wie jedes Zeichengerät, also warum kann dd
ich sie cat
nicht nbd
wie jedes andere Block-/Zeichengerät verwenden? Gibt es einen tatsächlichen, technischen Grund oder liegt es einfach daran, dass niemand einen vernünftigen Anwendungsfall für die Implementierung eines solchen Zugriffs auf CDDA-Medien in Linux gefunden hat?
Antwort1
Audio-CDs (auchCD-DA, angegeben in der proprietärenRotes Buch) ist das älteste Format der CD. Das Format ist von der Audioaufzeichnung inspiriert, daher haben Sie eine Spiralspur mit kontinuierlichen Daten und dazwischen sind Zeitinformationen eingefügt. Es gibt keine richtigen Blockheader. Die kleinste Informationseinheit ist ein Frame oder 1/75 Sekunde, der 2352 Datenbytes enthält (für 2 Kanäle, 2 Samples/Byte, 44,1 kHz).
Beachten Sie, dass dies keine Zweierpotenz ist und nicht einmal durch 256 oder 512 dividiert werden kann. Daher ist es etwas umständlich, Audio-Frames als Datenblöcke zu behandeln. Darüber hinaus können ältere CD-Laufwerke die Position nicht immer richtig bestimmen. Wenn Sie also sagen „Lies den Frame bei 12 Minuten, 4 Sekunden und 5 1/75 Sekunden“, beginnt es manchmal ein paar Bytes früher oder später. Deshalb gibt es so viele Programme zum „richtigen“ Lesen von Audio-CDs (wie cdparanoia
).
Vergleichen Sie dies nun mit einer Daten-CD (auch CD-ROM genannt, spezifiziert im Yellow Book): Sie nahmen die 2352 Bytes eines Audio-Frames und verwendeten einige davon als Header-Informationen, um einen Block zu identifizieren. Sie fügten außerdem eine weitere Ebene der Fehlerkorrektur hinzu, sodass aus den 2352 Bytes eines Audio-Frames 2048 Bytes eines Daten-Frames wurden.
Jetzt haben wir eine Zweierpotenz als Blockgröße, wir haben geeignete Header und können genaue Suchvorgänge durchführen, und wir können wirklich so tun, als wäre dies nur ein Blockgerät.
Aus diesem Grund wird eine Audio-CD standardmäßig nicht als Blockgerät behandelt, eine Daten-CD hingegen schon.
Dennoch gibt es keinen Grund, die Informationen auf der Audio-CD nicht im Dateisystem verfügbar zu machen, beispielsweise als WAV-Datei für jeden Titel. Und tatsächlich gibt es einige Open-Source-Projekte wieCDfs, oder andere, an die ich mich gerade nicht erinnere, die FUSE verwenden, die die CD-Daten auf diese Weise darstellen. Sie haben jedoch immer noch das Problem, dass es keine Jitter-Korrektur usw. gibt, also verwenden Sie besser etwas wie cdparanoia
.
Und die Kernel-Leute dachten auch, es sei einschlechte Idee.
Antwort2
CDDA für Audio-CDs wurde entwickelt, bevor irgendjemand ein Dateisystem für CD-ROMs entwickelte (zuerst High Sierra und später ISO 9660). Davor konnte sich eine CD einfach nicht wie eine normale Datenträger verhalten. Und danach mussten Audio-CDs immer noch abwärtskompatibel mit alten CD-Playern sein, also konnten sie das nicht ändern.