|
|
昨天我在nvnews上找了半天终于找到了解决办法。因为test3最新的内核是2.6.9rc3的,那么这个办法对用2.6.9rc3内核的朋友兴许也有用。
我在运行run文件,编译的时候,出现错误,告诉我
nvidia: Unknown symbol_VMALLOC_RESERVE
按照nvnews的办法,我解开run的安装包,
#./NVIDIA-Linux-x86-1.0-6111-pkg1.run -x
进入驱动的源代码目录,给nv.c文件打补丁,其实就是在开头加一句话
NVIDIA-Linux-x86-1.0-6111-pkg1/usr/src/nv/nv.c
#include "nv-misc.h"
#include "os-interface.h"
#include "nv-linux.h"
#include "nv_compiler.h"
#include "os-agp.h"
#ifdef MODULE_ALIAS_CHARDEV_MAJOR
MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER);
#endif
//就是加下面的一句
unsigned int __VMALLOC_RESERVE = 128 << 20;
然后运行包里面的安装程序,记得退出X,
#init 3
#cd NVIDIA-Linux-x86-1.0-6111-pkg1
#./nvidia-installer
这样就象正常的安装,完成它就可以了。
但是在test3中还有问题,也许你重新启动,系统不能自动进入init 5来运行。X会报错,说不能初始化nvidia的驱动,但是用modprobe nvidia却什么事都没有,之后也能正常进入X 。其实是udev的问题,udev在启动的时候没有生成驱动要求的设备,那么自己在启动脚本里加上就可以了,我是这么做的:
打开/etc/rc.sysinit
在udev start以后加上两行
mknod /dev/nvidia0 c 195 0
mknod /dev/nvidiactl c 195 255
最后的结果是这样的
# Fix console loglevel
if [ -n "$LOGLEVEL" ]; then
/bin/dmesg -n $LOGLEVEL
fi
if [ -f /etc/udev/udev.conf ];then
. /etc/udev/udev.conf
fi
[ -x /sbin/start_udev ] && /sbin/start_udev
mknod /dev/nvidia0 c 195 0
mknod /dev/nvidiactl c 195 255
# Initialize hardware
if [ -f /proc/sys/kernel/modprobe ]; then
if ! strstr cmdline nomodules && [ -f /proc/modules ] ; then
sysctl -w kernel.modprobe="/sbin/modprobe" >/dev/null 2>&1
sysctl -w kernel.hotplug="/sbin/hotplug" >/dev/null 2>&1
这样就万事OK了,我现在为止运行的很好,注意升级rpm以后看看系统有没有改动修改过的配置文件,如果改过了,那就要改回来,不然下次启动就又不行了。 |
|