Перейти к содержанию

    

Пересобрать Kernel для совместимости драйвера

Собирается без проблем , нужна помощь устранить Unknown symbol in module для совместимости драйвера
Желательно подробно  (ранее этого не делал)
Возможно через команду cat /proc/kallsyms  , но точно не знаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
58 minutes ago, Power said:

Желательно подробно

Тогда и ситуацию нужно описать подробно - какое ядро, какой модуль, на что ругается и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Версия 3.3 + Extraversion и драйвера одинаковая
disagrees about version of symbol module_layout
insmod: ERROR: could not insert module. Invalid module format

 

 

 

Изменено пользователем Power

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Платформу, версию кернела и желаемую драйвером версию кернела предлагается угадать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

VERSION = 3
PATCHLEVEL = 3
SUBLEVEL = 8
EXTRAVERSION = -2.0
Только Ваш вопрос не имеет значения , написал выше
версия и драйвер одинаковые (предыдущего и собираемого Kernel)

 

 

 

Изменено пользователем Power

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А версия кернела, которую вы подсовываете при сборке драйвера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё одинаковое (версии)
Старый кернел , драйвера от старого кернел и собираемый кернел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 hours ago, Power said:

Версия 3.3 + Extraversion и драйвера одинаковая
disagrees about version of symbol module_layout
insmod: ERROR: could not insert module. Invalid module format

 

попробуйте

insmod -f module.ko

man insmod

 

 
Quote

 


       -f, --force
	      Attempt  load  the  module  even	if  the version of the running
	      kernel and the version of the kernel for which  the  module  was
	      compiled	do  not match.	This only overrides the kernel version
	      check, it has no effect on symbol name checks.   If  the	symbol
	      names in the module do not match the kernel then there is no way
	      to force insmod to load the module.


 

 

 

для modprobe тоже есть аналогичный ключ.

В ядре на котором хотите подгрузить "неродной" модуль должна быть включена поддержка для этого

[*] Enable loadable module support  --->

[*]   Forced module loading

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При включении в ядре
[*] Enable loadable module support  --->
[*]   Forced module loading
insmod -f module.ko
insmod: ERROR: could not insert module. Invalid module format

version magic 'preempt mod_unload modversions'
должно быть
mod_unload modversions
Что такое  version magic и preempt ?

Изменено пользователем Power

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 hour ago, Power said:

version magic 'preempt mod_unload modversions'
должно быть
mod_unload modversions

Смените в ядре  Preemption Model чтобы как в модуле было

 Kernel Features  --->
 Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как перенести все символы из модуля командой cat /proc/kallsyms ?
Так как лучше перенести все символы сразу , чтобы не было ошибок

 

Изменено пользователем Power

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что говорят команды (module.ko -- ваш модуль):
uname -r

modinfo module.ko


после
insmod module.ko

конец вывода (строк 30) команды
dmesg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация