× NETGEAR will be terminating ReadyCLOUD service by July 1st, 2023. For more details click here.
Orbi WiFi 7 RBE973
Reply

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

vbif
Aspirant

dmesg "disagrees about version of symbol module_layout" modprobe fails with self compiled cdc_acm

Hello,

I try to compile cdc_acm kernel driver to make out of NAS a zwave control center (USB Zwave stick). First I've tried to compile ftdi_sio und succeded, modprobe can load this driver. 

what've I done:

took the info on how to compile from hier: community.netgear.com/t5/Community-Add-ons/HOW-TO-Compile-Custom-Kernel-Modules/td-p/864234 but with fresh 6.6.0 OS Version (as on my NAS).

for

.config

copied 

linux-4.1.30-armada/arch/arm/configs/readynas_defconfig 

I can compile modules. Vermagic

vermagic:       4.1.30.armada.1 SMP mod_unload modversions ARMv7 p2v8 

 of my modules are the same, but sill, cdc_acm fails, the other one not. 

Apropos I could have compiled soundcore.ko, and modprobe loads it! (the usb audio is still not working, but that is subject for another question )

 

As I understand this error have something to do with kernel config, the supplied  defconfig seems to be not the same as the production version.... Am I right? or it is a copmletly different problem?

Message 1 of 20
FramerV
NETGEAR Employee Retired

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compiled cdc...

Hi vbif,

 

Let me try to inquire about this logs message.

 

 

Regards,

Message 2 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Starting with I believe ReadyNAS OS 6.5.0 I found that the only way to successfully compile kernel modules is to do it directly on the ReadyNAS. All other ways I tried (using VMs, cross compiling and dedicated hardware) simply failed because of the symbol mismatches you're experiencing.

 

-Stefan

Message 3 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

hm, I hope NetGear tries to fix this, the VM is realy nice. In the mean time, I've failed to compile directly on NAS, the headers are missing. have had tried the obvious 

apt-get install linux-headers-$(uname -r) or 

apt-get install linux-headers or 

apt-get install linux-headers-generic.... there are no such packeges available. Should I mess with apt sources to install headers? Or is there some other possibilities to compile kernel drivers?

Message 4 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Huh? You don't need the kernel headers. Everything you need is in the GPL archive provided by NETGEAR. This includes the complete kernel sources.

 

-Stefan

Message 5 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Ok, I've found the header files in ../linux-4.1.30-armada/include, but there are slightly differnt from those  under /usr/include

and so make, or make modules fails with lot of errors such

 

root@NAS:/DATA/kernel/linux-4.1.30-armada# make modules
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
In file included from include/linux/page-flags.h:8:0,
                 from kernel/bounds.c:9:
include/linux/types.h:16:9: error: unknown type name ‘__kernel_ino_t’
 typedef __kernel_ino_t  ino_t;
         ^
include/linux/types.h:20:9: error: unknown type name ‘__kernel_off_t’
 typedef __kernel_off_t  off_t;
         ^
include/linux/types.h:21:9: error: unknown type name ‘__kernel_pid_t’
 typedef __kernel_pid_t  pid_t;
         ^
include/linux/types.h:22:9: error: unknown type name ‘__kernel_daddr_t’
 typedef __kernel_daddr_t daddr_t;
         ^
include/linux/types.h:24:9: error: unknown type name ‘__kernel_suseconds_t’
 typedef __kernel_suseconds_t suseconds_t;
         ^
include/linux/types.h:25:9: error: unknown type name ‘__kernel_timer_t’
 typedef __kernel_timer_t timer_t;

 

 

and so on....

 

EDIT:

found the problem, include/ lacks an asm/ so 

ln uapi/asm-generic/ include/asm -s

does the trick and 'make' runs smoothly now!

Message 6 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

I'm not sure that's the way it's supposed to work. Did you run "make" without any other parameters first before building the modules? Anyway, if i works for that's cool.

 

-Stefan

Message 7 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Yep, I've tried 'make', 'make modules', but without asm/posix_types.h compile fails.... I also think, that this isn't the way to work, but it works for now

