Jump to content

    

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

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

Share this post


Link to post
Share on other sites
58 minutes ago, Power said:

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

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

Share this post


Link to post
Share on other sites

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

 

 

 

Edited by Power

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

 

 

Edited by Power

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

При включении в ядре
[*] 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 ?

Edited by Power

Share this post


Link to post
Share on other sites
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))  --->

 

 

Share this post


Link to post
Share on other sites

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

 

Edited by Power

Share this post


Link to post
Share on other sites

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

modinfo module.ko


после
insmod module.ko

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

Share this post


Link to post
Share on other sites
On 1/25/2019 at 4:15 PM, gosha-z said:

А драйвер в исходниках или только бинарь?

Тогда сливайте воду:aggressive:- это вам не ВыньДа :beach:

 

On 1/26/2019 at 5:25 PM, Power said:

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

 

 

Драйверы и модули ядра Linux

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this