2.4. Como fazer para o meu CDR-RW IDE funcionar no Linux?

Gostaríamos de informar que este procedimento não faz parte do escopo do suporte, assim sendo não há como dar mais suporte do que o conteúdo deste, obrigado pela compreensão.

### CL70 e anteriores ###

Para poder fazer funcionar seu drive de CD-R/CD-RW, você precisa primeiramente estar certo de que a instalação esteja correta na máquina, e que funcione como leitora normal, somente para leitura, se isto está ok então passemos à configuração dele como gravador propriamente dito.

Antes de nada certifique-se de entrar no sistema como root e verifique que o pacote mkisofs-1.8-4cl esteja instalado, para verificar dê o seguinte comando:

    [root@localhost]# rpm -qa |grep -i mkisofs

Se não retornar nada é por que não está instalado, então você precisa instalá-lo, para isto coloque seu CD 1 no drive de CDROM e monte-o e instale o pacote, faça-o da seguinte maneira:

    [root@localhost]# mount /mnt/cdrom
    
    [root@localhost]# cd /mnt/cdrom/conectiva/RPMS
    
    [root@localhost /RPMS]# rpm -ivh mkisofs-1.8-*

Espere aparecerem as cerquilhas (####) após isto o pacote estará instalado e pode ser usado pelo script de gravação (já serão mencionados mais adiante).

Agora desmonte seu CDROM:

    [root@localhost /RPMS]# cd /
    
    [root@localhost]# umount /mnt/cdrom

Agora verifique se o pacote cdrecord-1.8 está instalado, para isto faça:

    [root@localhost]# rpm -qa | grep -i cdrecord

Caso não aparecer nada, tem que instalar o pacote que encontra-se no CD 2, coloque este no drive de CDROM, monte-o e instale-o da seguinte maneira:

    [root@localhost]# [root@localhost]# mount /mnt/cdrom
    
    [root@localhost]# cd /mnt/cdrom/conectiva/RPMS
    
    [root@localhost /RPMS]# rpm -ivh cdrecord-1.8-*

Espere aparecerem as cerquilhas (####) após isto o pacote estará instalado e pode ser usado pelo script de gravação (já serão mencionados mais adiante).

Agora que os pacotes necessários para o processo foram instalados vamos dar uma olhada nos módulos que estão levantados na sua máquina, para isto dê o seguinte comando:

    [root@localhost]# lsmod

deve dar como resultado algo do tipo:

    Module                  Size  Used by
    nls_cp437               3920   1  (autoclean)
    ide-cd                 24304   1  (autoclean)
    isofs                  17888   1  (autoclean)
    soundcore               2608   0  (autoclean) (unused)
    nfsd                  162336   8  (autoclean)
    nfs                    46272   4  (autoclean)
    lockd                  43760   1  (autoclean) [nfsd nfs]
    sunrpc                 58672   1  (autoclean) [nfsd nfs lockd]
    8139too                11744   1  (autoclean)
    agpgart                18640   0  (unused)

O módulo que nos interessa é aquele ide-cd, precisamos removê-lo, para-isto faça:

    [root@localhost]# rmmod ide-cd

após ter feito isto verifique se ele realmente já não está dando o mesmo comando lsmod como descrito acima, este não mais deve aparecer na lista que aparecer. Agora precisamos levantar os módulos para emular drives SCSI, faça:

    [root@localhost ]# modprobe sg; modprobe ide-scsi

após isto edite o arquivo /etc/rc.d/rc.local e copie esta linha de comando no fim do arquivo:

    [root@localhost]# mcedit /etc/rc.d/rc.local

Coloque no final de tudo:

    modprobe sg; modprobe ide-scsi

Após isto dê F2 para salvar e F10 para sair.

Agora precisamos testar para ver se a gravadora foi testada, siga o procedimento abaixo:

    [root@localhost ]# cdrecord -scanbus

Se tudo ocorrer bem irá parecer algo do tipo:

    Cdrecord 1.8 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling
    Using libscg version 'schily-0.1'
    scsibus0:
             0,0,0     0) 'HP      ' 'CD-Writer+ 9300 ' '2.0g' Removable CD-ROM
            cdrecord: Warning: controller returns wrong size for CD capabilities page.
             0,1,0     1) 'CREATIVE' 'CD4820E CS990211' '1.03' Removable CD-ROM
             0,2,0     2) *
             0,3,0     3) *
             0,4,0     4) *
             0,5,0     5) *
             0,6,0     6) *
             0,7,0     7) *

