Компиляция драйвера из исходного кода CentOS 6.4

Cent OS, Scientific Linux

Модератор: Модераторы разделов

Аватара пользователя
Majestyk
Сообщения: 6
ОС: CentOS

Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Majestyk »

Здравствуйте!
Есть встроенный RAID контроллер Adaptec 9410w на мат.плате X7DB3 и установленный CentOS 6.4.
Так вот проблема в определении этого рэйда (зеркало) в ОС (определяется как два отдельных винта, а с них создаётся виртуальный раздел из этих двух).
Прошерствив кучу сайтов нашёл, решение: компиляция драйвера из исходного кода и потом необходимо подсунуть его в ядро.
В архиве с этим драйвером есть мануал в котором расписаны шаги, но полностью разобраться не удалось из-за возникших ошибок...
Даю команду:

Код: Выделить всё

make -C /usr/src/linux M=`pwd`

и вываливает кучу ошибок...
Spoiler

Код: Выделить всё

make: Entering directory `/usr/src/kernels/2.6.32-358.23.2.el6.x86_64'
  CC [M]  /tmp/adp94xx/adp94xx_osm.o
/tmp/adp94xx/adp94xx_osm.c:46:5: warning: "KDB_ENABLE" is not defined
In file included from /tmp/adp94xx/adp94xx_osm.c:49:
/tmp/adp94xx/adp94xx_osm.h:116:1: warning: "__packed" redefined
In file included from include/linux/compiler.h:43,
                 from include/linux/stddef.h:4,
                 from include/linux/posix_types.h:4,
                 from include/linux/types.h:14,
                 from include/linux/byteorder/little_endian.h:11,
                 from /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/arch/x86/include/asm/byteorder.h:4,
                 from /tmp/adp94xx/adp94xx_osm.h:48,
                 from /tmp/adp94xx/adp94xx_osm.c:49:
include/linux/compiler-gcc.h:53:1: warning: this is the location of the previous definition
In file included from /tmp/adp94xx/adp94xx_osm.c:49:
/tmp/adp94xx/adp94xx_osm.h:737: error: field ‘adp_hd_driveid’ has incomplete type
/tmp/adp94xx/adp94xx_osm.h:758: error: field ‘adp_hd_driveid’ has incomplete type
In file included from /tmp/adp94xx/adp94xx_osm.c:53:
/tmp/adp94xx/adp94xx_inline.h:882:43: error: macro "INIT_WORK" passed 3 arguments, but takes just 2
In file included from /tmp/adp94xx/adp94xx_osm.c:53:
/tmp/adp94xx/adp94xx_inline.h: In function ‘asd_setup_dev_dpc_task’:
/tmp/adp94xx/adp94xx_inline.h:882: error: ‘INIT_WORK’ undeclared (first use in this function)
/tmp/adp94xx/adp94xx_inline.h:882: error: (Each undeclared identifier is reported only once
/tmp/adp94xx/adp94xx_inline.h:882: error: for each function it appears in.)
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_unmap_scb’:
/tmp/adp94xx/adp94xx_osm.c:413: error: ‘Scsi_Cmnd’ has no member named ‘use_sg’
/tmp/adp94xx/adp94xx_osm.c:416: error: ‘Scsi_Cmnd’ has no member named ‘request_buffer’
/tmp/adp94xx/adp94xx_osm.c:417: error: ‘Scsi_Cmnd’ has no member named ‘use_sg’
/tmp/adp94xx/adp94xx_osm.c:418: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c:419: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c:712:5: warning: "KDB_ENABLE" is not defined
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_detect’:
/tmp/adp94xx/adp94xx_osm.c:1007: error: implicit declaration of function ‘pci_module_init’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_register_host’:
/tmp/adp94xx/adp94xx_osm.c:1124: error: implicit declaration of function ‘scsi_assign_lock’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_flush_device_queue’:
/tmp/adp94xx/adp94xx_osm.c:1423: error: ‘struct scsi_cmnd’ has no member named ‘sc_magic’
/tmp/adp94xx/adp94xx_osm.c:1512: error: ‘struct scsi_cmnd’ has no member named ‘sc_magic’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_scb_done’:
/tmp/adp94xx/adp94xx_osm.c:1673: error: ‘Scsi_Cmnd’ has no member named ‘resid’
/tmp/adp94xx/adp94xx_osm.c:1699: error: ‘Scsi_Cmnd’ has no member named ‘resid’
/tmp/adp94xx/adp94xx_osm.c:1725: error: ‘Scsi_Cmnd’ has no member named ‘resid’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_setup_data’:
/tmp/adp94xx/adp94xx_osm.c:2118: error: ‘Scsi_Cmnd’ has no member named ‘use_sg’
/tmp/adp94xx/adp94xx_osm.c:2122: error: ‘Scsi_Cmnd’ has no member named ‘request_buffer’
/tmp/adp94xx/adp94xx_osm.c:2124: error: ‘Scsi_Cmnd’ has no member named ‘use_sg’
/tmp/adp94xx/adp94xx_osm.c:2144: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c:2149: error: ‘Scsi_Cmnd’ has no member named ‘request_buffer’
/tmp/adp94xx/adp94xx_osm.c:2149: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c:2153: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c:2155: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_build_sas_scb’:
/tmp/adp94xx/adp94xx_osm.c:2236: error: ‘Scsi_Cmnd’ has no member named ‘request_bufflen’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_discovery_thread’:
/tmp/adp94xx/adp94xx_osm.c:2314: error: ‘PF_FREEZE’ undeclared (first use in this function)
/tmp/adp94xx/adp94xx_osm.c:2325: warning: ignoring return value of ‘down_interruptible’, declared with attribute warn_unused_result
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_kill_discovery_thread’:
/tmp/adp94xx/adp94xx_osm.c:2382: warning: ignoring return value of ‘down_interruptible’, declared with attribute warn_unused_result
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_init_hw’:
/tmp/adp94xx/adp94xx_osm.c:4545: error: ‘SA_SHIRQ’ undeclared (first use in this function)
/tmp/adp94xx/adp94xx_osm.c:4546: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
include/linux/interrupt.h:123: note: expected ‘irq_handler_t’ but argument is of type ‘enum irqreturn_t (*)(int,  void *, struct pt_regs *)’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_ehandler_thread’:
/tmp/adp94xx/adp94xx_osm.c:5363: error: ‘PF_FREEZE’ undeclared (first use in this function)
/tmp/adp94xx/adp94xx_osm.c:5373: warning: ignoring return value of ‘down_interruptible’, declared with attribute warn_unused_result
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_abort’:
/tmp/adp94xx/adp94xx_osm.c:5446: warning: unused variable ‘flags’
/tmp/adp94xx/adp94xx_osm.c: In function ‘asd_dump_target_info’:
/tmp/adp94xx/adp94xx_osm.c:5934: error: dereferencing pointer to incomplete type
/tmp/adp94xx/adp94xx_osm.c:5935: error: dereferencing pointer to incomplete type
/tmp/adp94xx/adp94xx_osm.c:5936: error: dereferencing pointer to incomplete type
make[1]: *** [/tmp/adp94xx/adp94xx_osm.o] Error 1
make: *** [_module_/tmp/adp94xx] Error 2
make: Leaving directory `/usr/src/kernels/2.6.32-358.23.2.el6.x86_64'

Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21413
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Bizdelnick »

