Graças a isto, um grande número de distribuições já estão vindo com o driver pré-instalado, o que é bom tanto para os usuários, quanto para a própria nVidia, que tem a chance de vender mais placas graças ao bom suporte por parte das distribuições.
Em distribuições derivadas do Debian, o driver da nVidia pode ser instalado tanto do jeito “normal”, baixando o driver binário do site da nVidia e executando o instalador no modo texto, ou instalado o driver através do apt-get.
O driver é dividido em duas partes: um módulo no Kernel, que precisa ser compilado durante a instalação do driver (já que o módulo é diferente para cada versão do Kernel) e uma coleção de bibliotecas e utilitários que são independentes da versão do Kernel.
A instalação do driver pode ser problemática em alguns casos, pois é necessário ter instalados os compiladores e os headers do Kernel e a versão do gcc instalada precisa ser a mesma que foi usada para compilar o Kernel.
A minha idéia aqui não é ensinar como instalar o driver, o que é bastante simples, mas ensinar como criar pacote pré-compilados que podem ser distribuídos ou incluídos em personalizações do sistema. Distribuir um pacote pré-compilado elimina a necessidade de ter compiladores instalados e minimiza os possíveis problemas de instalação.
Por outro lado, o pacote pré-compilado só vai funcionar no Kernel específico para que foi compilado.
Para gerar um pacote .deb com o módulo pré-compilado:
# apt-get install module-assistant nvidia-kernel-common
# module-assistant auto-install nvidia
No final da instalação você verá que é gerado um pacote .deb com o módulo compilado para o Kernel atual:
Selecionando pacote previamente não selecionado nvidia-kernel-2.6.8.1-kanotix-10.
(Lendo banco de dados … 57537 arquivos e diretórios atualmente instalados.) Descompactando nvidia-kernel-2.6.8.1-kanotix-10 (de …/nvidia-kernel-2.6.8.1-kanotix 10_1.0.6111-1_i386.deb) …
Instalando nvidia-kernel-2.6.8.1-kanotix-10 (1.0.6111-1) …
Você pode instalar este pacote em outras máquinas, que estejam rodando a mesma versão do sistema, ou pelo menos estejam utilizando a mesma versão do Kernel. Para isso, você precisará reempacotar o pacote, pois ele é deletado no final da instalação:
# dpkg-repack nvidia-kernel-2.6.8.1-kanotix-10
dpkg-deb: construíndo pacote `nvidia-kernel-2.6.8.1-kanotix-10′ em `./nvidia-kernel-2.6.8.1-kanotix-10_1.0.6111-1_i386.deb’.
Agora sim, você tem o pacote no diretório atual e pode redistribuí-lo à vontade.
Falta agora instalar o restante do driver, incluindo as bibliotecas 3D. Estes componentes fazem parte do pacote nvidia-glx, que também pode ser instalado pelo apt-get:
# apt-get install nvidia-glx
Basta distribuir o pacote nvidia-kernel-2.6.8.1-kanotix-10 junto com o pacote nvidia-glx.
A segunda maneira é reempacotar o driver binário da nVidia, incluindo o módulo para a versão atual do Kernel. Para isso, baixe a versão mais atual do driver no https://www.nvidia.com e execute-o com a opção –add-this-kernel:
# ./NVIDIA-Linux-x86-1.0-6111-pkg1.rum -add-this-kernel
Isto vai gerar um novo pacote com o módulo para o Kernel atual incluído. Ao instalar você verificará que ele simplesmente usará o módulo pré-compilado, sem tentar compilar novamente.
Em qualquer um dos dois casos, depois de instalar o pacote ainda é necessário fazer as mudanças no arquivo de configuração do vídeo. Isso pode ser automatizado através de um script, usando o sed ou o awk para alterar os campos necessários no arquivo /etc/X11/XF86Config-4.
Este é um exemplo de uso do sed para fazer as alterações necessárias que escrevi para uso no icone mágico do Kurumin:
sed -e ‘s/nv/nvidia/g’ /etc/X11/XF86Config-4 > /etc/X11/XF86Config-4nv1
echo “Ativando driver: Localizando expressao *nv* e substituindo por *nvidia*”; sleep 1sed -e ‘s/fbdev/nvidia/g’ /etc/X11/XF86Config-4nv1 > /etc/X11/XF86Config-4nv2
echo “Ativando driver: Localizando expressao *fbdev* e substituindo por *nvidia*”; sleep 1sed -e ‘s/vesa/nvidia/g’ /etc/X11/XF86Config-4nv2 > /etc/X11/XF86Config-4nv3
echo “Ativando driver: Localizando expressao *vesa* e substituindo por *nvidia*”; sleep 1sed -e ‘/Load “dri”/D’ /etc/X11/XF86Config-4nv3 > /etc/X11/XF86Config-4nv4
echo “Ativando driver: Removendo a linha *Load dri*”; sleep 1sed -e ‘/Load “GLcore”/D’ /etc/X11/XF86Config-4nv4 > /etc/X11/XF86Config-4nv5
echo “Ativando driver: Removendo a linha *Load GLcore*”; sleep 1sed -e ‘/Load “dbe”/D’ /etc/X11/XF86Config-4nv5 > /etc/X11/XF86Config-4nv6
echo “Ativando driver: Removendo a linha *Load dbe*”; sleep 1mv /etc/X11/XF86Config-4 /etc/X11/XF86Config-4original
mv /etc/X11/XF86Config-4nv7 /etc/X11/XF86Config-4
rm -f /etc/X11/XF86Config-4nv*