In the  mean time, make have maked the new modules, and I tried to load the new cdc-acm. It's fails, with the different error message:

root@NAS:/DATA/kernel/linux-4.1.30-armada# modprobe cdc-acm
modprobe: ERROR: could not insert 'cdc_acm': Exec format error

and

root@NAS:/DATA/kernel/linux-4.1.30-armada# dmesg | tail -n 1 
[467201.562240] cdc_acm: no symbol version for module_layout

Ok, I am a total noob to kernel compiling, but this seems to be the problem with Netgear sources.  I hope FramerV will clear out the situation... may be next year so 🙂

Message 8 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Either you used the wrong sources or the .config file supplied with the sources wasn't corrent. Check the arch/... directories for a kernel config file that has a name that sounds like created by NETGEAR. Sorry, can't be more specific for I'm currently at work. Copy the file over the .config file in the kernel source directory and try again.

 

-Stefan

Message 9 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Yep, did it at my first try, as for .config I was using 

linux-4.1.30-armada/arch/arm/configs/readynas_defconfig 

CONFIG_CROSS_COMPILE was set to "" and of course CONFIG_USB_ACM=m

those are the only changes to original readynas_defconfig that I've made

 

root@NAS:/DATA/kernel/linux-4.1.30-armada# diff .config arch/arm/configs/readynas_defconfig 
31c31
< CONFIG_CROSS_COMPILE=""
---
> CONFIG_CROSS_COMPILE="arm-marvell-linux-gnueabi-"
2410c2410
< CONFIG_USB_ACM=m
---
> # CONFIG_USB_ACM is not set
Message 10 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

What ReadyNAS model are you compiling on/for?

Message 11 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

RN102 

root@NAS:/DATA/kernel/linux-4.1.30-armada# uname -a
Linux NAS 4.1.30.armada.1 #1 SMP Thu Sep 22 16:39:49 PDT 2016 armv7l GNU/Linux

 

Message 12 of 20
WhoCares_
Mentor

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Too bad, my RN102 is broken so I can't try myself. I'll check whether I can revive it or get hold of one over the next week.

 

-Stefan

Message 13 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

thank you for your support, Stefan ....

I could have compiled the whole kernel without any errors, it tooked about 3 hours. My cdc-acm module won't load (used to it) but the message is differnt from those using make modules.

So, using 'make' brings us to

cdc_acm: disagrees about version of symbol module_layout

'make modules' get us to

cdc_acm: no symbol version for module_layout

PS for the successfull compile I've needed to mess with directorys one more time:

mv include/asm/kvm_para.h include/asm/kvm_para_.h 
cp include/asm-generic/kvm_para.h include/asm/kvm_para.h 

Happy New Year, Frohes Neues,  С Новым Годом!

Message 14 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Something happend with GPL Server, I think.
I can't find the 6.6.0 version on GPL Site http://www.readynas.com/download/GPL/index.php?dir=readynasos
and today there is a 6.6.1 avialable on a regular download site

I'm still trying to compile the drivers with older version of 6.6.0 kernel (it was available for some time, but not now) so I think, it was some how corrupted.

Message 15 of 20
mdgm-ntgr
NETGEAR Employee Retired

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Do you still have this problem?

Message 16 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Yes, I couldn't fixed it. Right now there is a new Firmware Version 6.6.1 (?) available, but I couldn't test it ... I've tried a couple of weeks ago and the source codes were not available there, or I could not find it.

Message 17 of 20
FramerV
NETGEAR Employee Retired

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Hi vbif,

 

Let me have this case checked for you.

 

 

Regards,

Message 18 of 20
vbif
Aspirant

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Yes please, do you need some kind of information from me?


@FramerV wrote:

Hi vbif,

 

Let me have this case checked for you.

 

 

Regards,


 

Message 19 of 20
mdgm-ntgr
NETGEAR Employee Retired

Re: dmesg "disagrees about version of symbol module_layout" modprobe fails with self compi

Do you still have this issue?

Message 20 of 20
Top Contributors
Discussion stats
  • 19 replies
  • 9512 views
  • 0 kudos
  • 4 in conversation
Announcements