FORUM DARKERS

Tecnologia & Informática => Sistemas Operacionais => Linux => Topic started by: vuln on 02 de October , 2006, 03:09:27 PM

Title: Gravando CDs via linha de comando
Post by: vuln on 02 de October , 2006, 03:09:27 PM
Gravando CDs via linha de comando


Conteúdo
1 Introdução
2 Softwares utilizados
3 Identificando a gravadora
4 Lendo detalhes (dados) da mídia
5 Gravando áudio
6 Gravando dados
7 Criando um CD multisessão
8 Montando imagens ISO
9 Gravando imagens BIN/CUE
10 Convertendo BIN/CUE em ISO
11 Copiando CDs
11.1 Copiando CDs especiais
12 Formatando CDs regraváveis (CD-RW)
12.1 Formatação Mínima
12.2 Formatação Total
13 Gravando DVD de dados
14 Links
15 Autores
 


Introdução
A evolução nos traz uma série de vantagens. Hoje é muito simples gravar um CD usando o K3B ou o nero, mas nunca sabemos o que está rodando por baixo dos panos.

Este é um tutorial sobre como gravar CDs pela linha de comando. Pode parecer ultrapassado gravar CDs dessa maneira mas isso pode ser muito útil em scripts de backup automático ou se você não usa ambiente gráfico, como em servidores.

Softwares utilizados
CdRecord - http://cdrecord.berlios.de/old/private/cdrecord.html (http://cdrecord.berlios.de/old/private/cdrecord.html)
Cdrdao - http://cdrdao.sourceforge.net/ (http://cdrdao.sourceforge.net/)
Mkisofs - http://www.andante.org/mkisofs.html (http://www.andante.org/mkisofs.html)
Bin2iso - http://www.codeproject.com/tools/Bin2Iso.asp (http://www.codeproject.com/tools/Bin2Iso.asp)
Growisofs - http://fy.chalmers.se/~appro/linux/DVD+RW/tools/?M=D (http://fy.chalmers.se/~appro/linux/DVD+RW/tools/?M=D)
[editar]Identificando a gravadora
Para identificar a gravadora utilize o comando "cdrecord -scanbus". A saída será algo parecido com isto:

# cdrecord -scanbus
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.7'
scsibus0:
0,0,0 0) 'HL-DT-ST' 'CD-RW GCE-8520B ' '1.03' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
Anote os três primeiros números ao lado da gravadora identificada (No nosso caso 0,0,0).

Lendo detalhes (dados) da mídia
O Cdrdao permite lermos detalhes gravados na mídia, como fabricante real e química usada. Você pode ter a surpresa de descobrir que seu CD, com aquela marca cara e que você confia por "ter nome", é fabricado pela mesma empresa daquele genérico:

# cdrdao disk-info --device 0,0,0 --driver generic-mmcobs: O parâmetro "--driver" é obrigatório no cdrdao. A maioria dos gravadores fabricados depois de 2000, funcionam perfeitamente com o driver "generic-mmc", isso não significa que seu gravador mais antigo não vá funcionar. Caso tenha problemas com o generic-mmc, existem outros drivers suportados pelo cdrdao:

cdd2600
generic-mmc-raw
plextor
plextor-scan
ricoh-mp6200
sony-cdu920
sony-cdu948
taiyo-yuden
teac-cdr55
toshiba
yamaha-cdr10x
O Cdrecord também tem um recurso semelhante:

# cdrecord -atip dev=0,0,0[editar]Gravando áudio
# cdrecord dev=0,0,0 -v speed=20 -fs=16 -pad -eject -audio track1.wav
Parâmetros:

dev=0,0,0: Dispositivo indicado pelo "cdrecord -scanbus"
-v : Exibe informações durante a gravação.
-fs=16: Especifica o tamanho do buffer na memória RAM em megabytes. Substitua o 16 por um número menor caso você tenha pouca memória RAM.
speed=20: Efetua a gravação na velocidade 20x
-eject: Abre a gaveta do cd-rom após o término da gravação
-pad: Verifica se o tamanho total do CD é múltiplo de 32 KB (para evitar problemas de leitura), caso não seja, ele adiciona alguns bits zero no final imagem completando estes últimos 32 KB

OBS: No parâmetro "dev" usamos "0,0,0" pois esta é a identificação do dispositivo de gravação emulado como SCSI. Na série 2.6 do Kernel, essa emulação não é mais necessária, portanto, no parâmetro "dev" usamos o endereço real do dispositivo de gravação. Ex: cdrecord dev=/dev/hdc ...


Para adicionar espaço entre as faixas utilize o parâmetro -dao