На кой чёрт Вам эта бяка? Используйте программный RAID, от фейк-рейдов типа этого одни проблемы.
Мануал, который прилагается к любому стороннему драйверу, нельзя использовать в 99% случаев.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Majestyk
Сообщения: 6
ОС: CentOS

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Majestyk »

Bizdelnick писал(а):
16.12.2013 17:59
На кой чёрт Вам эта бяка?

Смысл в том, чтобы пересобрать ядро уже с этим драйвером и ОС адекватно определяла контроллер и нормально отображался аппаратный raid. (raid изначально создавался в настройках контроллера, а не в ОС).
Да и кстати исходник драйвера с сайта adaptec
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21413
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Bizdelnick »

Majestyk писал(а):
16.12.2013 18:08
нормально отображался аппаратный raid

Чтобы он отображался, нужно, чтобы он был. А у Вас - повторяю - фейк-рейд вместо нормального аппаратного. Профита с того, что он станет отображаться как некое одно устройство при посредстве ядерного модуля, - ноль. Соберите программный RAID mdadm'ом, избавитесь от кучи геморроя (как сейчас, так и потом, когда понадобится эти диски подключить к другой матери).

Majestyk писал(а):
16.12.2013 18:08
Да и кстати исходник драйвера с сайта adaptec

Под сторонним драйвером я подразумевал любой драйвер, не входящий в состав дистрибутива. Куда ведёт ссылка - я прекрасно вижу.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Majestyk
Сообщения: 6
ОС: CentOS

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Majestyk »

Bizdelnick писал(а):
16.12.2013 18:24
Профита с того, что он станет отображаться как некое одно устройство при посредстве ядерного модуля, - ноль.

под старой версией asp linux - 2.6.18-164.15.1.el5.asp121 такая штука прокатывала.. (не я делал, а сторонняя контора - компилировали драйвер, вставляли модуль в ядро и пересобирали его). В общем начальство сказало переходить на новый centos. а с таким контроллером у меня на данный момент 2 сервера и особого выбора нет..
Нужна помощь хотя бы с разборкой ошибок при компиляции..
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21413
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Bizdelnick »

Majestyk писал(а):
17.12.2013 10:00
под старой версией asp linux - 2.6.18-164.15.1.el5.asp121 такая штука прокатывала

Охотно верю. Но зачем?

Majestyk писал(а):
17.12.2013 10:00
с таким контроллером у меня на данный момент 2 сервера и особого выбора нет.

Выбор есть: возиться с модулем или использовать mdadm. Поверьте, второе не менее эффективно и очень помогает при возникновении нештатных ситуаций типа сгоревшего контроллера (или, как у Вас, переставшего собираться при переходе на новую систему драйвера).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Majestyk
Сообщения: 6
ОС: CentOS

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Majestyk »

Bizdelnick писал(а):
17.12.2013 10:32
Охотно верю. Но зачем?

Та контора нам эти серваки и впихнула, поэтому "зачем они это делали" писать не буду :cool:

Bizdelnick писал(а):
17.12.2013 10:32
Выбор есть: возиться с модулем или использовать mdadm. Поверьте, второе не менее эффективно и очень помогает при возникновении нештатных ситуаций типа сгоревшего контроллера (или, как у Вас, переставшего собираться при переходе на новую систему драйвера).

есть возможность того, что в случае обновления ядра этот софтовый рэйд упадёт?
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Компиляция драйвера из исходного кода CentOS 6.4

Сообщение Vascom »

Нет, софтовый рейд не упадёт при обновлении ядра.
А вот если ты соберёшь драйвер сам для фейк-рейда, то 100% упадёт после обновления ядра.
Спасибо сказали: