URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97312
[ Назад ]

Исходное сообщение
"Oracle Linux 6. Модуль ядра собирается под более старую версию."

Отправлено Кочегар , 07-Ноя-18 05:21 
Здравствуйте!

Собираю модуль для MOXA CP-168U V2.
Если кратко, версия ядра 2.6.39-400.298.3.el6uek.x86_64, а модуль собирается под 2.6.32-696.23.1.el6.x86_64. Почему и как это исправить?

# uname -srv
Linux 2.6.39-400.298.3.el6uek.x86_64 #1 SMP Mon Feb 26 09:51:27 PST 2018

# lspci | grep -i Moxa
0a:01.0 Serial controller: Moxa Technologies Co Ltd CP-168U V2 Smart Serial Board (8-port RS-232)

make и make install проходит без ошибок.
Пытаюсь загрузить модуль:
# modprobe mxser
FATAL: Error inserting mxser (/lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko): Invalid module format

# modprobe -f --force-modversion -v mxser
insmod /lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko
FATAL: Error inserting mxser (/lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko): Unknown symbol in module, or unknown parameter (see dmesg)

# dmesg | tail -n 15
mxser: disagrees about version of symbol module_layout
mxser: module_layout: kernel tainted.
Disabling lock debugging due to kernel taint
mxser: version magic '2.6.32-696.23.1.el6.x86_64 SMP mod_unload modversions ' should be '2.6.39-400.298.3.el6uek.x86_64 SMP mod_unload modversions '
mxser: Unknown symbol copy_from_user (err 0)
mxser: Unknown symbol __x86_indirect_thunk_rax (err 0)
mxser: Unknown symbol _spin_unlock_irqrestore (err 0)
mxser: Unknown symbol per_cpu__kernel_stack (err 0)
mxser: Unknown symbol copy_to_user (err 0)
mxser: Unknown symbol per_cpu__cpu_number (err 0)
mxser: Unknown symbol param_array_set (err 0)
mxser: Unknown symbol _spin_lock_irqsave (err 0)
mxser: Unknown symbol param_array_get (err 0)
mxser: Unknown symbol _spin_lock (err 0)
mxser: Unknown symbol per_cpu__current_task (err 0)

# modinfo /lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko
filename:       /lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko
license:        GPL
description:    MOXA Smartio/Industio Family Multiport Board Device Driver
author:         Eric Lo
retpoline:      Y
srcversion:     3CE3F561C181235A1B926B4
alias:          pci:v00001393d00001120sv*sd*bc*sc*i*
alias:          pci:v00001393d00001023sv*sd*bc*sc*i*
alias:          pci:v00001393d00001143sv*sd*bc*sc*i*
alias:          pci:v00001393d00001044sv*sd*bc*sc*i*
alias:          pci:v00001393d00001380sv*sd*bc*sc*i*
alias:          pci:v00001393d00001341sv*sd*bc*sc*i*
alias:          pci:v00001393d00001142sv*sd*bc*sc*i*
alias:          pci:v00001393d00001080sv*sd*bc*sc*i*
alias:          pci:v00001393d00001043sv*sd*bc*sc*i*
alias:          pci:v00001393d00001682sv*sd*bc*sc*i*
alias:          pci:v00001393d00001181sv*sd*bc*sc*i*
alias:          pci:v00001393d00001022sv*sd*bc*sc*i*
alias:          pci:v00001393d00001021sv*sd*bc*sc*i*
alias:          pci:v00001393d00001180sv*sd*bc*sc*i*
alias:          pci:v00001393d00000001sv*sd*bc*sc*i*
alias:          pci:v00001393d00001042sv*sd*bc*sc*i*
alias:          pci:v00001393d00001340sv*sd*bc*sc*i*
alias:          pci:v00001393d00001321sv*sd*bc*sc*i*
alias:          pci:v00001393d00001681sv*sd*bc*sc*i*
alias:          pci:v00001393d00001041sv*sd*bc*sc*i*
alias:          pci:v00001393d00001020sv*sd*bc*sc*i*
alias:          pci:v00001393d00001140sv*sd*bc*sc*i*
alias:          pci:v00001393d00001141sv*sd*bc*sc*i*
alias:          pci:v00001393d00001320sv*sd*bc*sc*i*
alias:          pci:v00001393d00001040sv*sd*bc*sc*i*
alias:          pci:v00001393d00001680sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-696.23.1.el6.x86_64 SMP mod_unload modversions
parm:           ioaddr:array of int
parm:           ttymajor:int
parm:           calloutmajor:int
parm:           verbose:int