Feito isso, a gravadora e os outros drivers de CD-ROM da máquina deixarão de responder por um device IDE (hdXn) e passarão a responder por um device SCSI (srn), para ter certeza que esses drivers estão respondendo como dispositivos SCSI, digite:

OBS.- O X representa se o dispositivo esta como primary master/slave ou secundary master/slave (hda, hdb, hdc ou hdd) o n representa o numero da partição no dispositivo.

    [root@localhost ]# dmesg |grep -i scsi

Irá aparecer o seguinte:

    scsi0 : SCSI host adapter emulation for IDE ATAPI devices
    scsi : 1 host.
    Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
    sr0: scsi3-mmc drive: 16x/48x cd/rw xa/form2 cdda tray  <--- Dispositivo
    SCSI (sr0)

Agora que sabemos que o dispositivo pelo qual o CDR/CDRW irá responder é o sr0, vamos tentar montar um CD:

    [root@localhost ]# mount /dev/sr0 /mnt/cdrom

Caso volte para tela uma mensagem de erro do tipo:

    mount: the kernel does not recognize /dev/sr0 as a block device
           (maybe   nsmod driver'?)

É porque não existe, na máquina, um dispositivo sr0, para cria-lo digite:

    [root@localhost ]# mknod /dev/srn b 11 m

Caso tenha mais de um CDROM, mesmo que não seja gravador, você também precisa criar um device para ele assim faça o seguinte troque o n pelo numero do device, ou seja se for o primeiro coloque sr0, se for o segundo sr1 e assim por diante, o mesmo para o m da sentença acima, o exemplo abaixo mostrará como criar dois devices no caso de se ter dois drive de CDROM uma gravadora e outra não; mas não faz diferença se ambas forem gravadoras. Ex:

    [root@localhost ]# mknod /dev/sr0 b 11 0
    
    [root@localhost ]# mknod /dev/sr1 b 11 1

Agora para facilitar a montagem dos dispositivos no seu sistema é interessante, mas não necessário, criar um link para ele como mostra o exemplo:

    [root@localhost]# ln -sf /dev/sr0 /dev/cdrw
    
    [root@localhost]# ln -sf /dev/sr1 /dev/cdrom

Perceba que eu estou assumindo como sendo seu gravador de CD o sr0, caso seja o sr1 ou qualquer outro número mude conforme sua situação vamos criar o diretório que será usado como ponto de montagem padrão para o CDR/CDRW:

    [root@localhost]# mkdir /mnt/cdrw

E agora vamos editar o fstab para poder ter facilidade de montagem no sistema, para isto faça:

    [root@localhost]# mcedit /etc/fstab
    /dev/hda1        /                ext2       defaults         1  1
    /dev/hda2        swap             swap       defaults         0  0
    /dev/fd0         /mnt/floppy      auto       user,noauto      0  0
    /dev/cdrom       /mnt/cdrom       iso9660    user,noauto,ro   0  0 <
    /dev/cdrw        /mnt/cdrw        iso9660    user,noauto,ro   0  0 < 
    none             /proc            proc       defaults         0  0
    none             /dev/pts         devpts     gid=5,mode=620   0  0

Deixe as linhas marcadas com '<' conforme o exemplo.

Pronto agora você tem configurado seu gravador de CD e o seu drive de CD no Conectiva Linux, a seguir mostraremos como você pode gravar seus CDs ou arquivos usando o Linux, faça o seguinte, o primeiro passo é baixar os scripts que encontram-se no endereço:

http://www.conectiva.com.br/~suporte-cl/programas/cdrwtool.tgz

Ainda como root, copie este para o / (raiz) do seu disco, imaginemos que você o baixou da rede e está no seu home:

      [root@localhost]# mv ~/cdrwtool.tgz /

agora vá até o /

    [root@localhost]# cd /

e descompacte o script da seguinte maneira:

    [root@localhost]# tar xzvf cdrwtool.tgz

após tê-lo descomprimido, poderá começar a fazer uso dos mesmos, neste arquivo vão dois scripts, um para criar imagens iso dos arquivos ou cds que deseja gravar e outro que gera o CD a partir destas imagens iso, é a maneira que nós recomendamos fazer suas gravações, caso você conheça outra, sinta-se a vontade para usá-la.

Neste arquivo estão dois scripts como já tinha comentado anteriormente, o make_iso que serve para criar imagens e o run_cdrw que é o serve para gravar o CD propriamente, a seguir passarei a explicar brevemente como funciona cada um deles: (ambos processos são executados como root)

make_iso:

Funciona da seguinte maneira, ele cria uma imagem a partir de um diretório, sendo que, recursivamente, agrupa todos os arquivos e subdiretórios que possam existir no diretório indicado, por exemplo vou criar a imagem de um CD que está no CDROM, primeiramente coloco o CD que quero copiar no drive de CDROM e monto ele, da seguinte maneira:

    [root@localhost]# mount /mnt/cdrom

vou até o diretório que quero que a imagem fique, imaginemos que criei o diretório /CDRW-ISO para armazenar as imagens, então vou lá:

    [root@localhost]# mkdir /CDRW-ISO
    
    [root@localhost]# cd /CDRW_ISO

Considere que as imagens apenas criam um arquivo com todo o conteúdo do disco ou diretório dado, assim este não comprime e o tamanho do arquivo de imagem é de aproximadamente o tamanho do total do CD ou diretório, caso o CD esteja cheio, são aproximadamente 650MB que tem que ter disponíveis no disco, caso não tenha esta capacidade livre no disco o procedimento não vai funcionar. Para verificar o espaço livre em disco dê o comando:

    [root@localhost]# df

Ex:

    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/hda1              2015936   1611844    301680  84% /

por exemplo no disco acima só tenho aprox. 301MB livres(Available) e 84% usado, assim não poderei fazer uma imagem de mais desta capacidade. Caso você tenha este problema, libere espaço no seu disco e comece o procedimento uma vez tendo liberado o espaço necessário.

Agora, estando no diretório /CDRW-ISO vamos executar o script, da seguinte maneira e passando os parâmetros certos

    [root@localhost /CDRW-ISO]# make_iso <dir_base>
      <nome_da_imagem> <nome_CD>

No nosso exemplo, digamos que quero copiar meu CD 1 do Conectiva Linux 6.0 (é totalmente possível e legal fazer isto):

    [root@localhost]# make_iso /mnt/cdrom/ linux.img linux

isto quer dizer que vou criar um arquivo chamado linux.img no diretório /CDRW-ISO a partir do diretório /mnt/cdrom/ que será meu CDROM montado com o CD 1 do Conectiva Linux 6.0 e quando eu mandar gravar o CD o label do CD ficará com o nome linux, agora é só aguardar ele criar a imagem, quando o prompt retornar é por que está, a saída padrão é algo como:

    [root@snake /tmp]# make_iso /tmp/ tmpimage.img exemplo
     
    mkisofs: Option -a is obsolete. All files are included by default.
    Total extents actually written = 2065
    Total translation table size: 12007
    Total rockridge attributes bytes: 27770
    Total directory bytes: 81920
    Path table size(bytes): 686
    Max brk space used 37864
    2065 extents written (4 Mb)
    [root@snake /tmp]#

claro que este é um exemplo, mas serve como base, criei uma imagem de 4MB do meu /tmp que se chama tmpimagem e se eu gravar um CD com esta imagem o CD chamar-se-à exemplo. Pronto, agora com a imagem em mãos podemos gerar nosso disco, só que pare isto usa-se outro script, o run_cdrw que passarei a explicar mais abaixo.

run_cdrw:

Este script é simples e auto explicativo, não precisa de muita explicação, é só ter o cuidado de desmontar o CDR/CDRW, este não deve estar montado e depois ir no diretório onde está a imagem criada e, seguindo nosso exemplo fazer:

    [root@localhost]# cd /CDRW-ISO
    
    [root@localhost /CDRW-ISO]# umount /mnt/cdrw
    
    [root@localhost /CDRW-ISO]# run_cdrw

sairá uma lista e logo uma mensagem para você escolher qual CD deve escolher, tem que escolher o número do CDR/CDRW, caso tenha mais de um CD na máquina, caso só tenha um, escolha a única opção, coloque esta após a mensagem:

Selecione um Gravador de CD:

caso escolha o número errado ou este não for um CDR/CDRW o próprio programa voltará solicitando uma outra opção pois aquela é incorreta.

Logo será solicitado o nome da imagem da qual se quer gerar o disco, então coloque o nome da imagem:

Coloque o nome da imagem: linux.img

Logo solicitará a velocidade com a qual você deseja gravar, isto vai depender da sua gravadora e da media que você estiver usando, no meu caso minha gravadora suporta gravar em 8x e a media também assim que colocarei para gravar em 8x:

    Velocidade de gravação [0/2/4/8/10]: 8

Após isto o comando será mostrado e verificado e uma mensagem de configuração aparecerá, deve colocar yes ou no tal como está entre colchetes []:

Verificando comando:

    cdrecord -v speed=8 dev= linux.img
      Você tem certeza que deseja fazer isto ? [No/yes] yes

e o CD começará a ser gerado, é interessante não mexer na máquina enquanto grava, mesmo que os equipamentos mais avançados tenham buffer e o sistema também, pode ser que algum dos aplicativos venha a prejudicar a gravação e você venha a perder uma media, o que não é muito agradável.

### 5.0 ###

O procedimento que segue abaixo, se destina à máquina que foi feita instalação completa. Caso a sua máquina não esteja com a instalação completa, será necessário instalar alguns pacotes, os quais seguem logo abaixo:

PACOTES DO CONECTIVA 5.0

    glibc-2.1.2-11cl
    kernel-headers-2.2.14-14cl
    glibc-devel-2.1.2-11cl
    binutils-2.9.5.0.24-2cl.i386.rpm
    egcs-1.1.2-14cl
    egcs-c++-1.1.2-14cl
    egcs-g77-1.1.2-14cl
    egcs-objc-1.1.2-14cl
    kernel-source-2.2.14-14cl.i386.rpm
    make-3.78.91-1cl.i386.rpm
    bin86-0.4-9cl.i386.rpm
    ncurses-devel-4.2-21cl.i386.rpm

Para instalar os pacotes:

Monte o CD 1 do Conectiva 5.0:

    [root@localhost ]# mount /mnt/cdrom
    
    [root@localhost ]# cd /mnt/cdrom/conectiva/RPMS
    
    [root@localhost RPMS]# rpm -ivh nome_pacote

RECOMPILANDO O KERNEL

Segue abaixo os passos para recompilar o kernel:

1 - Vá ate o diretório /usr/src/linux

    [root@localhost ]# cd /usr/src/linux

2 - Digite o comando :

    [root@localhost ]# make menuconfig

Logo após ter digitado esse comando, irá aparecer um menu onde poderá ser escolhido o que o kernel irá carregar como módulo, built-in ou simplesmente não carregará.

Será necessário fazer algumas modificações, abaixo segue onde e quais são essas mudanças.

Leia em cima da página como faz para alterar os componentes para Módulo, Built-in, etc... e altere somente as seguintes linhas, deixando-as como segue abaixo.

Block Devices

    <*> Normal PC floppy disk support
    <*> Enhanced IDE/MFM/RLL disk/cdrm/tape/floppy support
    ---- Please see Documentation/ide.txt for help/info on IDE drives
    [ ]  Use old disk-only driver on primary interface
    [*]  Include IDE/ATA-2 DISK support
    <M>  Include IDE/ATAPI CDROM support
    <M>  Include IDE/ATAPI TAPE support
    <M>  Include IDE/ATAPI FLOPPY support
    <M>  SCSI emulation support

SCSI Support

    <M> SCSI support
    --- SCSI support type (disk, tape, CD-ROM)
    <M> SCSI disk support
    <M> SCSI tape support
    <M> SCSI CD-ROM support
    [*] Enable vendor-specific extensions (for SCSI CDROM)
    <M> SCSI generic support
    --- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
    [*] Probe all LUNs on each SCSI device
    [*] Verbose SCSI error reporting (kernel seize +=12K)
    [*] SCSI logging facility

Saia e salve as suas alterações ( Só altere o que está descrito acima )

3 - Recompilando o Kernel, digite:

    [root@localhost ]# make dep
    
    [root@localhost ]# make clean
    
    [root@localhost ]# make bzImage
    
    [root@localhost ]# make modules
    
    [root@localhost ]# make modules_install

4 - Feito isso ( esse processo irá demorar bastante tempo), a nova imagem do kernel estará localizada no diretório /usr/src/linux/arch/i386/boot, vá até esse diretório e mova a imagem para o diretório /boot :

    [root@localhost ]# cd /usr/src/linux/arch/i386/boot
    
    [root@localhost ]# mv bzImage /boot

5 - O próximo passo será a alteração do lilo.conf (arquivo se encontra no /etc), para que seja carregada a nova imagem:

MODIFICANDO O ARQUIVO LILO.CONF

Segue abaixo um exemplo de lilo.conf e o que deve ser alterado:

lilo.conf ANTES DE RECOMPILADO

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    image=/boot/vmlinuz-2.2.14-14cl
            label=linux
                    root=/dev/hda3
                            read-only

lilo.conf DEPOIS DE RECOMPILADO

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    image=/boot/vmlinuz-2.2.14-14cl
            label=linux
            root=/dev/hda3
            read-only
    image=/boot/bzImage         <----- Nome da imagem gerada pela recompilação
            label=cdr           <----- O que será digitado no LILO
            root=/dev/hda3      <----- Dispositivo do seu HD
            read-only

6 - Pronto agora basta regravar o lilo :

    [root@localhost ]# lilo

Reinicie a máquina, para que possamos subir os módulos.

SUBINDO OS MÓDULOS

7 - Após ter reiniciado a máquina, entre como root e suba os módulos na seguinte ordem:

    [root@localhost ]# modprobe scsi_mod
    
    [root@localhost ]# modprobe sr_mod
    
    [root@localhost ]# modprobe sg
    
    [root@localhost ]# modprobe ide-scsi

Inclua essas linhas no final do arquivo rc.local, localizado no diretório /etc/rc.d para que não seja necessário digitar isso toda vez que reinicie a máquina:

    [root@localhost ]# cd /etc/rc.d
    
    [root@localhost ]# mcedit rc.local

8 - Agora vamos testar para ver se a gravadora foi reconhecida:

    [root@localhost ]# cdrecord -scanbus

Se tudo ocorrer bem irá parecer algo do tipo:

    Cdrecord 1.8 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling
    Using libscg version 'schily-0.1'
    scsibus0:
            0,0,0     0) 'HP      ' 'CD-Writer+ 8100 ' '1.0g' Removable CD-ROM
            cdrecord: Warning: controller returns wrong size for CD capabilities page.
             0,1,0     1) 'CREATIVE' 'CD4820E CS990211' '1.03' Removable CD-ROM
             0,2,0     2) *
             0,3,0     3) *
             0,4,0     4) *
             0,5,0     5) *
             0,6,0     6) *
             0,7,0     7) *

