
Meu amigo tentou exportar o dispositivo cdrom pela rede usando nbd
o servidor, mas percebemos que, embora funcione para CDs de dados, os CDs de áudio não se comportam como os discos de dados comuns. E não estou falando de presença ou falta de sistema de arquivos, mas de acesso bruto em nível de bloco.
Embora eu entenda que os CDs de áudio não podem ser realmente interpretados no nível dos arquivos, portanto, não podem ser realmente interpretados.montar, eu entendo que eles contêm muitas informações adicionais que são realmente específicas para áudio e entendo que eles realmente não têm CRC da mesma forma que os discos de dados, então todo o processo de leitura de dados é diferente, ainda não entendo muito bem por que eles não podem ser lidos como um dispositivo de bloco comum de /dev/sr0
ou /dev/cdrom
. O que há de tão especial no CDDA que não pode ser lido apenas em nível de bloco por software comum?
Quero dizer, no final, é apenas um fluxo de bytes - se não como um dispositivo de bloco, então como qualquer dispositivo de caractere, então por que dd
// cat
não nbd
posso usá-los como qualquer outro dispositivo de bloco/caractere? Existe alguma razão técnica real ou é apenas porque ninguém encontrou um caso de uso racional para implementar tal acesso ao meio CDDA no Linux?
Responder1
CDs de áudio (também chamadosCD-DA, especificado no proprietáriolivro Vermelho) são o formato mais antigo do CD. O formato é inspirado na gravação de áudio, então você tem uma trilha espiral com dados contínuos, e intercalada com esses dados estão as informações de tempo. Não há cabeçalhos de bloco adequados. A menor unidade de informação é um quadro, ou 1/75 de segundo, que contém 2.352 bytes de dados (para 2 canais, 2 amostras/byte, 44,1 kHz).
Observe que esta não é uma potência de dois e nem mesmo divide por 256 ou 512. Portanto, tratar quadros de áudio como blocos de dados é um pouco estranho. Além disso, as primeiras unidades de CD nem sempre podem ser posicionadas corretamente; portanto, se você disser "vá ler o quadro em 12 minutos, 4 segundos e 5 1/75 segundos", às vezes ele iniciará alguns bytes mais cedo ou mais tarde. É por isso que existem tantos programas para ler CDs de áudio "corretamente" (como o cdparanoia
).
Agora compare isso com um CD de dados (também chamado de CD-ROM, especificado no Livro Amarelo): Eles pegaram os 2.352 bytes de quadros de áudio e usaram alguns deles como informações de cabeçalho para identificar um bloco. Eles também adicionaram outro nível de correção de erros, de modo que os 2.352 bytes de um quadro de áudio se tornam 2.048 bytes em um quadro de dados.
Agora temos uma potência de dois como tamanho de bloco, temos cabeçalhos adequados e podemos fazer buscas exatas, e podemos realmente fingir que este é apenas um dispositivo de bloco.
Portanto, esta é a razão pela qual, por padrão, um CD de áudio não é tratado como um dispositivo de bloco, enquanto um CD de dados o é.
Dito isto, não há razão para não disponibilizar as informações do CD de áudio no sistema de arquivos, digamos, como um arquivo WAV para cada faixa. E, de fato, existem alguns projetos de código aberto comoCDfs, ou outros que não me lembro agora que usam FUSE, que representam os dados do CD desta forma. No entanto, você ainda está preso ao problema de não haver correção de jitter, etc., então é melhor usar algo como cdparanoia
.
E o pessoal do kernel também achou que era umpéssima ideia.
Responder2
O CDDA para CD de áudio foi criado antes de alguém criar um sistema de arquivos para CD-ROM (primeiro High Sierra e depois ISO 9660). Antes disso, um CD simplesmente não se comportava como um disco de dados comum. E depois disso, os CDs de áudio ainda precisavam ser compatíveis com os CD players antigos, então eles não podiam mudar isso.