Откуда берётся информация о старом ядре? Где что поправить, чтобы собрать модуль под текущую версию ядра?


Содержание

Сообщения в этом обсуждении
"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено анонимус , 07-Ноя-18 11:56 
rpm -qa kernel*  в помощь


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено Кочегар , 09-Ноя-18 02:05 
> rpm -qa kernel*  в помощь

Удалил все rpm ядра 2.6.32-696. Не помогло.


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено ACCA , 09-Ноя-18 19:31 
>> rpm -qa kernel*  в помощь
> Удалил все rpm ядра 2.6.32-696. Не помогло.

А kernel-devel и kernel-headers?


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено Кочегар , 14-Ноя-18 05:00 
>>> rpm -qa kernel*  в помощь
>> Удалил все rpm ядра 2.6.32-696. Не помогло.
> А kernel-devel и kernel-headers?

С ними интересная история.
kernel-devel-2.6.32-696 и kernel-headers-2.6.32-696 я удалил, но остался пакет kernel-headers-2.6.32-754.6.3.el6.x86_64, у него в зависимостях gcc. Пакета, полностью соответствующего версии ядра, в репозитории Oracle почему-то нет...

Вот список пакетов на текущий момент:
# rpm -qa | grep ^kernel | sort
kernel-headers-2.6.32-754.6.3.el6.x86_64
kernel-uek-2.6.39-400.17.1.el6uek.x86_64
kernel-uek-2.6.39-400.298.3.el6uek.x86_64
kernel-uek-firmware-2.6.39-400.17.1.el6uek.noarch
kernel-uek-firmware-2.6.39-400.298.3.el6uek.noarch

Самое интересное, что модуль собирается не для 2.6.32-754, всё равно под 2.6.32-696.
# modinfo /lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko
filename:       /lib/modules/2.6.39-400.298.3.el6uek.x86_64/misc/mxser.ko
license:        GPL
description:    MOXA Smartio/Industio Family Multiport Board Device Driver
author:         Eric Lo
retpoline:      Y
srcversion:     3CE3F561C181235A1B926B4
...
vermagic:       2.6.32-696.23.1.el6.x86_64 SMP mod_unload modversions


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено ACCA , 08-Ноя-18 20:31 
> Если кратко, версия ядра 2.6.39-400.298.3.el6uek.x86_64, а модуль собирается под 2.6.32-696.23.1.el6.x86_64.
> Почему и как это исправить?

В /etc/sysconfig/kernel сделай DEFAULTKERNEL=kernel-uek


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено Кочегар , 09-Ноя-18 02:09 
> В /etc/sysconfig/kernel сделай DEFAULTKERNEL=kernel-uek

Там уже так и прописано.


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено КГБ СССР , 10-Ноя-18 21:52 
А uname -r какое ядро показывает? Если не ошибаюсь, в Oracle Linux программы по умолчанию собираются под то ядро, которое сейчас загружено.

"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено pavlinux , 14-Ноя-18 03:16 
> в Oracle Linux программы по умолчанию собираются под то ядро, которое сейчас загружено.

Чо?! o.O



"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено КГБ СССР , 14-Ноя-18 09:07 
>> в Oracle Linux программы по умолчанию собираются под то ядро, которое сейчас загружено.
> Чо?! o.O

Ничо-ничо, то я про своё думал.


"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено КГБ СССР , 10-Ноя-18 21:53 
А, вижу, пардон.

"Oracle Linux 6. Модуль ядра собирается под более старую версию."
Отправлено pavlinux , 14-Ноя-18 03:19 
> mxser: Unknown symbol __x86_indirect_thunk_rax (err 0)

Нифуя, Ораклы даже в 2.6.39 впихнули RETPOLINE