CD’s que o Windows entende

Muitas vezes precisamos fazer cd’s que possam ser lidos não somente em máquinas Linux, mas também em máquinas Windows. Infelizmente este sistema operacional utiliza várias especificações fora do padrão ISO9660, os quais permitem grandes nomes de arquivos, uma quantidade de diretórios (ou pastas) maior e outras tantas “funcionalidades” que destoam do correto.

Os programas para a gravação de cd’s em Linux, por padrão, atendem as especificações do padrão da indústria, mas isso não proíbe que, configurando corretamente, possam ser criados cd’s “for Windows”.

O processo de gravação de um CD no Linux
Para que um CD possa ser criado a partir de arquivos que você possui no computador, dois passos são necessários: a criação de um arquivo ISO com os arquivos que vão para o CD e a gravação (queima) do CD propriamente dita.

Para o primeiro passo, usamos o aplicativo mkisofs, encontrado em todas as distribuições Linux. É neste passo que definimos como o CD será criado, como os arquivos serão adicionados, bem como os diretórios, nome do volume do CD e assim por diante.

A sintaxe básica deste aplicativo é:

mkisofs nome-do-iso [opções] arquivos

Se usarmos o mkisofs sem nenhuma opção, arquivos com nomes maiores que 30 caracteres ou um número maior que 8 diretórios, um dentro do outro, serão truncados dentro da imagem ISO e não serão mostrados corretamente no ambiente Windows. Da mesma forma, arquivos que contém em seu nome caracteres especiais tais como: espaços, acentos, vírgulas e outros, também serão truncados.

Para resolver isso, usa-se um conjunto de opções que são:

Opção Descrição
-allow-lowercase permite que nomes tenham caracteres minúsculos
-J gera a gravação de diretórios Joliet adicionalmente ao padrão ISO9660
-jcharsetiso8859-1 habilita a codificação 8859-1 para nomes de arquivos. Esta opção faz com que cedilha, til, acentos circunflexo e agudo sejam permitidos nos nomes
-l permite nomes de arquivos e diretórios com 31 caracteres
-pad habilita o “padding” no arquivo, o qual por sua vez inibe alguns erros de leitura que possam surgir por problemas de padronização
-relaxed-filenames versões mais novas do mkisofs possuem esta opção que permite os nomes “relaxados” de arquivos e diretórios, ou seja, pontos, acentos, caracteres diferentes do idioma inglês são aceitos nos nomes de arquivo. Esta opção é o resultado da combinação de várias outras opções
-V informa o “label” ou nome do CD. Esta opção gera aquele nome que aparece no Windows Explorer quando o CD é inserido no drive ou ainda no desktop do Linux quando o volume é montado
-R usa o protocolo Rock Ridge que descreve os arquivos num sistema de arquivos iso9660

Usando estas opções conseguimos gravar um CD que o Windows irá reconhecer todos os nomes, diretórios e caracteres.

Fazemos então a seguinte linha de comando:

mkisofs -allow-lowercase -J -jcharset iso8859-1 -l -o nome-da-iso -pad -relaxedfilenames -V label-do-cd -R local-onde-estão-os-arquivos

Dois comentários:
1) o local onde estão os arquivos é um diretório. Tudo o que estiver dentro do diretório informado será colocado dentro do arquivo ISO.
2) Caso queira um label do CD como ‘minhas fotos’, coloque a sentença entre aspas como “minhas fotos”.

A partir deste momento, somente é necessário teclar enter e esperar a geração do arquivo ISO que depois será gravado no CD.

Gravando o CD
Depois que o arquivo ISO foi criado com os dados, é preciso gravar esta imagem no CD, a qual não será um arquivo único, mas sim uma cópia fiel dos arquivos que estavam no diretório de origem.

Para gravar um CD usamos o aplicativo cdrecord que, da mesma forma que o mkisofs, está disponível em todas as distribuições Linux.

A sintaxe do aplicativo é a seguinte:

cdrecord [opções] arquivos

As opções usadas aqui são:

Opção Descrição
-v apresenta a porcentagem de gravação já concluída
speed=x a velocidade de gravação do CD. “X” representa a velocidade. Não utilize velocidade maior que a do gravador, pois poderá ter problemas na gravação
dev=x,x,x o dispositivo de gravação (seu drive de CD)
-eject ejeta o cd após o término da gravação
-data arquivo nome do arquivo ISO que será gravado

Observe que estas opções são somente para gravar cd’s de DADOS. Cd’s de áudio não são feitos desta forma e serão abordados em outro tutorial.

Fazemos então a seguinte linha de comando:

cdrecord -v speed=4 dev=0,0,0 -eject -data imagem.iso

Observe que os valores de speed e dev são aqueles do meu drive de CD e precisam ser substituídos para atender as suas necessidades.

Pronto! Somente é necessário esperar o processo de gravação e seu CD “for Windows” estará pronto para ser lido sem problemas neste sistema operacional.

Também é possível colocar estas linhas de comando dentro de um script para automatizar o processo. Nada que um pouco de conhecimento em scripts shell não resolvam.