Infra - Linux

Trabalhando com imagens e arquivos ISO

Uma imagem é um arquivo que tem uma cópia exata de um dispositivo, no qual é possível passar para outro dispositivo de forma que o deixamos idêntico, ou até mesmo passá-lo para um arquivo que, para manter um padrão, colocamos a extensão img.

por Elias Albuquerque



Olá povo do Linha de código, vou focar novamente uma tema que já foi tema em outro local mas como cheguei de mala e cuia aqui no linha de código vou colocar novos artigos como também publicar aqueles que foram consultados pelo internautas através de e-mail. Um deles é sobre ISO´s.

Uma imagem é um arquivo que tem uma cópia exata de um dispositivo, no qual é possível passar para outro dispositivo de forma que o deixamos idêntico, ou até mesmo passá-lo para um arquivo que, para manter um padrão, colocamos a extensão img.

Isto, sem dívida, torna nossa vida muito mais fácil. Algum de vocês confia em um floopy disk? Corto meus pulso se algum de vocês SINCERAMENTE confiar em um floppy. Há mesmo que eu encontre algum louco que confie do fundo da sua alma em um disquete e reivindique que eu corte os pulso, não cortarei. Risos...

Podemos fazer uma imagem de qualquer dispositivo. Para dar um exemplo, eu faço a imagem do disco de boot do Linux e Win98Me, deixando disponível no meu e-mail ou onde desejar. Imaginem aquela hora quando você precisa de um boot do 98 e sabe que ele não existe mais. Basta descarregar a imagem dele no disquete.

Vamos criar uma imagem de um disquete qualquer via Linux:

No root digite:

dd if=/dev/fd0 of=win98.img

Maiores informações, consulte o manual do comando. Mas vamos explicar o que fizemos.

dd: cria a imagem

if: input file dispositivo ou arquivo origem. Neste caso é um dispositivo

of: output file para onde será descarregada a imagem. Neste caso será um arquivo chamado win98.img.

Agora você pode jogar este arquivo em seu e-mail ou onde desejar. Quando houver necessidade de fazer uma cópia do disco win98.img será a hora de abrir a imagem. Faça o caminho reverso. Exemplo:

dd if=win98.img of=/dev/fd0

Agora use sua imaginação para fazer a imagem que desejar.

Vamos falar das imagens tipo ISO

Aconselho que, quem não leu minha matéria sobre sistema de arquivos, faça isso pois lhe dará um melhor entendimento sobre alguns dos sistemas de arquivos existentes.

Uma imagem do tipo ISO é uma imagem como a anterior, porém, na anterior, quando você descarrega o conteúdo da imagem, um local e a relação entre a imagem e este local é quebrada, dando-lhe o direito de até apagar algo dentro deste local.

No formato ISO, cria-se uma imagem com sistema de arquivos ISO9660. É isto mesmo colega, o sistema de arquivos do cd-rom. Desta forma, monta esta imagem em uma localidade mas somente com o direito de leitura.

O programa que gera esta brincadeira é o mkisofs e mkhybrid (O mkhybrid permite fazer o iso (file system) ser reconhecido em Macs com o parâmetro –hfs)

A sintaxe do programa é:

mkisofs [opções] –o imagem.iso [lista de arquivos]

mkhybrid [opções]-o imagem.iso [lista de arquivos]

Vamos supor que eu queira gravar os diretórios /home/elias/Videos para um CD. A primeira coisa é gerar a imagem dos diretórios. Digite:

mkisofs -o vídeos_elias.iso /home/Elias/vídeos

mkhybrid -o vídeos_elias.iso /home/Elias/vídeos

Um sistema de arquivos iso9660 não suporta LFN (Long File Name) e caracteres especiais. Neste caso, inventaram o protocolo denominado Rock Ridge para contornar esta situação. Caso contrário, nosso arquivos sersão truncados. Sse a opção –r para resolver isto na nossa imagem ISO:

mkisofs -r -o vídeos_elias.iso /home/Elias/videos

Se você tiver que usar estes cds gerados no Linux em sistemas operacionais da Microsoft, é aconselhável usar a opção -J, que gera diretórios com nomes no padrão prioritário Joilet. Assim, suas imagens serão compatíveis com outros sistemas operacionais:

mkisofs -r -J -o vídeos_elias.iso /home/Elias/vídeos

ou

mkisofs -r -joliet -o vídeos_elias.iso /home/Elias/vídeos

mkhybrid -r -J -o vídeos_elias.iso /home/Elias/vídeos

