LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1037|回复: 6

HOW2 SUSE10.0 自动安装nvidia驱动脚本

[复制链接]
发表于 2005-10-16 14:18:16 | 显示全部楼层 |阅读模式
就是suse 的fetchnvidia.sh脚本(稍加修改),用YOU可以下载,但奇怪的是总是有格式错误。
稍微修改一下就可以用了。我自己还没有看出原来的脚本到底有什么错误,实在是奇怪。

  1. #!/bin/bash
  2. EULA="http://www.nvidia.com/object/nv_swlicense.html"
  3. ARCH="x86"
  4. VERSION="1.0-7676"
  5. PKG="pkg1"

  6. if [ "`uname -m`" == "x86_64" ]; then
  7.   ARCH="x86_64"
  8.   VERSION=1.0-7676
  9.   PKG="pkg2"
  10. fi

  11. FILE="NVIDIA-Linux-${ARCH}-${VERSION}-${PKG}.run"
  12. DRIVER="http://download.nvidia.com/XFree86/Linux-${ARCH}/${VERSION}/${FILE}"
  13. CURL_OPTIONS="-s"

  14. if [ "$UID" != 0 ];then
  15.         echo "you must be root to do this."
  16.         exit 1
  17. fi

  18. /sbin/lspci -n|grep -q "0300:.*10de:"
  19. if [ $? -ne 0 ]; then
  20.         echo "No nvidia graphics board found."
  21.           exit 0
  22. else
  23.         device_id=$(/sbin/lspci -n|grep "0300:.*10de:"|cut -d ":" -f 4|awk '{print $1}')
  24.         case $device_id in
  25.         0020|0028|0029|002C|002D|00A0|0100|0101|0103|0150|0151|0152|0153)
  26.               echo -n "Legacy nVidia chipsets are no longer supported since "
  27.               echo    "driver version 1.0-7664"
  28.               exit 0
  29.               ;;
  30.             *)
  31.         :
  32.               ;;
  33.           esac
  34. fi
  35. # --dir "absolute_path_to_downloaded_driver"
  36. if [ "$1" = "--dir" ]; then
  37.   DIR="$2"
  38.   if [ -z "$DIR" ]; then
  39.     echo "--dir requires an argument."
  40.     exit 1
  41.   fi
  42. fi

  43. if [ -z $http_proxy ]; then
  44.   echo
  45.   echo "note: No proxy is used. Please set the environment variable "http_proxy""
  46.   echo "note: to your favorite proxy, if you want to use a proxy for the download."
  47.   echo "note:"
  48.   echo "note:   bash: export http_proxy="http://proxy.provider.de:3128/""
  49.   echo "note:   tcsh: setenv http_proxy "http://proxy.provider.de:3128/""
  50.   echo
  51. fi

  52. /usr/X11R6/bin/xsload -vendor | grep -q "nvidia:NVIDIA Corporation"
  53. if [ $? -eq 0 ]; then
  54.   echo "NVIDIA driver already installed!"
  55.   exit 0
  56. fi

  57. # don't copy EULA if the driver is already downloaded
  58. if [ -z "$DIR" -a ! -r /usr/share/doc/nvidia/EULA.html ]; then
  59.   echo "EULA:"
  60.   mkdir -p /usr/share/doc/nvidia
  61.   echo    "  info: "/usr/share/doc/nvidia/EULA.html" not found."
  62.   echo -n "  Fetching   ... "
  63.   curl $CURL_OPTIONS -o /usr/share/doc/nvidia/EULA.html $EULA
  64.   echo "done"
  65. fi

  66. tmpname=`basename $0`
  67. tmpdir=`mktemp -d /tmp/$tmpname.XXXXXX`
  68. if [ $? -ne 0 ]; then
  69.   echo "$0: Can't create temp dir, exiting..."
  70.   exit 1
  71. fi

  72. pushd $tmpdir &> /dev/null

  73. for i in onetime; do
  74.       if [ ! -d /usr/share/doc/nvidia ];then
  75.       mkdir  /usr/share/doc/nvidia
  76.       fi
  77.         file=`echo $DRIVER|awk -F "/" '{print $NF}'`
  78.           echo "$file:"
  79.           if [ -r /usr/share/doc/nvidia/$file ];then
  80.                     echo -n "  Checking ... "
  81.                     test -s /usr/share/doc/nvidia/$file || rm -f /usr/share/doc/nvidia/$file
  82.                     sh /usr/share/doc/nvidia/$file --check &> /dev/null
  83.                     if [ $? -ne 0 ]; then
  84.                               echo "failed ... need to refetch"
  85.                               rm -f /usr/share/doc/nvidia/$file
  86.                     fi
  87.           fi
  88.           if [ ! -r /usr/share/doc/nvidia/$file ]; then
  89.                     echo -n "  Fetching ... "
  90.                     if [ -n "$DIR" ]; then
  91.                               cp "$DIR/$FILE" /usr/share/doc/nvidia/$file
  92.                                       if [ $? -ne 0 ]; then
  93.                                         echo "File not found: $DIR/$FILE."
  94.                                         exit 1
  95.                                       fi
  96.                     else
  97.                               curl $CURL_OPTIONS -o /usr/share/doc/nvidia/$file $DRIVER
  98.                     fi
  99.                     if [ $? -ne 0 ]; then
  100.                      echo "failed ... aborted!"
  101.                       continue
  102.                     fi
  103.                     chmod 755 /usr/share/doc/nvidia/$file
  104.                     echo "done"
  105.           fi

  106.           echo -n "  Installing ... "
  107.           sh /usr/share/doc/nvidia/$file --extract-only &> /dev/null
  108.           cd NVIDIA-Linux-*
  109.   # let the installer think that the kernel module is loaded
  110.   # successfully; prevents some machines from crashing
  111.           ln -snf /bin/true insmod
  112.           ln -snf /bin/true rmmod
  113.   # let the installer think that X11 is not running as it will fail
  114.   # otherwise
  115.           if [ -f /tmp/.X0-lock ]; then
  116.                     tmpfile=`mktemp /tmp/.X0-lock.XXXXXXXXXX`
  117.                     mv /tmp/.X0-lock $tmpfile
  118.           fi
  119.   # Workaround for NVIDIA installer bug (#72299)
  120.           modprobe agpgart
  121.           PATH=`pwd`:$PATH ./nvidia-installer -s
  122.           if [ $? -ne 0 ]; then
  123.                     echo "failed"
  124.                     continue
  125.           fi
  126.   # rescan 3D configuration for SaX2
  127.           /usr/sbin/sysp -s 3d > /dev/null
  128.   # install binary-only part of kernel module for kernel updates later
  129.           cp usr/src/nv/nv-kernel.o /lib/modules/scripts/nvidia/nv-kernel.o-$VERSION
  130.           echo "done"
  131.           echo
  132.           /usr/bin/switch2nvidia
  133.           echo
  134. done

  135. # try to restore X11 socket savely
  136. mktemp /tmp/.X0-lock &> /dev/null
  137. if [ $? -eq 0 -a "$tmpfile" != "" ]; then
  138.   cp $tmpfile /tmp/.X0-lock
  139.   chmod 444 /tmp/.X0-lock
  140. fi
  141. test -f "$tmpfile" && rm $tmpfile
  142. popd &> /dev/null
  143. rm -rf $tmpdir
