lunes, 21 de julio de 2008

1.- Driver y Aceleración Nvidia


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 para la Web de http://www.forosuse.org
#
# 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

1.b.- Descargamos los drivers de la tarjeta NVIDIA desde aca y eligen segun la informacion que les alla entregado el SCRIPT.

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

No hay comentarios:

Publicar un comentario

Postea con moderación, sin insultar ni menos usar palabras ofencivas.

Me tomo el derecho de borrar el post, si su contenido no cumple lo anterior.

Gracias por postear.