Solution to the failure of 6ull to load the Linux driver module

Solution to the failure of 6ull to load the Linux driver module

0x01 Failed to load the driver module

The description of the failure to load the driver is as follows. The error message indicates that the Linux kernel version running on the board is 4.1.15-g49efdaa, and the architecture is ARMv7; while the kernel source code version used to compile the driver is 4.1.15, and the architecture is ARMv6. This indicates that the kernel version name and architecture used to compile the driver are inconsistent with those running on the board.

root@ALIENTEK-IMX6U:~/get# insmod led.ko
[ 1634.442887] led: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15-g49efdaa SMP preempt mod_unload modversions ARMv7 p2v8 '
insmod: ERROR: could not insert module led.ko: Invalid module format

0x02 Solution

There are two ways to solve this:
(1) Recompile the kernel and device tree and burn them to the board.
(2) Change the kernel configuration information in the host to make it consistent with that in the board.

Reburning the kernel is troublesome, so here we use method 2 .

1. Enter the commands uname -r and uname -p in the board terminal to view the version and architecture information of the kernel running on the board.

root@ALIENTEK-IMX6U:~/get# uname -r
4.1.15-g49efdaa
root@ALIENTEK-IMX6U:~/get# uname -p
armv7l

The Linux kernel version running on the board is 4.1.15-g49efdaa , and the processor architecture is ARMv7

2. Enter the root directory of the Linux kernel used by the driver module in the host, and execute make menuconfig to start the Linux kernel graphical configuration interface (if you cannot use menuconfig, you can use Baidu to install the corresponding dependent libraries)

As shown in the figure below, enter System Type option:

insert image description here

Then enter the Multiple platform selection option:

insert image description here

Then in the interface below, cancel the * in front of the first ARMv6 based platforms(ARM11) (press the spacebar to cancel after selecting it)

insert image description here

After canceling, save and exit, and the architecture supported by the kernel will be changed to ARMv7.
After configuring menuconfig, do not enter other kernel configuration commands, otherwise the previous configuration will be flushed.

3. Open the Makefile in the kernel root directory and add the second half of the Linux kernel version number running on your board after the EXTRAVERSION variable. For example, the second half of my kernel is -g49efdaa .

insert image description here

Save the changes after completion, and execute make -j12 in the Linux kernel root directory to recompile the kernel.
Recompile the driver module after the kernel is compiled.

After the driver module is compiled, use NFS to download it to the board. Enter modinfo [驅動模塊名] to view the driver module information:

root@ALIENTEK-IMX6U:~/get# modinfo led.ko
filename: /home/root/get/led.ko
author: zuozhongkai
license: GPL
srcversion:597E1DDC8A372707B8FD0DE
depends:
vermagic: 4.1.15-g49efdaa SMP preempt mod_unload modversions ARMv7 p2v8

It can be seen that the kernel version and processor architecture of the driver module displayed in vermagic line are consistent with the kernel information in the board, and the driver module can be loaded successfully.

root@ALIENTEK-IMX6U:~/get# uname -r
4.1.15-g49efdaa
root@ALIENTEK-IMX6U:~/get# uname -p
armv7l

Summarize

This is the end of this article about the solution to the failure of 6ull to load the Linux driver module. For more related content about the failure to load the Linux driver module, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Linux kernel device driver Linux kernel module loading mechanism notes summary

<<:  How to use flat style to design websites

>>:  Detailed explanation of Vue project packaging

Recommend

Some tips for writing high-performance HTML applications

How can you improve web page performance? Most de...

A brief discussion on the problem of forgotten mysql password and login error

If you forget your MySQL login password, the solu...

Solution to the problem that the mysql8.0.11 client cannot log in

This article shares with you the solution to the ...

Detailed explanation of the relationship between Linux and GNU systems

Table of contents What is the Linux system that w...

How to modify Flash SWF files in web pages

I think this is a problem that many people have en...

Tips for using top command in Linux

First, let me introduce the meaning of some field...

Analysis of multi-threaded programming examples under Linux

1 Introduction Thread technology was proposed as ...

How to set up a deployment project under Linux system

1. Modify the firewall settings and open the corr...

js to realize the function of uploading pictures

The principle of uploading pictures on the front ...

Linux nohup to run programs in the background and view them (nohup and &)

1. Background execution Generally, programs on Li...

mysql solves the problem of finding records where two or more fields are NULL

Core code /*-------------------------------- Find...

In-depth study of JavaScript array deduplication problem

Table of contents Preface 👀 Start researching 🐱‍🏍...

Detailed explanation of Nginx passively checking the server's survival status

introduce Monitors the health of HTTP servers in ...