Chinaunix首页 | 论坛 | 博客
  • 博客访问: 276563
  • 博文数量: 69
  • 博客积分: 2408
  • 博客等级: 大尉
  • 技术积分: 745
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-09 16:37
文章分类

全部博文(69)

文章存档

2011年(16)

2010年(42)

2008年(9)

2005年(2)

我的朋友

分类: LINUX

2010-09-25 17:52:23

如果是32位系统的话:
[root@fedora ~]$ yum update kernel
[root@fedora ~]$ yum install kernel-devel
[root@fedora ~]$ bash ./ati-driver-installer-9-8-x86.x86_64.run

安装结果:/usr/share/ati/fglrx-install.log

参考:


如果是64位系统的话:
花了好长时间在网上找,但是还是没有找到,最后自己解决了,实在是简单,呵呵。。
首先,按照32位系统的方法做,但是会出现错误:

make -C /lib/modules/2.6.34.7-56.fc13.x86_64/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Entering directory `/usr/src/kernels/2.6.34.7-56.fc13.x86_64'
  CC [M] /lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
  CC [M] /lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o
  CC [M] /lib/modules/fglrx/build_mod/2.6.x/kcl_agp.o
  CC [M] /lib/modules/fglrx/build_mod/2.6.x/kcl_debug.o
  CC [M] /lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.o
/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.c: 在函数‘KCL_IOCTL_AllocUserSpace32’中:
/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.c:196: 错误:隐式声明函数‘compat_alloc_user_space’
/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.c:196: 警告:返回时将整数赋给指针,未作类型转换
make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.o] 错误 1
make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] 错误 2
make[1]: Leaving directory `/usr/src/kernels/2.6.34.7-56.fc13.x86_64'

make: *** [kmod_build] 错误 2
build failed with return value 2
[Error] Kernel Module : Failed to compile kernel module - please consult readme.
[Reboot] Kernel Module : dracut


解决方法:
编辑/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.c ,在里面加上compat_alloc_user_space函数的定义,其内容是:/usr/src/kernels/2.6.34.7-56.fc13.x86_64/arch/x86/include/asm/compat.h中的arch_compat_alloc_user_space函数的内容。(就是把arch_compat_alloc_user_space函数拷贝过来,把名字改成compat_alloc_user_space就行了),例如:
/lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.c:

     ....

     46 #include "kcl_config.h"
     47 #include "kcl_osconfig.h"
     48 #include "kcl_type.h"
     49 #include "kcl_ioctl.h"
     50 #include "kcl_io.h"
     51
     52 static inline void __user *compat_alloc_user_space(long len)
     53 {
     54 struct pt_regs *regs = task_pt_regs(current);
     55 return (void __user *)regs->sp - len;
     56 }
     57
     58 #ifdef __x86_64__
     59
     60

     ....


其实,简单一点,就把这个文件里的函数名子前面加上“arch_”就行了。

-------------------------------------------------------------------------------
如果更新了内核版本的话,要重新编译模块:
cd /lib/modules/fglrx/build_mod
./make.sh
cd ../
./make_install.sh
阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~