# cdrecord -v dev=0,3,0 speed=20 -dao -eject -pad -audio track1.wav
Para gravar mais de uma faixa utilize "*" para gravar todas as músicas dentro do diretório ou se preferir especificar as que deseja, utilize espaço entre as faixas (ex: track1.wav track3.wav track7.wav)

Gravando dados
Para gravar CDs de dados no linux, existem duas etapas. A primeira é gerar uma imagem dos dados a serem gravados no CD e a segunda é a gravação em si.

Para gerar a imagem utilize o comando "mkisofs".

# mkisofs -o /caminho/imagem.iso -pad -JrTlL /caminho/pasta_com_arquivos/
Parâmetros:

-o: Especifica o caminho e o nome da imagem a criar
-pad: Este parâmetro verifica se o tamanho total da imagem é múltiplo de 32 KB (para evitar problemas de leitura), caso não seja, ele adiciona alguns bits zero no final da imagem completando estes últimos 32 KB
-J: Gera informação de diretórios Joliet (para compatibilidade com Windows)
-r: Gera informação de diretórios no formato Rock Ridge
-T: Cria recursivamente, diretório por diretório, um arquivo texto (TRANS.TBL), que lista o conteúdo do diretório
-l: Possibilita nomes com até 31 caracteres
-L: Permite espaços no padrão ISO 9660
/caminho/pasta_com_arquivos/: Pasta onde estão os arquivos a serem gerados. Podem ser adicionados vários diretórios utilizando espaço entre os caminhos (ex: /caminho/pasta_com_arquivos/ /caminho2/pasta_com_arquivos2/).

Feito isso a próxima etapa é a gravação.

# cdrecord dev=0,0,0 -v speed=20 -fs=16 -eject -data /caminho/imagem.iso
Com esse comando o CD será fechado, não permitindo assim gravações adicionais posteriores (multisessão)

Criando um CD multisessão
Para se gravar um cd multisessão, devemos informar ao programa o próximo espaço disponível para gravação.

A criação da primeira imagem ocorre da mesma forma.

# mkisofs -o /caminho/imagem.iso -pad -JrTlL /caminho/pasta_com_arquivos/
A diferença na gravação está em adicionar a opção "-multi":

# cdrecord dev=0,0,0 -v speed=8 -fs=16 -eject -multi -data nome_da_imagem.iso
Para obter a próxima posição livre do CD usamos a seguinte sintaxe:

# cdrecord -msinfo dev=0,0,0
0,28681
Com essa informação geramos a segunda imagem:

# mkisofs -o imagem2.iso -pad -JrTlL -C 0,28681 -M /media/cdrom /caminho/diretorio/
Agora é só gravar normalmente:

# cdrecord dev=0,0,0 -v speed=52 -fs=16 -eject -multi -data imagem2.iso
Você pode criar um CD com várias sessões. Quando quiser fechar o CD, ou seja, gravar a última sessão e não permitir mais gravações (mesmo que sobre espaço), é só gravar a última imagem retirando o parâmetro "-multi" do cdrecord. Lembre-se que leitores de CDs não conseguem "enxergar" mais de uma sessão, ou seja, mesmo que o CD tenha 2 sessões ou mais, os leitores só "enxergam" a 1ª sessão, outros nem sequer rodam o CD caso a sessão esteja aberta. Isso já foi um problema, mas hoje, com a popularização dos gravadores de CDs, já não traz mais dores de cabeça.

Montando imagens ISO

Às vezes queremos saber o conteúdo de uma imagem iso antes de gravá-la e achamos que isso não é possível ou então que no ambiente GNU/Linux não temos ferramentas para isso. Na verdade isso é um engano, pois o próprio kernel já tem um módulo que nos permite acessar as imagens ISO 9660 (padrão de um CD-R). O comando deve ser dado como usuário root e é bem simples:

# mount -o loop imagem.iso /mnt/diretório_de_montagemO "mount" já conhecemos, serve para montar todo tipo de dispositivo, o módulo que citei é o "loop", "imagem.iso" é a imagem propriamente dita e o último parâmetro é o diretório de montagem. Não é regra, mas se convém fazer as montagens em subdiretórios do diretório /mnt, aqui monto imagens iso no /mnt/iso. Às vezes é preciso especificar o sistema de arquivos da imagem, senão não monta, então:

# mount -t iso9660 -o loop imagem.iso /mnt/diretório_de_montagemO parâmetro "-t" especifica o sistema de arquivos do que se quer montar, seja dispositivo, seja imagem e "iso9660" é o sistema de arquivos das imagens iso.

Lembre-se de desmontar a imagem após seu uso:

