1.- Copian el siguiente script como what-nvidia.sh:
#!/bin/sh
# Sirve para detectar e instalar el driver que debe descargarse según la tarjeta NVIDIA instalada
#
# Copyright (c) 2008 DiabloRojo
#
# Este script ha añadido parte de otro script llamado install-fglrx-debian.sh de la Web: http://kanotix.com/files/
# y de otro script llamado compiz-check de la Web: http://forlong.blogage.de/article/pages/Compiz-Check
#
# This program is free software. Feel free to redistribute and/or
# modify it under the terms of the GNU General Public License v3
# as published by the Free Software Foundation.
VERSION="0.0.8"
# Version del ultimo driver de NVIDIA. Ver http://www.nvidia.com/object/unix.html
VER=177.82
usage()
{
printf "\nAcerca:\n"
printf "%6s \033[1mwhat-nvidia\033[0m comprobará si su sistema cumple todos los requisitos para \n"
printf "%6s instalar alguno de los drivers de nVIDIA.\n"
printf "%6s Visite\033[1m http://www.nvidia.com/object/unix.html \033[0mpara mas información. \n\n"
printf "Uso:\n"
printf "%6s Ejecutar este script sin ningún argumento.\n\n"
printf "Argumentos disponibles:\n"
printf " -d o --download %4s Descarga el driver en el directorio activo.\n"
printf " -f o --force %7s Instalar el driver.\n"
printf " -h o --help %8s Lista de argumentos disponibles y en uso (este mensaje).\n"
printf " -i o --install %5s Instrucciones para la instalación del driver.\n"
printf " -r o --required %4s Lista de los requisitos mínimos de Software.\n"
printf " -v o --version %5s Versión para imprimir de \033[1mwhat-nvidia\033[0m en uso.\n\n"
}
requisitos()
{
printf "\nRequisitos Mínimos Software:\n"
printf "%1sDeberá tener instalado los siguientes paquetes para poder instalar el driver:\n"
printf "%6s \033[1m kernel-source \033[0m\n"
printf "%6s \033[1m kernel-headers \033[0m\n"
printf "%6s \033[1m binutils \033[0m\n"
printf "%6s \033[1m make \033[0m\n"
printf "%6s \033[1m gcc \033[0m\n"
printf "%6s \033[1m glibc \033[0m\n\n"
}
if [ $# != 0 ]; then
case $1 in
-d | --download)
;;
-f | --force)
if [ "$(id -u)" != "0" ]; then
printf "\nError: Debes ser superusuario \033[1mroot\033[0m para instalar el driver.\n\n"
exit 5
fi
;;
-h | --help)
usage
exit 0
;;
-i | --install)
;;
-r | --required)
requisitos
exit 0
;;
-v | --version)
echo $VERSION
exit 0
;;
*)
printf "\nError, Opción desconocida: \"$1\"\nEjecute \033[1m$0 --help\033[0m para mas detalles.\n"
exit 1
;;
esac
fi
# Necesario para lspci, porque depende del $PATH de cada distro
export PATH=$PATH:/sbin:/usr/sbin
XSET=$(command -v xset)
# Detectar localizacion de archivo log de Xorg
if [ ! -z $XSET ]; then
XORG_LOG=$($XSET q | grep "Log file" | awk '{print $3}')
fi
# Salidas coloreadas
DESCONOCIDO="\033[1;31mDesconocido\033[0m"
OK="\033[1;32mOK\033[0m "
FALLO="\033[1;31mFALLO\033[0m"
AVISO="\033[33mAVISO\033[0m"
INSTALADO="\033[1;32m¡Esta instalado!\033[0m"
# General distribution info file
DIST_INFO="/etc/lsb-release"
# Detectar distribucion
detectar_distro()
{
if [ -d /etc/linuxmint ]; then
DISTRIB_ID="Linux Mint"
return 0
elif [ -r $DIST_INFO ]; then
. $DIST_INFO
fi
if [ -z $DISTRIB_ID ]; then
unset DISTRIB_RELEASE
if [ -f /etc/arch-release ]; then
DISTRIB_ID="Arch Linux"
elif [ -r /etc/knoppix-version ]; then
DISTRIB_ID="Knoppix"
DISTRIB_RELEASE="($(cat /etc/knoppix_version))"
elif [ -r /etc/sidux-version ]; then
DISTRIB_ID="Sidux"
DISTRIB_RELEASE="($(cat /etc/sidux-version | awk '{print $4}'))"
elif [ -r /etc/debian_version ]; then
DISTRIB_ID="Debian GNU/Linux"
DISTRIB_RELEASE="($(cat /etc/debian_version))"
elif [ -r /etc/fedora-release ]; then
DISTRIB_ID="$(cat /etc/redhat-release)"
elif [ -r /etc/gentoo-release ]; then
DISTRIB_ID="Gentoo"
DISTRIB_RELEASE="($(cat /etc/gentoo-release | awk '{print $5}'))"
elif [ -f /etc/lfs-version ]; then
DISTRIB_ID="Linux from scratch"
elif [ -r /etc/pclinuxos-release ]; then
DISTRIB_ID="PCLinuxOS"
elif [ -f /etc/mandriva-release ] || [ -f /etc/mandrake-release ]; then
DISTRIB_ID="Mandriva"
elif [ -f /etc/redhat-release ]; then
DISTRIB_ID="RedHat"
elif [ -r /etc/vector-version ]; then
DISTRIB_ID="VectorLinux"
DISTRIB_RELEASE="($(cat /etc/vector-version))"
elif [ -r /etc/slackware-version ]; then
DISTRIB_ID="$(cat /etc/slackware-version)"
elif [ -f /etc/release ]; then
DISTRIB_ID="Solaris"
elif [ -r /etc/SuSE-release ]; then
DISTRIB_ID="$(grep -i suse /etc/SuSE-release)"
elif [ -f /etc/yellowdog-release ]; then
DISTRIB_ID="YellowDog Linux"
elif [ -f /etc/zenwalk-version ]; then
DISTRIB_ID="Zenwalk"
else
DISTRIB_ID="Desconocido"
fi
fi
}
# Detectar kernel en uso
detectar_kernel()
{
KVER=$(uname -r)
}
# Detectar tarjeta grafica
detectar_video()
{
if lspci | grep -q VGA ; then
VIDEO=$(lspci | grep VGA | sed 's/.*: //')
else
VIDEO=$DESCONOCIDO
fi
}
# Detectar driver en uso
detectar_driver()
{
UNSUPPORTED=1
LEGACY=0
ARCH=""
PKG=1
#CARDS="$(/sbin/lspci -n|gawk '{sub("Class","")} $2 == "0300:" {print$3}')"
CARDS="$(lspci -n|perl -e 'while(<>){(push(@cards,$_)) if (s/^.+?\s*0300\:\s+(.+?)\s+.*$/$1/)} print join(" ",@cards);')"
for card in $CARDS; do
VENDOR=${card%:*}
DEVICE=${card#*:}
case $VENDOR in
10de|12d2)
case $DEVICE in
0008|0009|0010|0018|0019) UNSUPPORTED=1 ;;
0020|0028|0029|002c|002d|00a0|0100|0101|0103|0150|0151|0152|0153) LEGACY=1;UNSUPPORTED=0 ;;
0110|0111|0112|0113|0170|0171|0172|0173|0174|0175|0176|0177|0178|0179|017a|017c|017d|0181|0182|0183|0185|0188|018a|018b|018c|01a0|01f0|0200|0201|0202|0203|0250|0251|0253|0258|0259|025b|0280|0281|0282|0286|0288|0289|028c) LEGACY=2;UNSUPPORTED=0 ;;
#0170) LEGACY=1;UNSUPPORTED=0 ;; # GeForce4 MX 460 workaround
00fa|00fb|00fc|00fd|00fe|0301|0302|0308|0309|0311|0312|0314|031a|031b|031c|0320|0321|0322|0323|0324|0325|0326|0327|0328|032a|032b|032c|032d|0330|0331|0332|0333|0334|0338|033f|0341|0342|0343|0344|0347|0348|034c|034e) LEGACY=3;UNSUPPORTED=0 ;;
*) UNSUPPORTED=0 ;;
esac ;;
*)
printf "\nError: ¡Encontrado un adaptador grafico que NO pertenece a nVidia!.\n\n"
exit 2
;;
esac
done
if [ "$UNSUPPORTED" = "1" ]; then
printf "\nError: ¡Encontrado un adaptador grafico VGA NO soportado por nVidia!.\n\n"
exit 3
fi
# old DX7 cards up to gf2gts/pro
VER_LEGACY_1=71.86.06
# DX7 cards since gf2mx and all DX8 cards
VER_LEGACY_2=96.43.07
# GeForce 5 series
VER_LEGACY_3=173.14.12
# NOTA: No compensa leer las ultimas versiones de los VER_LEGACY_1 y VER_LEGACY_2,
# ya que solo lo cambia si existe problemas con las nuevas versiones del kernel
ARCHDRV="IA32<" #COL1="84" #COL2="92" # [ "$(uname -m)" = "x86_64" ] && ARCH="_64" && PKG=2 && ARCHDRV="AMD64/EM64T<" && COL1="92" && COL2="100" [ "$(uname -m)" = "x86_64" ] && ARCH="_64" && PKG=2 && ARCHDRV="AMD64/EM64T<" # VER_HTML="$(wget -qO- http://www.nvidia.com/object/unix.html | grep $ARCHDRV | cut -b$COL1-$COL2)" VER_HTML="$(wget -qO- http://www.nvidia.com/object/unix.html | grep $ARCHDRV | cut -f5 -d'>' | cut -f1 -d'<' )" # Introducir el nombre servidor para leer el archivo lastest.txt SERVER=us.download.nvidia.com VER_US="$(wget -qO- http://$SERVER/XFree86/Linux-x86$ARCH/latest.txt|cut -f1 -d' ')" if [ -n "$VER_HTML" -a "$VER_HTML" > "$VER_US" ]; then
VER_US=$VER_HTML
fi
# if [ -n "$VER_US" -a "$VER_US" != "$VER" ] || [ $VER_US -gt $VER ] ; then
if [ -n "$VER_US" -a "$VER_US" > "$VER" ]; then
VER=$VER_US
fi
if [ "$LEGACY" = "1" ]; then
VER=$VER_LEGACY_1
elif [ "$LEGACY" = "2" ]; then
VER=$VER_LEGACY_2
elif [ "$LEGACY" = "3" ]; then
VER=$VER_LEGACY_3
fi
# Introducir el nombre completo del servidor del driver a falta del nombre del driver
URL=http://$SERVER/XFree86/Linux-x86$ARCH/$VER/
}
# Detectar Archivo en uso
detectar_archivo()
{
FICHERO="NVIDIA-Linux-x86$ARCH-$VER-pkg$PKG.run"
ARCHIVO=$FICHERO
}
# Ver que driver esta instalado
ver_driver()
{
# Mensaje de driver instalado
MENSAJE=""
if [ -f /usr/bin/nvidia-settings ]; then
NVIDIA="$(nvidia-settings -g | grep "OpenGL version string" | cut -f7 -d' ')"
if [ "$NVIDIA" = "NVIDIA" ]; then
ACTUAL="$(nvidia-settings -g | grep "OpenGL version string" | cut -b39-50)"
if [ $ACTUAL = $VER ]; then
MENSAJE=$INSTALADO
else
MENSAJE="\033[1;31m Tienes instalada la versión: $ACTUAL\033[0m"
fi
fi
fi
}
# Descargar driver
descargar_driver()
{
wget -Nc "$URL"NVIDIA-Linux-x86$ARCH-$VER-pkg$PKG.run
if [ ! $? = 0 ]; then
printf "\nError en la descarga: ¡Verifique que tenga conexión a Internet!.\n\n"
exit 4
fi
}
# Instrucciones para la instalación del driver.
como_instalar()
{
# printf "\nComo instalar el driver como superusuario o el administrador \033[1m root \033[0m:\n\n"
printf "\nComo instalar el driver\n\n"
printf " Deberá desactivar el servidor gráfico Xorg con la instrucción \033[1m init 3 \033[0m \n"
printf " Y una vez instalado el driver, deberá volverlo a activar con: \033[1m init 5 \033[0m\n\n"
printf " Secuencias de comandos para instalar el driver:\n\n"
printf "%3s \033[1m wget -Nc "$URL"NVIDIA-Linux-x86$ARCH-$VER-pkg$PKG.run \033[0m\n"
printf "%3s \033[1m sh NVIDIA-Linux-x86$ARCH-$VER-pkg$PKG.run -s \033[0m\n"
if [ -r /etc/SuSE-release ]; then
printf "%3s \033[1m sax2 -r -a -m 0=nvidia \033[0m\n\n"
else
printf "%3s \033[1m nvidia-xconfig -s \033[0m\n\n"
fi
printf " Ejecute \033[1mwhat-nvidia -d\033[0m para descargar el driver en el directorio $PWD.\n\n"
}
# Instalar el driver
instalar_driver()
{
sh NVIDIA-Linux-x86$ARCH-$VER-pkg$PKG.run -s
if [ ! $? = 0 ]; then
printf "\nError en la instalación: ¡Verifique que cumpla los requisitos!.\n\n"
requisitos
exit 8
fi
}
# Configurar el driver
configurar_driver()
{
if [ -r /etc/SuSE-release ]; then
LOG_ERROR="/var/log/SaX.log"
sax2 -r -a -m 0=nvidia
else
LOG_ERROR="/var/log/nvidia-installer.log"
nvidia-xconfig -s
fi
if [ ! $? = 0 ]; then
printf "\nError en la configuración del driver:\n"
printf "Mire los archivos $LOG_ERROR y $XORG_LOG para localizar el error.\n\n"
exit 9
fi
}
#
# Main o comienzo de la ejecucion del script
#
# Sistema informacion
printf "\nRecopilación de información sobre su sistema...\n\n"
detectar_distro
printf " Distribución: %9s\033[1m${DISTRIB_ID} ${DISTRIB_RELEASE}\033[0m\n"
detectar_kernel
printf " Kernel versión: %7s\033[1m${KVER}\033[0m\n"
detectar_video
printf " Gráfica chip: %9s\033[1m${VIDEO}\033[0m\n"
detectar_driver
ver_driver
printf " Driver versión: %7s\033[1m${VER} ${MENSAJE}\033[0m\n"
detectar_archivo
printf " Archivo descargar: %4s\033[1m${ARCHIVO}\033[0m\n\n"
# Instrucciones de instalacion del driver
if [ "$1" = "-i" ] || [ "$1" = "--install" ]; then
como_instalar
fi
# Descarga el driver en el directorio activo
if [ "$1" = "-d" ] || [ "$1" = "--download" ]; then
descargar_driver
fi
# Instalando el driver
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
if [ -n "$DISPLAY" ] ; then
printf "\nError: No puedes instalar el driver funcionado el servidor gráfico Xorg\n"
printf "Utilizar una consola virtual de texto (ALT-CTRL-F1)\n"
printf "Ejecute \033[1mwhat-nvidia -i\033[0m para saber como desactivar el servidor gráfico Xorg.\n\n"
exit 6
fi
printf "\nSea paciente la instalación puede tardar unos minutos...\n\n"
if [ ! -f $ARCHIVO ]; then
printf "\nDescargado el driver...\n\n"
descargar_driver
fi
printf "\nInstalado el driver...\n\n"
instalar_driver
printf "\nConfigurando el servidor gráfico Xorg ...\n\n"
configurar_driver
printf "\n\n\033[1m ¡Instalación existosa! \033[0m\n\n"
printf "Reiniciar la computadora o el servidor gráfico Xorg.\n\n"
fi
1.a.- Le damos permisos y ejecutamos el script (como root).
#chmod +x what-nvidia.sh
#./what-nvidia.sh
El script mostrara la informacion del sistema y de la tarjeta Nvidia.
Ej:
Distribución: Debian GNU/Linux (lenny/sid)
Kernel versión: 2.6.26-1-amd64
Gráfica chip: nVidia Corporation NV43 [GeForce 6600 LE] (rev a2)
Driver versión: 177.82
Archivo descargar: NVIDIA-Linux-x86_64-177.82-pkg2.run
La pagina se ve algo asi:
Graphics Drivers
Linux IA32 (X86)
Latest Version: 177.80
Latest Legacy GPU version (71.86.xx series): 71.86.06
Latest Legacy GPU version (96.43.xx series): 96.43.07
Latest Legacy GPU version (173.14.xx series): 173.14.12
Archive
Linux AMD64/EM64T
Latest Version: 177.80
Latest Legacy GPU Version (71.86.xx series): 71.86.06
Latest Legacy GPU Version (96.43.xx series): 96.43.07
Latest Legacy GPU Version (173.14.xx series): 173.14.12
Archive
1.c.- Si quieren el script puede descargar el driver automaticamente:
# ./what-nvidia.sh -h (Para ver la ayuda y otros parametros del script)
Argumentos disponibles:
-d o --download Descarga el driver en el directorio activo.
-f o --force Instalar el driver.
-h o --help Lista de argumentos disponibles y en uso (este mensaje).
-i o --install Instrucciones para la instalación del driver.
-r o --required Lista de los requisitos mínimos de Software.
-v o --version Versión para imprimir de what-nvidia en uso.
Luego ejecutan:
# ./what-nvidia.sh -d
Se descargara el driver en la carpeta activa o en la posicion actual que estan en la consola.
2.- Instalar Driver Nvidia:
a.- Entro en la consola con CTRL-F1, me loggeo como root, apago el entorno gráfico con:
# /etc/init.d/gdm stop
b.- Ejecuto el script del driver de NVidia, desde el directorio donde lo he bajado, con:
# chmod +x NVIDIA-Linux-x86_64-177.82-pkg2.run
# sh NVIDIA-Linux-x86_64-177.82-pkg2.run
c.- Voy aceptado las opciones y cuando acaba inicio las X con:
# /etc/init.d/gdm start
3.- Ya con los drivers de la tarjeta instalados.
a.- Activamos el renderizado:
# apt-get install libgl1-mesa-dri xlibmesa-gl mesa-utils nvidia-glx libglide3
DaTo: Si al reinicar aparece un problema reinstalen el driver de nvidia y listo.
b.- Compruebo que renderiza con:
$ glxinfo |grep render
Y debe decir YES, o sea que ya funciona.
c.- Como comprobación:
$ glxgears
y aparecen unos engranajes girando.
d.- Como comprobacion 2:
$ glxheads
Saldrá un triángulo girando y datos acerca de la tarjeta gráfica.
La aceleracion con NVIDIA se activa con estos comandos.
# apt-get install nvidia-xconfig
DaTo: las siguentes comandos modifican el archivo xorg.conf, hagan un respaldo de este con: # cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
# nvidia-xconfig
# nvidia-xconfig --composite
# nvidia-xconfig --render-accel
# nvidia-xconfig --allow-glx-with-composite
# nvidia-xconfig –add-argb-glx-visuals
Configuramos graficamente la tarjeta con: # nvidia-settings
Reiniciamos el sistema y deberia aparecer el logo de NVidia para que todo este OK.
Link interesante Mona lisa en 80 milisegundos