
Mi amigo intentó exportar un dispositivo cdrom a través de la red usando nbd
el servidor, pero notamos que si bien funciona con CD de datos, los CD de audio en realidad no se comportan como lo hacen los discos de datos comunes. Y no me refiero a la presencia o falta de un sistema de archivos, sino al acceso a nivel de bloque sin formato.
Si bien entiendo que los CD de audio no se pueden interpretar realmente a nivel de archivos, por lo tanto no se pueden interpretar realmente.montar, entiendo que contienen mucha información adicional que es realmente específica del audio y entiendo que en realidad no tienen CRC de la misma manera que los discos de datos, por lo que todo el proceso de lectura de datos es diferente, todavía no lo entiendo del todo. por qué no se pueden leer como un dispositivo de bloque normal desde /dev/sr0
o /dev/cdrom
. ¿Qué tiene de especial CDDA que no se puede leer simplemente a nivel de bloque mediante un software normal?
Quiero decir, al final, es solo un flujo de bytes; si no es como un dispositivo de bloque, entonces es como cualquier dispositivo de caracteres, entonces, ¿por qué // dd
no puedo usarlos como cualquier otro dispositivo de bloque/carácter? ¿Existe alguna razón técnica real o es simplemente porque nadie encontró un caso de uso racional para implementar dicho acceso al medio CDDA en Linux?cat
nbd
Respuesta1
CD de audio (también llamadosCD-DA, especificado en la propiedadlibro Rojo) son el formato más antiguo del CD. El formato está inspirado en la grabación de audio, por lo que tiene una pista en espiral con datos continuos, y entrelazada con estos datos hay información de tiempo. No hay encabezados de bloque adecuados. La unidad de información más pequeña es una trama, o 1/75 de segundo, que contiene 2352 bytes de datos (para 2 canales, 2 muestras/byte, 44,1 kHz).
Tenga en cuenta que esto no es una potencia de dos y ni siquiera se divide entre 256 o 512. Por lo tanto, tratar cuadros de audio como bloques de datos es un poco incómodo. Además de eso, las primeras unidades de CD no siempre pueden ubicarse correctamente, por lo que si le dice "ve a leer el cuadro a los 12 minutos, 4 segundos y 5 1/75 segundos", a veces comenzará unos bytes antes o después. Por eso existen tantos programas para leer "correctamente" CD de audio (como cdparanoia
).
Ahora compare esto con un CD de datos (también llamado CD-ROM, especificado en el Libro Amarillo): tomaron los 2352 bytes de una trama de audio y usaron algunos de ellos como información de encabezado para identificar un bloque. También agregaron otro nivel de corrección de errores, por lo que los 2352 bytes de una trama de audio se convierten en 2048 bytes en una trama de datos.
Ahora tenemos una potencia de dos como tamaño de bloque, tenemos encabezados adecuados y podemos realizar búsquedas exactas, y realmente podemos fingir que esto es solo un dispositivo de bloque.
Esta es la razón por la que, de forma predeterminada, un CD de audio no se trata como un dispositivo de bloque, mientras que un CD de datos sí lo es.
Dicho esto, no hay razón para no hacer que la información del CD de audio esté disponible en el sistema de archivos, por ejemplo, como un archivo WAV para cada pista. Y de hecho, existen algunos proyectos de código abierto comoCDf, u otros que no recuerdo ahora que usan FUSE, que representan los datos del CD de esta manera. Sin embargo, todavía tienes el problema de que no hay corrección de fluctuación, etc., por lo que es mejor que uses algo como cdparanoia
.
Y la gente del kernel también pensó que era unmala idea.
Respuesta2
CDDA para CD de audio se creó antes de que alguien creara un sistema de archivos para CD-ROM (primero High Sierra y luego ISO 9660). Antes de eso, un CD simplemente no se comportaba como un disco de datos normal. Y después de eso, los CD de audio todavía tenían que ser compatibles con los reproductores de CD antiguos, por lo que no podían cambiarlo.