Я использую виртуальную машину на базе Xen с CentOS 5, и мой хостинг-провайдер выталкивает версию ядра 2.6.37.6 с хост-машины (поэтому без pv-grub).
[root@dev ~]# uname -r
2.6.37.6
Я пытаюсь установить агент R1Soft, и мне нужно было собрать для него модуль hcpdriver. К сожалению yum install kernel-devel
или yum install kernel-xen-devel
не сработал, когда я попытался установить заголовки ядра, необходимые для сборки модуля (и я предполагаю, что это связано с тем фактом, что мой хостинг-провайдер использует собственное ядро).
Итак, я загрузил ядро с kernel.org, распаковал его в /usr/src/
и побежал:
zcat /proc/config.gz > .config
make oldconfig && make modules_prepare
Теперь, когда у меня были заголовки ядра, я построил модуль hcpdriver, но когда я попытался выполнить его modprobe / insmod, я получил следующую ошибку в dmesg
hcpdriver: no symbol version for module_layout
Я погуглил ошибку и нашел несколько подсказок о вермагии. Но мой недавно созданный модуль имеет ту же самую вермагию, что и предыдущий модуль, предоставленный моим хостинг-провайдером (который, по-видимому, страдает какой-то ошибкой, и служба поддержки R1Soft попросила меня скомпилировать более новую версию).
Вот старый -buggy- (предоставленный моим хостом):
[root@dev r1soft]# modinfo hcpdriver.o
filename: hcpdriver.o
version: 4.1.1 build 13785
license: Proprietary
description: Linux Hot Copy Driver
author: Michael Brumlow
depends:
vermagic: 2.6.37.6 SMP mod_unload modversions
и вот новый, который я построил на основе недавно скомпилированных заголовков ядра:
[root@dev r1soft]# modinfo hcpdriver-cki-2.6.37.6.ko
filename: hcpdriver-cki-2.6.37.6.ko
version: 4.2.1 build 16433
license: Proprietary
description: Linux Hot Copy Driver
author: Michael Brumlow
depends:
vermagic: 2.6.37.6 SMP mod_unload modversions
Как вы видете vermagic
абсолютно то же самое. Проблема в том, что первый модуль работает нормально, когда я его изменяю, а второй - нет.
У кого-нибудь когда-нибудь была подобная проблема? Это первый раз, когда я создал заголовки ядра самостоятельно, поэтому я не совсем уверен, правильный ли процесс, который я использовал, в данном случае. Что еще я могу попробовать?
Обновление 1
Я снова проделал процесс с нуля, повторно загрузил tar.gz с kernel.org, распаковал его в / usr / src / kernels, а затем запустил:
zcat /proc/config.gz > .config
make
make modules_install && make headers_install
все прошло без ошибок.
потом я побежал:
r1soft-setup --get-module --no-binary
который также завершился без ошибок, но теперь, когда я пытаюсь установить модуль, dmesg сообщает:
hcpdriver: disagrees about version of symbol __memcpy
hcpdriver: Unknown symbol __memcpy (err -22)
Заранее спасибо, Джордж
Нет, я никогда не видел проблемы. Но это звучит беспорядочно. Это может быть проблема поддержки хостинга. Если хост выдвигает определенную версию ядра и они управляют установкой R1Soft, не должен ли хост иметь доступный рабочий модуль hcp или иметь возможность проводить пользователей через шаги, необходимые для того, чтобы все заработало? Если что, вы можете попробовать hcp-setup
и загрузите соответствующую информацию на серверы сборки R1Soft. Мне никогда не приходилось собирать модуль локально, но обычно я использую ядра дистрибутива или слегка модифицированные ядра дистрибутива.