18 de mai. de 2010

Instalando o driver da G210M/G230M no Ubuntu (9.10)

Faço esse post não pra o leitor, mas para mim. Já passei um bom tempo tendo de procurar na internet como é que faz pra instalar o driver da minha placa de video (GeForce G210M) no Ubuntu duas vezes e sempre encontro algum problema. Minha sorte foi que, por acaso, me lembrava do nome do programa que utilizei e consegui instalá-la hoje denovo [quase] sem problemas.

Me baseei, ao fazer esse tutorial, nesse blog e nesse forum.

PROBLEMA

Depois de instalar o driver da NVIDIA para a placa G210M/G230M (soube que a G230M alguns PCs com a G230M tem tido o mesmo problema) no Ubuntu (estou usando o 9.10), por algum motivo, o "monitor" - estou num notebook, por isso as aspas - simplesmente desliga e não mostra nada na tela (ou então mostra vários riscos verticais em tons de cinza). O que provavelmente acontece é que o driver da placa de video não "encontrou" o monitor.

SOLUÇÃO

Dizer explicitamente no arquivo xorg.conf qual é o monitor. Para isso, sigamos os seguintes passos:

(A sugestão dada pelo blog que eu linkei ali em cima pra extrair o EDID foi usar o programa softMCCS, que é muito bonito, mas, infelizmente, não roda - de acordo com o que eu andei lendo na internet - no Windows 7. Tentei rodar e tive sérios problemas. Linkei aquele forum ali porque justamente ele me apresentou o programa que resolveu o problema: usar o phoenix)

A primeira coisa a fazer é ter uma forma decente de avisar ao driver qual é o monitor que estamos usando. A maneira canônica para fazer isso é através de um arquivo EDID (clique no link para saber mais). Para conseguir esse arquivo EDID, podemos usar vários programas. Aqui, vou usar o Phoenix.

Ao abrir o Phoenix, clique em Tools -> Extract Registry EDID, e clique duas vezes na linha que indica o seu monitor (provavelmente, só vai haver uma linha). Depois disso, vá em File -> Export (imagem ao lado) e selecione o tipo de arquivo .raw. Escolha o nome do seu arquivo, clique em salvar, e vá pra o Linux. Se estiver usando o softMCCS (o programa que eu disse que dava pau no Windows7), grave o arquivo no formate .bin. Esse é o formato que ele usa pra gravar EDIDs "de verdade" (o arquivo binário com as informações que a gente realmente quer).

No linux, baixe o driver da sua placa de video no site da NVIDIA (vai perguntar o seu sistema operacional, e alguns dados daqueles que todo mundo sabe). Abra o terminal e digite

$>sudo /etc/init.d/gdm stop

Isso
deve fechar o X para que você possa instalar o driver da NVIDIA (dá erro se você não fechar o X e tentar instalar o driver D=). Agora vamos instalar o driver. Vá até o endereço onde você baixou o driver e digite (obviamente, o nome do arquivo pode ser diferente, dependendo de qual seja o seu computador especificamente)

$>sudo sh NVIDIA-Linux-x86_64-195.36.24-pkg2.run

Uma instalação vai começar. Aceite tudo =D (se você estiver em um PC de 64 bits, ele vai perguntar se você quer instalar as bibliotecas de compatibilidade com OpenGL, por exemplo).

Ao término da instalação, estaremos naquele momento em que a tela fica preta (ou com linhas verticais em tom de cinza) do qual não gostamos. Para resolver o problema, abra o terminal (se você reiniciou o computador - para ver se a tela preta aparece ou não -, utilize o liveCD para acessar a partição do linux e utilizar o terminal) e vá até o endereço onde você guardou o seu arquivo EDID (aquele que nós gravamos com a extensão .raw ou .bin, lembra?) e o copie para /etc/X11/ da partição do linux.

[pausa para um problema de desambiguação]

No caso de você estar utilizando o LiveCD, o endereço /etc/X11 do qual eu acabei de falar será diferente. O caso é que o liveCD emula um sistema de arquivos "novo" e monta as partições do HD nesse sistema. Falando de uma forma mais simples, é com se o Linux (quando rodado pelo liveCD) tratasse as partições do HD de maneira não diferente daquela que ele trata CDs ou DVDs inseridos no driver: tudo isso vai parar na pasta /media (ou /mount, dependendo do caso). Assim, para acessar o endereço /etc/X11 **do HD**, você deverá ir para (provavelmente):

/media/{nome estranho que vai ser dado ao seu HD}/etc/X11
Onde o nome do seu HD normalmente será um monte de números

[/pausa para um problema de desambiguação]

Lá em /etc/X11, faremos um backup do arquivo xorg.conf (pra o caso de acontecer qualquer coisa de errado), apagaremos ele (dane-se ele: até agora não vi diferença ter ele "minimalista" ou com um monte de coisas [se alguém quiser me explicar melhor as diferenças, ficarei grato =D]) e colocaremos um novo no lugar, com as informações do EDID. Assim, digite as seguintes linhas de comando:

$> sudo cp xorg.conf xorg.conf.bkp # Cria um backup do xorg.conf
$> sudo rm xorg.conf # Apaga o arquivo xorg.conf


Agora, de alguma forma (milhares de forma de fazer isso - apesar de todo mundo dizer que é bom, eu admito que sou n00b e que não sei usar o vi), crie um novo arquivo contendo o seguinte:

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
Option "ConnectedMonitor" "DFP-0"
Option "CustomEDID" "DFP-0:/etc/X11/seuEDID.raw
EndSection


Onde "seuEDID.raw" é o nome do seu arquivo (se você usou o softMCCS ele será .bin, em vez de .raw). Pronto. Agora reinicie o computador e cruze os dedos: se tudo estiver certo, você verá inclusive o logo da NVIDIA ao iniciar o Linux =D

2 comentários:

  1. Para iniciar o linux vc teve que usar o modo nomodeset?

    ResponderExcluir
  2. @Nirth

    Se estiveres falando do que os caras fazem nesses links abaixo

    http://ubuntuforum-pt.org/index.php?topic=66348.0

    http://ubuntu-tutorials.com/2010/05/06/ubuntu-10-04-lucid-blank-screen-at-startup-workaround/

    então, não, eu não fiz isso =D. A menos que de alguma forma tenha acontecido isso como efeito colateral (medo... =O), mas eu acho que não. Vou até dar uma olhada.

    Espero ter ajudado...

    ResponderExcluir