Segunda parte

Um CDRW é considerado pelo Linux um dispositivo scsi e devemos configurá-lo.

Instale-o e, caso você tenha removido o CDR antigo, verifique se o mesmo não se encontra carregado em memória, basta digitar:

rpm –qa |grep ide-cd

Se existir, baixe este módulo rmmod ide-cd e o remova com rpm –e ide-cd. Se você desejar ter o CDRom e o CDRW juntos deixe como está.

Agora carregue os módulo do cdrw:

modprobe sg (módulo de emulação SCSI)
modprobe ide-scsi (carrega módulo cdrom SCSI)

Coloque-o, de preferência, dentro do arquivo rc.local para você não precisar carregá-lo sempre que precisar. Desta forma será carregado automaticamente ao inicializar a máquina.

Agora insira a seguinte linha no final do /etc/fstab.

/dev/cdrw /mnt/cdrw iso9660 defaults,noauto 0 0

Crie o diretório cdrw dentro do diretório /mnt e remova o link simbólico para o dispositivo cdrom IDE (caso você tenha o tirado).

rm /dev/cdrom

Crie um link simbólico para o cdromscsi e o cdrw scsi.

ln –s /dev/sr0 /dev/cdrom1
ln –s /dev/sr1 /dev/cdrw

Vamos testar:

cdrecord –scanbus

Se tudo ocorrer bem, aparecerá uma mensagem dizendo que reconheceu o cd-rom ide e scsi. Maiores informações, procurem o how-to para cdrw na internet

Já dominando a criação de imagens ISOs, vamos ver como queimar o CD.

Gravando o CD

Se tudo está legal e seu CDRW funciona, queimar um CD com esta imagem ISO é bastante simples, bastando dar o seguinte comando como usuário root:

Gravar em um cdr:

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

Gravar em um cdrw:

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

O que pode variar é o parâmetro speed (use a velocidade que seu gravador suportar) e o número do dev (na dúvida, use o comando "cdrecord -scanbus" para consultar). Quando for sobrescrever uma mídia CD-RW, especifique o parâmetro blank=fast para o cdrecord.

Usuários experientes de Linux podem querer ver o conteúdo da imagem ISO sem ter que queimar um CD. A mesma técnica pode ser utilizada para instalações via HD ou via rede, se a distribuição de Linux suportar. O comando para montar sua imagem ISO como se fosse um CD é:

mount -o loop,unhide -t iso9660 -r nome-da-imagem.iso /mnt/iso

OBS: o diretório /mnt/iso tem que ter sido criado previamente.

CD"s de áudio

Para converter de mp3 para CDR:
# mpg123 --cdr - track1.mp3 > track1.cdr

Grave usando o parâmetro -audio indicando cada trilha:
# cdrecord -eject -v speed=8 dev=1,1,0 -audio track1.cdr track2.cdr ...

Outra maneira que encontrei: CDs de áudio. Lendo e gravando. Vamos testar digitando:
cdrdao scanbus

Para ler execute o comando como root:
cdrdao read-cd –device 0,0,0 –driver generic-mmc cd-audio.toc

Para gravar:
cdrdao write –device 0,1,0 –driver generic-mmc cd-audio.toc

Maiores informações consulte o how-to do cdrdao-x-x-x-x

Fazendo um CD de dados e áudio

# cdrecord -v speed=8 dev=1,1,0 -data imagem.iso -audio track1.cdr track2.cdr track3.cdr

Copia fiel CD-ROM para o CD-RW

# cdrecord -v speed=8 dev=1,1,0 -isosize /dev/cdrom

No caso de voce só ter o drive de CD-RW, crie o iso, depois grave-o

Para fazer um Boot CD

Crie a imagem a partir de um disquete de Boot:
# dd if=/dev/fd0 of=/home/elias/boot.img bs=18k

Junte a imagem com o arquivo de imagem:
Mkisofs –r –b <imagem botável> -c <arquivo-catalog> -o arquivo imagem

Para criar um arquivo ISO do 1º cd do red-hat bootável faça:
mount -t iso9660 /dev/cdrom /mnt/cdrom
mkisofs –r –b /home/elias/boot.img –c /home/elias/boot.catalog –o cd1.iso /mnt/cdrom

Um abraço a todos e pelo prestigio ao qual tem nos dado.
Elias Albuquerque

Elias Albuquerque - Consultor de TI e professor técnico de SQL, W2k e Segurança de Redes.
Consultor atualmente não atua mais com sistemas operacionais e redes.