星期三, 二月 28, 2007

终于搞定nvidia geforce2ti 在ubuntu 上的opengl 支持。

网上盛转的贴子就是著名的envy 脚本,只是它针对的是7182版本,与现行的不符,在很多次失败后终于找到了原因,把脚本改动以下两处:
1. 第8行 VERA=1.0-7182 改为 VERA=1.0-7184
2. 第11行 改为 MD5OLD=68cf7f155786daf6946b9daeb64c7a35

这样的话应该可以正常使用这个脚本了。
完成后如下:
******************************************


#!/bin/bash
# "Envy"
# Written by Alberto Milone (aka "tseliot")
# Licence GPL
# Version 0.39
# For Ubuntu Dapper Drake 32 bit ONLY!!!
ARCA=x86
VERA=1.0-7184
PACA=pkg1
DRIVER=NVIDIA-Linux-$ARCA-$VERA-$PACA.run
MD5OLD=68cf7f155786daf6946b9daeb64c7a35
NVIDIAFTP=Linux-$ARCA/$VERA



function installer {
echo -e "Do you want to install or uninstall the Nvidia driver $VERA ?\n(Type "i" to install or "u" to uninstall) (or press CTRL+C to exit)"
read inst
if [ "$inst" = "i" ]
then sudo apt-get --assume-yes --force-yes --purge remove linux-restricted-modules-`uname -r` linux-restricted-modules-common nvidia-glx nvidia-settings nvidia-kernel-common;
sudo rm /etc/init.d/nvidia-* >&/dev/null;

sudo apt-get --assume-yes --force-yes install linux-headers-`uname -r` build-essential gcc gcc-3.4 xserver-xorg-dev;

#AVOID CONFLICTS
sudo rm /usr/lib/xorg/modules/extensions/libglx.so.* >&/dev/null;
sudo rm /usr/lib/libGLcore.so.* >&/dev/null;

#GO TO YOUR HOME FOLDER
cd $HOME

#DOWNLOAD AND/OR CHECK THE NVIDIA INSTALLER
if [ ! -f $DRIVER ]
then wget -c ftp://download.nvidia.com/...
if [ ! -f $DRIVER ]
then echo "ERROR: I can't find the Nvidia installer. Make sure it's in the same folder of this script"; exit
fi

MD5PRINT1=`md5sum $DRIVER | cut -d " " -f1`
if [ "$MD5PRINT1" = "$MD5OLD" ]
then echo "md5sum is ok";
else echo "ERROR: md5sum is not correct!"; exit;
fi
else
MD5PRINT2=`md5sum $DRIVER | cut -d " " -f1`
if [ "$MD5PRINT2" = "$MD5OLD" ]
then echo "md5sum is ok"
else echo "ERROR: md5sum is not correct!"; exit;
fi
fi

#FIND AND DELETE THE EXTRACTED FOLDER
if [ -f NVIDIA-Linux-$ARCA-$VERA-$PACA ]
then sudo rm -R NVIDIA-Linux-$ARCA-$VERA-$PACA >&/dev/null;
fi

#EXTRACT THE INSTALLER
sh $DRIVER --extract-only;

cd NVIDIA-Linux-$ARCA-$VERA-$PACA;

#BACKUP THE XORG.CONF
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf_backup_`date +%Y%m%d%H%M`;

#CHECK AND/OR SET GCC
if [ `uname -r | grep "2.6.12"` -o `uname -r | grep "2.6.11"` -o `uname -r | grep "2.6.10"` ]
then sudo ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc
fi

#SUPPORT FOR KERNEL 2.6.14 OR HIGHER
if ls /usr/src/ | grep "kernel-headers-`uname -r`"
then
if [ `uname -r | grep "2.6.14"` -o `uname -r | grep "2.6.15"` -o `uname -r | grep "2.6.16"` -o `uname -r | grep "2.6.17"` ]
then
cd /usr/src/kernel-headers-`uname -r`/arch/i386/
sudo rm Makefile.cpu >&/dev/null;
sudo wget www.albertomilone.eu/ubunt...
cd /usr/src/kernel-headers-`uname -r`/
sudo make prepare
sudo make prepare scripts
cd $HOME/NVIDIA-Linux-$ARCA-$VERA-$PACA;
fi
fi

#UBUNTU AMD64 CHECK
if [ ! -f /usr/lib64/xorg/ ]
then
#SEE IF THE KERNEL IS RECOMPILED OR NOT (32BIT)
if ls /usr/src/ | grep "kernel-headers-`uname -r`"
then sudo ./nvidia-installer -n -s --x-prefix=/usr/lib/xorg/modules --kernel-source-path=/usr/src/kernel-headers-`uname -r`
else sudo ./nvidia-installer -n -s --x-prefix=/usr/lib/xorg/modules --kernel-source-path=/usr/src/linux-headers-`uname -r`
fi
else
#SEE IF THE KERNEL IS RECOMPILED OR NOT (64BIT)
if ls /usr/src/ | grep "kernel-headers-`uname -r`"
then sudo ./nvidia-installer -n -s --x-prefix=/usr/lib64/xorg/modules --kernel-source-path=/usr/src/kernel-headers-`uname -r`
else sudo ./nvidia-installer -n -s --x-prefix=/usr/lib64/xorg/modules --kernel-source-path=/usr/src/linux-headers-`uname -r`
fi
fi

#RESTORE GCC (SYMLINK)
if [ `uname -r | grep 2.6.12` -o `uname -r | grep 2.6.11` -o `uname -r | grep 2.6.10` ]
then sudo ln -sf /usr/bin/gcc-4.0 /usr/bin/gcc
fi

#Return to previous directory
cd ..

choice="nada";
while [ "$choice" = "nada" ]; do
echo "Do you want your xorg.conf to be automatically configured? (y/n) \ "Yes" is the default answer";
read choice;
if [ "$choice" = "y" ]
then sudo /usr/bin/nvidia-xconfig
elif [ "$choice" = "" ]
then sudo /usr/bin/nvidia-xconfig
elif [ "$choice" = "n" ]
then echo "Remember to set the Driver to nvidia in your xorg.conf"
elif [ "$choice" = "no" ]
then echo "Remember to set the Driver to nvidia in your xorg.conf"
else choice="nada"
fi;
done;

sudo modprobe nvidia;

echo "Do you want to Start the Xserver now? (y/n) \ "Yes" is the default answer";
read server;
if [ "$server" = "y" ]
then
sudo /etc/init.d/gdm restart >&/dev/null; sudo /etc/init.d/kdm restart >&/dev/null;

elif [ "$server" = "" ]
then
sudo /etc/init.d/gdm restart >&/dev/null; sudo /etc/init.d/kdm restart >&/dev/null;

elif [ "$server" = "n" ]
then echo "Remember to start the xserver manually"
elif [ "$server" = "no" ]
then echo "Remember to start the xserver manually"
fi;

elif [ "$inst" = "u" ]
then sudo apt-get --assume-yes --force-yes --purge remove linux-restricted-modules-`uname -r` linux-restricted-modules-common nvidia-glx nvidia-settings nvidia-kernel-common;

#GO TO YOUR HOME FOLDER
cd $HOME

if [ ! -f NVIDIA-Linux-$ARCA-$VERA-$PACA ]
then
if [ ! -f $DRIVER ]
then wget ftp://download.nvidia.com/...
if [ ! -f $DRIVER ]
then echo "ERROR: I can't find the Nvidia installer. Make sure it's in the same folder of this script"; exit
fi
MD5PRINT1=`md5sum $DRIVER | cut -d " " -f1`
if [ "$MD5PRINT1" = "$MD5OLD" ]
then echo "md5sum is ok";
else echo "ERROR: md5sum is not correct!"; exit;
fi

else MD5PRINT2=`md5sum $DRIVER | cut -d " " -f1`
if [ "$MD5PRINT2" = "$MD5OLD" ]
then echo "md5sum is ok";
else echo "ERROR: md5sum is not correct!"; exit;
fi

fi

sh $DRIVER --extract-only;

fi

cd NVIDIA-Linux-$ARCA-$VERA-$PACA;
sudo ./nvidia-installer --uninstall;
sudo rm /etc/init.d/nvidia-* >&/dev/null;

#UBUNTU AMD64 CHECK
if [ ! -f /usr/lib64/xorg/ ]
then
sudo rm /usr/lib/xorg/lib/libX* >&/dev/null;
sudo rm /usr/lib/xorg/modules/libX* >&/dev/null;

sudo rm /usr/lib/xorg/lib/modules/drivers/nvidia_drv.* >&/dev/null;
sudo rm /usr/lib/xorg/modules/drivers/nvidia_drv.* >&/dev/null;

#AVOID CONFLICTS
sudo rm /usr/lib/xorg/modules/extensions/libglx.so.* >&/dev/null;
sudo rm /usr/lib/libGLcore.so.* >/dev/null;

sudo rm /usr/lib/xorg/lib/modules/extensions/libglx.so* >&/dev/null;

else

sudo rm /usr/lib64/xorg/lib/libX* >&/dev/null;
sudo rm /usr/lib64/xorg/modules/libX* >&/dev/null;

sudo rm /usr/lib64/xorg/lib/modules/drivers/nvidia_drv.* >&/dev/null;
sudo rm /usr/lib64/xorg/modules/drivers/nvidia_drv.* >&/dev/null;

#AVOID CONFLICTS
sudo rm /usr/lib64/xorg/modules/extensions/libglx.so.* >&/dev/null;
sudo rm /usr/lib64/libGLcore.so.* >&/dev/null;

sudo rm /usr/lib64/xorg/lib/modules/extensions/libglx.so* >&/dev/null;
fi

else echo 'You should type "i" or "u"! (or press CTRL+C to exit)'; installer;
fi
}

#set -x
#set -v

sudo /etc/init.d/gdm stop >&/dev/null; sudo /etc/init.d/kdm stop >&/dev/null;
installer
****************************************************************************

使用方法:

复制上面内容为文件 nvidia,ctrl+alt+backspace 退出 xserver。登录。进入 nvidia 所在目录。

chmod a+x nvidia
./nvidia


再运行 glxgears . 看到两个齿轮的画面就是成功了。

没有评论: