C7 Kernel Module Compilation

Home » CentOS » C7 Kernel Module Compilation
CentOS 14 Comments

Hey there, I’m trying to compile a single module following this guide:

https://wiki.CentOS.org/HowTos/BuildingKernelModules#head-d2e4c05886f94c701e4ae74387d41d8c40c25d01

and

https://wiki.CentOS.org/HowTos/I_need_the_Kernel_Source

I tried to compile a module for novuton led controller supplied by thirdparty and I got several error.

To check if this is the wrong procedure I tried to compile cifs module as listed in howto but when loading with modprobe I get “Exec format error”, and from dmesg “cifs: no symbol version for module_layout
“, the same errors when compiling novuton module and I don’t know why I
get this error.

I noticed that modules in CentOS are compressed in .xz but after running make M=fs/cifs I got only a .ko kernel module and then I run xz to compress the new module.

Can someone help me please?

Thanks in advance.

14 thoughts on - C7 Kernel Module Compilation

  • When following the instructions in BuildingKernelModules, which kernel version did you use? Also, after the “depmod -a” step, what is the output from:

    $ modinfo cifs | grep filename

    Compressing modules is optional. Uncompressed form is functionally the same (of course it saves some disk space).

    Akemi

  • Il 05/08/19 17:30, Akemi Yagi ha scritto:

    Hi Akemi, thank you for your answer.

    Kernel version used is 3.10.0-957.27.2.el7.x86_64

    [root@c7-test SPECS]# modinfo cifs | grep filename filename: /lib/modules/3.10.0-957.27.2.el7.x86_64/extra/cifs.ko

  • Il 05/08/19 17:49, Akemi Yagi ha scritto:

    Reading from dmesg seems that the module is not accepted by kernel due to invalid signature. I need to sign the module with a key?

    Thanks in advance

  • Il 05/08/19 18:07, Akemi Yagi ha scritto:

    Yes I have secureboot enabled. If usefull to others in list this could helps:

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Kernel_Administration_Guide/sect-signing-kernel-modules-for-secure-boot.html

    I think also that CentOS’s wiki must be updated because steps are valid for CentOS 5 and because key-signing is required for secure boot I think that a proper section must be inserted.

  • Update not finished yet but the above link has been added near the top of the wiki article.

    Akemi

  • Il 05/08/19 20:07, Akemi Yagi ha scritto:

    Sorry, I was wrong, secureboot is disabled so I don’t need to sign new modules.

    How I can solve my problem?

    Thanks in advance

  • Please post the actual error message in dmesg or /var/log/messages.

    It’s likely that the kernel is just grumbling that the module is not signed (missing key), but it’s just noise unless you’re using SecureBoot. Posting the actual message in full will help determine if that is the case.

    Thanks

    Phil

  • Il 07/08/19 01:02, Phil Perry ha scritto:

    Hi, thank you for your reply, I solve adding in “General Setup” values of current kernel on localversion option and adding Module.symver from
    /boot/symver-version.gz to module directory.

    Now I get another problem compiling the third party module (i2c-nct6775):

    “CONFIG_RETPOLINE=y but not supported by the compiler. Compiler update recomended. Stop.”

    I tried using scl gcc7 and 8 but get the same issue.

    I checked that retpoline is related to Spectre but checking on CentOS with:

    cat /sys/devices/system/cpu/vulnerabilities/spectre_v2

    I get:

    Mitigation: IBRS (kernel), IBPB

    and RETPOLINE seems disabled (I’m wrong?).

    I ridden in a blog post that I can disable this check commenting out some lines starting from N. 166 of arch/Makefile but I don’t think this is the best approach.

    At this point I can’t understand what means the previous error and why I
    get this error when compiling i2c-nct6775.

    Can someone point me in the right direction?

    Thanks in advance.

  • Il 07/08/19 20:15, Akemi Yagi ha scritto:

    kernel-3.10.0-957.12.1.el7.x86_64
    kernel-3.10.0-957.12.2.el7.x86_64
    kernel-3.10.0-957.21.3.el7.x86_64
    kernel-3.10.0-957.27.2.el7.x86_64
    kernel-3.10.0-957.el7.x86_64
    kernel-devel-3.10.0-957.21.3.el7.x86_64
    kernel-devel-3.10.0-957.27.2.el7.x86_64
    kernel-headers-3.10.0-957.27.2.el7.x86_64
    kernel-ml-5.1.0-1.el7.elrepo.x86_64
    kernel-ml-devel-5.1.0-1.el7.elrepo.x86_64
    kernel-tools-3.10.0-957.27.2.el7.x86_64
    kernel-tools-libs-3.10.0-957.27.2.el7.x86_64
    kernel-tools-libs-devel-3.10.0-957.27.2.el7.x86_64

    3.10.0-957.27.2.el7.x86_64

  • So, you tried to build the i2c-nct6775 module against kernel-3.10.0-957.27.2.el7 under the running kernel 3.10.0-957.27.2
    and you have a matching version of kernel-devel. Then I don’t quite understand why you get the “not supported by the compiler” error…

    Akemi

  • Il 08/08/19 23:23, Akemi Yagi ha scritto:

    I noticed also that if I run make modules, the module is compiled but if I try to build it standalone I got this error.

    Thank you for your time.