Внимание! Мануал на данный момент не работает! А так все красиво начиналось...
Делаем пакет для Убунты (для Федоры и т.д., наверное, тоже сработает). Пытаемся его установить и получаем несколько ошибок.
./ati-driver-installer-9-3-x86.x86_64.run --buildpkg Ubuntu/9.04 dpkg -i fglrx-kernel-source_8.593-0ubuntu1_i386.deb
Adding Module to DKMS build system Doing initial module build Error! Build of fglrx.ko failed for: 2.6.35-22-generic (i686) Consult the make.log in the build directory /var/lib/dkms/fglrx/8.593/build/ for more information. Traceback (most recent call last): File "/usr/share/apport/package-hooks/dkms.py", line 47, inreport['SourcePackage'] = apport.packaging.get_source(package) File "/usr/lib/python2.6/dist-packages/apport/packaging_impl.py", line 106, in get_source if self._apt_pkg(package).installed: File "/usr/lib/python2.6/dist-packages/apport/packaging_impl.py", line 66, in _apt_pkg raise ValueError, 'package does not exist' ValueError: package does not exist Installing initial module Error! Could not locate fglrx.ko for module fglrx in the DKMS tree. You must run a dkms build for kernel 2.6.35-22-generic (i686) first. Done.
cd /usr/src/fglrx-8.593/ ./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /usr/src/fglrx-8.593/2.6.x/firegl_public.o
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/drmP.h:86,
from /usr/src/fglrx-8.593/2.6.x/drm_proc.h:41,
from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_os_linux.h:45: error: conflicting types for ‘irqreturn_t’
include/linux/irqreturn.h:16: note: previous declaration of ‘irqreturn_t’ was here
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘__ke__cmpxchg’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__ret’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__old’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__new’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1405: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1779: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1783: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_InstallInterruptHandler’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2661: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
include/linux/interrupt.h:135: note: expected ‘irq_handler_t’ but argument is of type ‘irqreturn_t (*)(int, void *)’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3223: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3224: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3225: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3227: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4202: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2cd /usr/src/fglrx-8.593/
cat > patch.for.new.kernel << EOF
--- fglrx-driver-10-2.orig/common/lib/modules/fglrx/build_mod/firegl_public.c 20:34:34.000000000 +0100
+++ fglrx-driver-10-2/common/lib/modules/fglrx/build_mod/firegl_public.c2 21:23:51.580872456 +0100
@@ -1470,7 +1470,16 @@
#ifndef __HAVE_ARCH_CMPXCHG
return __fgl_cmpxchg(ptr,old,new,size);
#else
- return __cmpxchg(ptr,old,new,size);
+ switch (size) {
+ case 1: { volatile u8 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+ case 2: { volatile u16 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+ case 4: { volatile u32 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+#ifdef __x86_64__
+ case 8: { volatile u64 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+#endif
+ default:
+ return old;
+ }
#endif
}
EOF
patch < patch.for.new.kernelpatching file firegl_public.c Hunk #1 succeeded at 1360 (offset -110 lines).
cd /usr/src/fglrx-8.593/ ./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /usr/src/fglrx-8.593/2.6.x/firegl_public.o
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/drmP.h:86,
from /usr/src/fglrx-8.593/2.6.x/drm_proc.h:41,
from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_os_linux.h:45: error: conflicting types for ‘irqreturn_t’
include/linux/irqreturn.h:16: note: previous declaration of ‘irqreturn_t’ was here
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1414: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1788: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1792: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_InstallInterruptHandler’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2670: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
include/linux/interrupt.h:135: note: expected ‘irq_handler_t’ but argument is of type ‘irqreturn_t (*)(int, void *)’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3232: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3233: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4211: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2cd /usr/src/fglrx-8.593/2.6.x/ cat > patch.for.types << EOF --- a/linux-core/drm_os_linux.h +++ b/linux-core/drm_os_linux.h @@ -51,7 +51,7 @@ #define DRM_IRQ_ARGS int irq, void *arg, struct pt_regs *regs /** backwards compatibility with old irq return values */ #ifndef IRQ_HANDLED -typedef void irqreturn_t; +#include <linux/irqreturn.h> #define IRQ_HANDLED /* nothing */ #define IRQ_NONE /* nothing */ #endif EOF patch < patch.for.types cat > patch.makefile << EOF --- Makefile 2010-11-01 03:02:13.142924000 +0300 +++ Makefile.new 2010-11-01 03:02:06.466923999 +0300 @@ -83,6 +83,7 @@ # default:: kmod_build kmod_build:: $(fglrx-libs) $(fglrx-cfiles) $(fglrx-hdrs) $(drm-hdrs) + patch < patch.for.types $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules %.c: EOF patch < patch.makefile
patching file drm_os_linux.h Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines).
patching file Makefile
cd /usr/src/fglrx-8.593/ ./make.sh
AMD kernel module generator version 2.1 doing Makefile based build for kernel 2.6.x and higher rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers patch < patch.for.types patching file drm_os_linux.h Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines). make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic' CC [M] /usr/src/fglrx-8.593/2.6.x/firegl_public.o /usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169: /usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined include/linux/pm.h:325: note: this is the location of the previous definition In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431: /usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’: /usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1414: error: ‘struct task_struct’ has no member named ‘euid’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1788: error: ‘struct task_struct’ has no member named ‘cap_effective’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1792: error: ‘struct task_struct’ has no member named ‘cap_effective’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PUB_InterruptHandlerWrap’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:2643: warning: ‘return’ with no value, in function returning non-void /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3232: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3233: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:4211: warning: ‘return’ with no value, in function returning non-void make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1 make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2 make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic' make: *** [kmod_build] Ошибка 2 build failed with return value 2
cd /usr/src/fglrx-8.593/ cat > patch.arch << EOF --- firegl_public.c 2010-11-01 02:36:50.462924001 +0300 +++ firegl_public.c.new 2010-11-01 03:08:57.486924002 +0300 @@ -38,10 +38,12 @@ #if !defined(CONFIG_X86_BIGSMP) #if !defined(CONFIG_X86_VISWS) #if !defined(CONFIG_X86_GENERICARCH) +#if !defined(CONFIG_X86_GENERIC) #error unknown or undefined architecture configured #endif #endif #endif +#endif #endif #endif #endif EOF patch < patch.arch
patching file firegl_public.c
cd /usr/src/fglrx-8.593/ ./make.sh
AMD kernel module generator version 2.1 doing Makefile based build for kernel 2.6.x and higher rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers patch < patch.for.types patching file drm_os_linux.h Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines). make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic' CC [M] /usr/src/fglrx-8.593/2.6.x/firegl_public.o In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:171: /usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined include/linux/pm.h:325: note: this is the location of the previous definition In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:433: /usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’: /usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1416: error: ‘struct task_struct’ has no member named ‘euid’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1790: error: ‘struct task_struct’ has no member named ‘cap_effective’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c:1794: error: ‘struct task_struct’ has no member named ‘cap_effective’ /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PUB_InterruptHandlerWrap’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:2645: warning: ‘return’ with no value, in function returning non-void /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3235: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c:3238: warning: return makes pointer from integer without a cast /usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’: /usr/src/fglrx-8.593/2.6.x/firegl_public.c:4213: warning: ‘return’ with no value, in function returning non-void make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1 make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2 make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic' make: *** [kmod_build] Ошибка 2 build failed with return value 2
cd /usr/src/ ln -s linux linux-2.6...
cd /usr/src/linux/include/linux ln -s ../generated/autoconf.h . ln -s ../generated/utsrelease.h .
cd /usr/src/fglrx-8.593/ ./make.sh
root@SF-HP-Compaq-6820s:/usr/src/fglrx-8.593# ls -l | grep fglrx.ko lrwxrwxrwx 1 root root 14 2010-10-31 00:04 fglrx.ko -> 2.6.x/fglrx.ko
apt-get -f install
dpkg -i *.pkg