Instalando driver proprietário Nvidia com suporte à tecnologia Optimus num notebook com Debian Jessie

Esse post é do dark side. É sobre como instalar o driver proprietário da Nvidia no Debian Jessie, dado que o estado do driver livre infelizmente é bem insatisfatório. A própria Nvidia sempre boicotou o desenvolvimento do driver livre (nouveau) e só recentemente começou a prestar alguma ajuda.

A tecnologia NVIDIA Optimus permite aos notebooks utilizarem a placa de vídeo onboard no cotidiano e, apenas quando necessário, fazer uso da placa de vídeo dedicada (Nvidia). Isso é essencial para que a bateria tenha longa duração, dado que a placa de vídeo dedicada é ativada apenas quando necessário (e ela consome bastante energia :/).

O projeto que se dedica a suportar essa tecnologia no GNU/Linux é o Bumblebee. Podemos usar ele com o driver livre (nouveau) e o driver proprietário. Como o driver proprietário da Nvidia é bem maduro no GNU/Linux, conseguimos por meio dele usar todo o potencial da placa de vídeo e por meio do Bumblebee economizar o máximo de energia possível.

A instalação no Debian antes do Jessie exigia alguma atenção, mas no Jessie os pacotes já estão nos repositórios e o processo é bem direto.

Vamos pôr a mão na massa:

0. Adicione suporte aos repositórios com softwares proprietários

Antes de mais nada, os repositórios com softwares proprietários (non-free) e dependentes de proprietários (contrib) devem estar habilitados.

Para tanto, adicione no final das linhas de repositórios para o Jessie as palavras non-free e contrib em /etc/apt/sources.list. Exemplo:

1
2
deb http://debian.pop-sc.rnp.br/debian/ jessie main contrib non-free
deb-src http://debian.pop-sc.rnp.br/debian/ jessie main contrib non-free

Depois atualize os dados referentes aos repositórios executando:
# apt-get update

1. Instalação

  • Instale os pacotes necessários p/ o Bumblebee e o driver proprietário Nvidia:

    1
    # apt-get install bumblebee-nvidia primus
  • Apenas para Debian 64 bits. Permite que utilizemos o Bumblebee inclusive quando rodando aplicações 32 bits em sistemas 64 bits (essencial para diversos jogos no Steam):

    1
    # dpkg --add-architecture i386 && apt-get update && apt-get install primus-libs:i386

    Atenção: Se durante a instalação, lhe for perguntado se deseja criar um arquivo xorg.conf responda que não. Essa pergunta se aplica apenas a sistemas que usam uma única placa (Nvidia - aka sem Optimus). Também não execute nvidia-xconfig.

2. Pós-instalação

Adicione os usuários que forem utilizar da placa Nvidia via Bumblebee ao grupo bumblebee:

1
# adduser $USER bumblebee

Caso o usuário não seja adicionado, o mesmo não conseguirá chavear entre a placa de vídeo onboard e offboard.

Pronto! Tudo instalado e pós-instalado.

3. Utilização

O sistema estará por padrão utilizando sempre a placa onboard. Para utilizarmos a placa dedicada Nvidia, devemos executar a aplicação desejada por meio de um dos seguintes executáveis: primusrun ou optirun.

O primusrun é mais novo que optirun, tende a substituí-lo e possui maior performance (preferencial).

Exemplo de utilização:

  • $ primusrun [options] <application> [application-parameters]
  • $ optirun [options] <application> [application-parameters]

Executando o Steam c/ o primusrun: $ primusrun steam.

Como visto, assim temos um controle bem grande sobre quando uma ou outra placa deve ser usada. Aqui (com as observações abaixo feitas ao Steam) tenho rodado os jogos com toda a performance possível, e no restante do tempo a bateria dura e o notebook fica silencioso :D.

3.1 Utilizando Bumblebee c/ Steam

  • Economizando energia no Steam:
    Se executamos o Steam assim $ primusrun steam, gastaremos energia à toa pois estamos com a placa Nvidia ativada sempre (mesmo enquanto navegamos pelo Steam ou executamos jogos leves).
    A forma ideal é configurar o jogo que necessitar da Nvidia defindo que o mesmo deve ser executado com o comando primusrun %command% (ou optirun %command%) em: Properties -> General -> Set Launch Options….

  • Jogos que nao funcionarem no Debian Jessie c/ Optimus:
    Pode ocorrer da versão errada do libGL estar sendo carregada. Para corrigir isso:

    1. Localize a versão correta do libGL:
      1
      $ locate libGL.so
    2. Configure o Steam p/ carregar o jogo com a versao correta (em Properties -> General -> Set Launch Options….). Exemplo:
      1
      LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGL.so.1 primusrun %command%

Fonte: Steam - ArchWiki