复制代码


注意事项:
1 这个脚本可以自动下载驱动,如果你需要用代理。请先
export http_proxy=http://名称 : 端口

2 可以使用本地已经下载好的驱动
只要加上参数 --dir 路径
比如你放到了 /home/zhangsan/download
就是 --dir /home/zhangsan/download
后面不要加文件名,也不要有"/" !
 楼主| 发表于 2005-10-16 14:27:45 | 显示全部楼层
还有一个自动安装字体脚本。日后慢慢研究。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-17 10:17:29 | 显示全部楼层
顶一下。
回复 支持 反对

使用道具 举报

发表于 2005-10-17 10:21:24 | 显示全部楼层
我直接从nvidia官方网站下载7676驱动程序,sh *.sh安装, 用 sax2测试,已经通过,玩三D游戏很爽!!!!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-18 16:21:46 | 显示全部楼层
Post by cnsdxl
我直接从nvidia官方网站下载7676驱动程序,sh *.sh安装, 用 sax2测试,已经通过,玩三D游戏很爽!!!!!!!!!!

你这种办法也是可以的。
但是有没有人用上面的脚本啊?我就是用的这个脚本安装的。
这应该是最方便的办法了。在Kosole 里面运行即可,不需要到字符界面去。
回复 支持 反对

使用道具 举报

发表于 2005-10-19 11:38:58 | 显示全部楼层
把NV驱动下载后在安装脚本里面改一下路径,而且不用安装内核源码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-19 12:33:13 | 显示全部楼层
Post by mking007
把NV驱动下载后在安装脚本里面改一下路径,而且不用安装内核源码。

路径都不要改,看顶楼的注意事项。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表