9 - Feito isso, a gravadora e os outros drivers de CD-ROM, deixarão de responder por um device IDE (hd??), e passarão a responder por um device SCSI (sr?), para ter certeza que esses drivers estão respondendo por esses dispositivos, digite:

    [root@localhost ]# dmesg

Irá aparecer o seguinte:

    scsi0 : SCSI host adapter emulation for IDE ATAPI devices
    scsi : 1 host.
    Vendor: ATAPI     Model: CDROM   MS5.00    Rev:  .05
    Type:   CD-ROM                             ANSI SCSI revision: 02
    Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
    sr0: scsi3-mmc drive: 16x/48x cd/rw xa/form2 cdda tray  <--- Dispositivo SCSI (sr0)
    Uniform CD-ROM driver Revision: 3.11

Note que nesse caso o resultado do comando "dmesg", não está completo, sendo que só está reportado aqui a parte que interessa.

10 - Bom, agora que sabemos que o dispositivo pelo qual o CdRom irá responder é o sr0, vamos tentar montar um CD:

    [root@localhost ]# mount /dev/sr0 /mnt/cdrom

Caso volte para tela uma menssagem de erro do tipo:

    mount: the kernel does not recognize /dev/sr0 as a block device
           (maybe   nsmod driver'?)

É porque não existe na máquina um dispositivo sr0, para cria-lo digite:

    [root@localhost ]# mknod /dev/sr0 b 11 0

Pronto agora deverá funcionar sem problemas.

10 - Pronto sua gravadora já está sendo reconhecida pelo Linux, bastando usar programas como o cdrecord ou xcdroast para a gravação dos discos.