# umount /mnt/diretório_de_montagem[editar]Gravando imagens BIN/CUE
Além do famoso formato iso, existe o bin/cue. Esse padrão é composto por dois arquivos, o "bin", que é a imagem e o "cue", que é um arquivo que descreve como a imagem "bin" deve ser gravada. O Cdrecod não grava esse tipo de arquivo, por uso usamos o Cdrdao. Para gravar:

# cdrdao write --eject --speed 8 --device 0,0,0 --driver generic-mmc imagem.cueBom, não tem nem o que explicar pois os parâmetros são claros. Só uma observação: é necessário que os arquivos (bin e cue) tenham o mesmo nome e estejam no mesmo diretório.

Convertendo BIN/CUE em ISO
Muita gente não gosta do padrão bin/cue pois não é possível manipulá-lo como manipula-se as imagens iso, por isso podemos converter esse padrão no padrão iso. Para isso utilizamos o aplicativo bin2iso:

# bin2iso arquivo.cueCaso você tenha perdido o arquivo cue, o bin2iso consegue converter usando apenas o bin, para isso:

# bin2iso nome_arquivo.cue -c arquivo.bin[editar]Copiando CDs
Para copiar um inteiro em outro CD, deve-se primeiro gerar a imagem usando o comando "dd" e em seguida gravá-la normalmente usando o cdrecord. O comando para gerar a imagem é:

# dd if=/dev/cdrom of=imagem.iso
OBS: o comando "dd" não lê corretamente CDs multisessão, por isso use o cdrdao para copiar esse tipo de CD como é mostrado abaixo.

Copiando CDs especiais
Existem CDs que nos dão uma certa dor de cabeça quando tentamos copiá-los, um exemplo são os CDs de Playstation. Com o Cdrdao podemos contornar isso:

# cdrdao read-cd --read-raw --datafile nome_imagem.bin --device 0,0,0 --driver generic-mmc-raw nome_imagem.tocO arquivo "toc" tem a mesma função do "cue" e é um padrão adotado pelo Cdrdao. Com esse comando o Cdrdao copiará o conteúdo do CD (pode ser qualquer tipo: áudio, dados simples, multisessão etc) gerando uma imagem no diretório onde for executado. Para gravar a imagem use o mesmo comando para gravar imagens bin/cue:

# cdrdao write --eject --speed 8 --device 0,0,0 --driver generic-mmc imagem.toc[editar]Formatando CDs regraváveis (CD-RW)
Para formatar um CD-RW existem duas formas, uma formatação mais superficial (mínima), que é super rápida, e uma mais profunda, que demora mais de 30min:

Formatação Mínima
# cdrecord dev=0,0,0 blank=fast -eject
Formatação Total
# cdrecord dev=0,0,0 blank=all -eject
Percebe-se facilmente que o parâmetro do cdrecord que formata CDs regraváveis é o "blank".

Gravando DVD de dados
Usando a mesmo método de gerar imagens com o Mkisofs, mostrado anteriormente, pode-se gravar um DVD de dados, para isso, usamos o Growisofs, programa que faz parte do pacote dvd+rw-tools e que é, na verdade, um front-end para o Mkisofs. Após gerar a imagem, use o comando abaixo para gravá-la num DVD:

# growisofs -dvd-compat -speed=4 -Z /dev/dvd=imagem.iso
Parâmetros:

-dvd-compat: Fecha o disco após a gravação


-speed: Determina a velocidade da gravação de acordo com a mídia usada e/ou a gravadora de DVDs


-Z: Especifica que gravadora será usada apontando o endereço direto do dispositivo mesmo que ele seja emulado como SCSI, como acontece na série 2.4.x do kernel


imagem.iso: A localização da imagem que você gerou para ser gravada.

Links
http://br-linux.org/tutoriais/000834.html (http://br-linux.org/tutoriais/000834.html)
http://www.guiadohardware.net/linux/dicas/19.htm (http://www.guiadohardware.net/linux/dicas/19.htm)
http://cdrecord.berlios.de/old/private/ ... eadme.html (http://cdrecord.berlios.de/old/private/man/cdr_readme.html)
http://fy.chalmers.se/~appro/linux/DVD+RW/ (http://fy.chalmers.se/~appro/linux/DVD+RW/)
http://br-linux.org/main/arquivos/cds_with_tux.pdf.gz (http://br-linux.org/main/arquivos/cds_with_tux.pdf.gz)
Autores
White_Tiger (lipsebatista@gmail.com (mailto:lipsebatista@gmail.com))
Retirado de "http://underlinux.com.br/wiki/index.php/Tutoriais/Aplicativos/CdRecord"