Назад | Перейти на главную страницу

Не могу собрать RocketRaid rr268x на Ubuntu 13.04

Я пытаюсь создать модуль ядра для Ubuntu 13.04, но мне не повезло, у меня эта карта отлично работала с 12.10 и общим ядром 3.5.0-27, но с момента обновления до 13.04 ни одно из новых ядер не построит модуль.

# dkms build rr2680/1.9 -k 3.8.0-25-generic

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=3.8.0-25-generic -C product/rr2680/linux/ KERNELDIR=/lib/modules/3.8.0-25-generic/build....(bad exit status: 2)
ERROR (dkms apport): binary package for rr2680: 1.9 not found
Error! Bad return status for module build on kernel: 3.8.0-25-generic (x86_64)
Consult /var/lib/dkms/rr2680/1.9/build/make.log for more information.

Вот make.log:

DKMS make.log for rr2680-1.9 for kernel 3.8.0-25-generic (x86_64)
Fri Jun 14 22:09:56 CST 2013
grep: /lib/modules/3.8.0-25-generic/build/include/linux/version.h: No such file or directory
expr: syntax error
grep: /lib/modules/3.8.0-25-generic/build/include/linux/version.h: No such file or directory
expr: syntax error
make: Entering directory `/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux'
../../../inc/linux_32mpa/Makefile.def:87: *** Only kernel 2.4/2.6/3.x is supported but you use ..  Stop.
make: Leaving directory `/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux'

Как я построил модуль в 12.10: http://www.sudoseth.com/blog/2013/01/highpoint-raid-we-meet-again/

У кого-нибудь есть указатели?

Первый ответ немного помог, но не за горами, я поменял местами $(KERNELDIR)/include/linux/version.h для $(KERNELDIR)/include/generated/uapi/linux/version.h который затем вызвал эту ошибку:

DKMS make.log for rr2680-1.9 for kernel 3.8.0-26-generic (x86_64)
Mon Jul  8 14:55:11 CST 2013
make: Entering directory `/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux'
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-26-generic'
CC [M]  /var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/os_linux.o
CC [M]  /var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.o
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c: In function ‘scsicmd_buf_get’:
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:452:39: error: ‘KM_BIO_SRC_IRQ’ undeclared (first use in this function)
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:452:39: note: each undeclared identifier is reported only once for each function it appears in
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:452:2: error: too many arguments to function ‘kmap_atomic’
In file included from include/linux/pagemap.h:10:0,
from include/linux/blkdev.h:13,
from /var/lib/dkms/rr2680/1.9/build/osm/linux/osm_linux.h:61,
from /var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:6:
include/linux/highmem.h:66:21: note: declared here
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c: In function ‘scsicmd_buf_put’:
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:482:55: error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.c:482:2: error: ‘kunmap_atomic’ undeclared (first use in this function)
make[2]: *** [/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build/osm_linux.o] Error 1
make[1]: *** [_module_/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux/.build] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-26-generic'
make: *** [rr2680.ko] Error 2
make: Leaving directory `/var/lib/dkms/rr2680/1.9/build/product/rr2680/linux'

Ура!

Получил такую ​​же проблему с моим rr2320! Похоже на расположение version.h файл был изменен. Но изменив эту строку в Makefile на новое место (/lib/modules/3.8.0-25-generic/build/include/generated/uapi/linux/version.h) не помогает.

Нашел решение своей проблемы! Взгляните сюда: Обновлен патч Highpoint RocketRAID 2230.

Ответ можно найти здесь: http://ubuntuforums.org/showthread.php?t=2158769&p=12746043 Короткий ответ: вам нужно удалить второй параметр, переданный в kmap_atomic. Все это константа HPT_KMAP_TYPE. Функция вызывается в osm_linux.c и os_linux.c, а HPT_KMAP_TYPE определен в osm_linux.h, это также можно удалить.