13Nov07 Solucionando problemas no CD/DVD-ROM
Hoje eu vou falar sobre dois problemas que aconteceram comigo e que poucos lugares mostrarão as soluções: lentidão na hora de ver um DVD e Acesso Negado ao CD/DVD-ROM no Konqueror. As soluções são extramentes simples - apesar da solução do “Acesso Negado” ser bem obscura - e fáceis de executar. Essas soluções foram executadas no Gentoo, mas isso não quer dizer que não possam ser executadas em outras distribuições.
Lentidão na hora de ver um DVD
Eu não sei se algumas distros vem com isso já configurado, mas o meu querido Gentoo não. A lentidão na hora de ver um DVD ocorre porque a CPU tem que pegar os dados da fonte (CD/DVD-ROM) e transferir para o destino. Durante essa cópia de dados, a CPU fica indisponÃvel para outras tarefas gerando a lentidão ou “lag” (para os mais entendidos :)).
Para solucionar o problema é preciso ter o programa hdparm por perto. Para instalar ele no seu Gentoo, basta executar:
emerge -av sys-apps/hdparm
Agora vem o principal, onde iremos ativar o DMA do CD/DVD-ROM. Ativar o DMA? O que é isso? Bem, vou explicar de forma simples usando um trecho retirado da Wikipedia:
O DMA é uma caracterÃstica essencial dos computadores modernos. Permite que os dispositivos transfiram dados sem sobrecarregar a CPU. De outra maneira, a CPU teria que copiar todos os dados da fonte até o destino. Isto é tipicamente mais lento do que copiar blocos de dados dentro da memória, já que o acesso a dispositivo de I/O através de barramentos periféricos é mais lento que a RAM. Durante a cópia dos dados a CPU ficaria indisponÃvel para outras tarefas.
Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para outro. A CPU inicia a transferência, mas não executa a transferência. Para os chamados third party DMA, como é utilizado normalmente nos barramentos ISA, a transferência é realizada pelos controladores DMA que são tipicamente parte do chipset da placa mãe. Projetos mais avançados de barramento, como o PCI, tipicamente utilizam bus-mastering DMA, onde o dispositivo toma o controle do barramento e realiza a transferência de forma independente.
O interessante é que para ativar essa tecnologia ultra-high-tech-low-level, no Linux, basta executar um simples comando:
hdparm -d1 /dev/cdrom
Para facilitar a vida de vocês, recomendo que adicionem o comando acima no /etc/conf.d/local.start. Para os que usam Slackware, adicionem o comando no /etc/rc.d/rc.local.
Agora você pode ver todos os seus filmes sem problemas.
Acesso Negado ao CD/DVD-ROM no Konqueror
O engraçado desse problema é que achei a sua solução no Encontro Mineiro de Software Livre, apesar que eu já sabia da sua existência há muito tempo. No evento eu recebi um CD do Guilherme Gonçalves - que, diga-se de passagem, o mini-curso dele é muito bom - com vários brushes, texturas e imagens para o GIMP. Quando inseri o CD no driver o HAL, como sempre, montou tudo sozinho, mas o Konqueror mostrou uma mensagem de Acesso Negado. Fiquei tão nervoso que revirei todo o Bugs Gentoo atrás de alguma coisa referente a isso. Por sorte, achei esse ticket que explica de forma muito detalhada o motivo do problema.
Vou explicar de forma bem superficial, mas quem quiser saber mais detalhes basta acessar o link do ticket. O HAL tem uma regra de negócio que se recusa a montar qualquer dispositivo que estiver no /etc/fstab. Para solucionar esse problema, basta comentar a linha (colocando # na frente) abaixo no /etc/fstab:
/dev/cdrom /mnt/cdrom auto noauto 0 0
Apesar desse problema ser um bug para o usuário final, o HAL faz isso de propósito. Por esse motivo não considerei como um bug. Agora, por que isso ? Não tenho a mÃnima idéia, mas aqui está o commit que David Zeuthen da Red Hat fez para adicionar essa regra de negócio.
Se você tem mais dicas interessantes para solucionar problemas ou melhorar o desempenho do CD/DVD-ROM, mande para o michel [at] milk-it [dot] net ou coloque nos comentários.
tags {cdrom, dma, hal, hdparm, linux}





