标签: insmod

如何配置modprobe来查找我的模块?

我正在尝试在启动时加载内核模块.

如果我跑insmod /path/to/module.ko,它运作正常.但每次重新启动时都必须重复此操作.

如果我跑modprobe /path/to/module.ko,它找不到模块.我知道modprobe使用配置文件,但即使将/path/to/module.ko添加到/ etc/modules之后我也无法加载模块.

什么是正确的配置?

kernel insmod kernel-module

46
推荐指数
3
解决办法
10万
查看次数

如何确定Linux内核中是否加载了特定模块

我很好奇有没有办法确定是否加载/安装了特定的模块.

$ lsmod列出所有模块(加载设备驱动程序).

有没有办法检查或在轮询模块名称时返回true/false布尔输出的命令.例如.如果keyboard.o存在则返回true,否则返回false.我需要这个提示来完成我的驱动程序自动刷新程序.

PS:试过modinfo.我在我的测试DUT中使用busybox客户端,那么除了modinfo之外你能给出一些替代方案吗?

unix insmod linux-kernel

32
推荐指数
6
解决办法
7万
查看次数

对于在另一个模块中定义的符号,insmod以"模块中的未知符号"失败

我在Ubuntu工作.我正在尝试制作两个使用彼此功能的内核模块.我的问题是我正确编译了模块,但是其中一个符号没有得到解决.

为简单起见,我们将这些模块称为m1m2.

m2是出口功能void func_m2(void).在m1调用此函数.两个模块都正确编译.

在它全部编译之后,我需要先加载m2模块(因为它有导出的func_m2函数)和之后的m1模块.所以,让我们做到:

volodymyr@sv1:~/development/kmodules/m2$ sudo insmod ./m2.ko
Run Code Online (Sandbox Code Playgroud)

现在,让我们m1尝试使用的加载模块func_m2:

volodymyr@sv1:~/development/kmodules/m1$ sudo insmod ./m1.ko
insmod: error inserting './m1.ko': -1 Unknown symbol in module
Run Code Online (Sandbox Code Playgroud)

以下是我在日志中看到的内容:

volodymyr@sv1:~/development/kmodules/m1$ dmesg | tail
[ 3938.166616] Loading m2 module ...
[ 3963.078055] m1: no symbol version for func_m2
[ 3963.078059] m1: Unknown symbol func_m2
Run Code Online (Sandbox Code Playgroud)

因此,似乎func_m2没有解决对符号的引用.有趣.让我们检查它是否存在于符号表中:

volodymyr@sv1:~/development/kmodules$ cat /proc/kallsyms | grep 'func_m2'
ffffffffa00530d0 r __ksymtab_func_m2    [m2]
ffffffffa00530e8 …
Run Code Online (Sandbox Code Playgroud)

c linux insmod kernel-module linux-kernel

16
推荐指数
2
解决办法
5万
查看次数

使用insmod时出错"无法插入模块hello_world.ko:模块格式无效"

我正在尝试在Raspberry Pi上使用C和Bash 创建一个hello_world内核模块.

我成功使用make命令生成hello_world.ko文件.

但是,当我尝试使用该insmod hello_world.ko命令时,我收到以下错误:

错误:无法插入模块hello_world.ko:模块格式无效

我尝试按照Raspberry Pi论坛上描述的步骤进行操作,但我没有太多运气.

我认为这可能是由于我的内核和Linux标头之间的版本不匹配.这些标题在此过程中起什么作用?如何获得与我的内核匹配的版本?

c linux insmod raspberry-pi

12
推荐指数
1
解决办法
2万
查看次数

add_disk()在insmod上挂起

我正在编写一个Linux块设备驱动程序,我有很多初始化工作.但是,当我最终打电话时add_disk(),模块会挂起insmod.

有问题的片段在这里:

set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);

//this line is never reached
Run Code Online (Sandbox Code Playgroud)

insmod linux-device-driver

6
推荐指数
1
解决办法
1086
查看次数

无法删除可加载的内核模块

我正在编写一个可加载的内核模块并尝试测试它.插入后,我试图使用rmmod xxx命令删除它,但我得到一个错误说module xxx is in use,模块卡住,我无法删除它.知道如何在不重启整个机器的情况下移除模块吗?(linux Kernel v.3.5.0)

注意:rmmod -f打印Error: device or resource busy

c insmod kernel-module

6
推荐指数
1
解决办法
1万
查看次数

将模块移植到较新的Linux内核:无法分配内存

我有一个非常大的驱动程序模块,我正在尝试编译最近的Linux内核(3.4.4).我可以insmod使用2.6.27.25内核成功编译和使用相同的模块.GCC版本也不同,4.7.0对4.3.0.请注意,此模块非常复杂,我不能简单地浏览所有代码和所有makefile.

当"插入"模块时,我得到一个Cannot allocate memory带有以下痕迹:

vmap allocation for size 30248960 failed: use vmalloc=<size> to increase size.
vmalloc: allocation failure: 30243566 bytes
insmod: page allocation failure: order:0, mode:0xd2
Pid: 5840, comm: insmod Tainted: G           O 3.4.4-5.fc17.i686 #1
Call Trace:
 [<c092702a>] ? printk+0x2d/0x2f
 [<c04eff8d>] warn_alloc_failed+0xad/0xf0
 [<c05178d9>] __vmalloc_node_range+0x169/0x1d0
 [<c0517994>] __vmalloc_node+0x54/0x60
 [<c0490825>] ? sys_init_module+0x65/0x1d80
 [<c0517a60>] vmalloc+0x30/0x40
 [<c0490825>] ? sys_init_module+0x65/0x1d80
 [<c0490825>] sys_init_module+0x65/0x1d80
 [<c050cda6>] ? handle_mm_fault+0xf6/0x1d0
 [<c0932b30>] ? spurious_fault+0xae/0xae
 [<c0932ce7>] ? do_page_fault+0x1b7/0x450
 [<c093665f>] sysenter_do_call+0x12/0x28
-- clip --
Run Code Online (Sandbox Code Playgroud)

显而易见的答案似乎是模块分配了太多内存,但是:

  • 我对旧内核版本没有任何问题,这个模块的大小
  • 如果我修剪这个模块的某些部分以获得更低的内存消耗,我会得到与新内核相同的错误消息
  • 我可以卸载很多其他模块,但它没有任何影响(并且无论如何相关?Linux是否存在关于模块总内存使用量的全局限制)

因此,我怀疑新内核的问题与有限的内存没有直接关系.

新内核抱怨 …

c kernel insmod linux-kernel vmalloc

5
推荐指数
1
解决办法
3414
查看次数

init_module '/path/to/module.ko' 失败 &lt;文件存在&gt;

我正在尝试通过以下方式启动驱动程序模块

insmod path/to/module.ko
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

> init_module 'path/to/module.ko' failed <File exists>
Run Code Online (Sandbox Code Playgroud)

我试图了解这是否意味着该模块已经启动并正在运行,还是完全无法初始化。

我正在寻找 的含义<File exists>,这是否意味着它已经初始化?

android insmod

5
推荐指数
1
解决办法
7044
查看次数

内核模块中的EXPORT_SYMBOL | insmod期间未定义的符号

我从a.ko(内核模块)导出函数foo()和foo1(),foo1()接受输入参数,一个函数指针.我从b.ko调用foo1(),并传递foo()作为输入参数.

我看到b.ko(未知符号foo)的insmod失败,即使a.ko已经在b.ko之前被破坏了.

任何解释/解决方案?

谢谢,幸运

linux kernel module insmod

5
推荐指数
1
解决办法
2803
查看次数

内核模块中的驱动程序代码不执行?

为什么这个内核模块在加载它时什么都不做?

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>

#define DEVICE_NAME "hello-1.00.a"
#define DRIVER_NAME "hello"
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(struct platform_device *pdev){
    printk(KERN_ALERT "Hello, world\n");
    return 0;
}
static int hello_exit(struct platform_device *pdev){
    printk(KERN_ALERT "Goodbye, cruel world\n");
    return 0;
}

static const struct of_device_id myled_of_match[] =
{
    {.compatible = DEVICE_NAME},
    {},
};

MODULE_DEVICE_TABLE(of, myled_of_match);

static struct platform_driver hello_driver =
    {
        .driver = {
        .name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .of_match_table = myled_of_match
    },
    .probe = hello_init,
    .remove = hello_exit
};

module_platform_driver(hello_driver);
Run Code Online (Sandbox Code Playgroud)

它必须打印 …

insmod kernel-module linux-device-driver linux-kernel device-tree

5
推荐指数
1
解决办法
3624
查看次数

警告:modules_install:缺少“System.map”文件。跳过 depmod

我正在尝试使用depmodmodprobe实用程序插入内核模块以解决任何依赖关系。当我构建模块时,它会抛出“警告:modules_install:缺少‘System.map’文件。跳过depmod。

后来当我尝试执行modprobe它时会抛出一个错误,说 “modprobe:致命:在目录/lib/modules/4.19.58-v7+中找不到模块i2c_eeprom_client.ko”

下面是我正在使用的make文件:

obj-m += i2c_eeprom_client.o
KDIR = /lib/modules/$(shell uname -r)/build

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    make -C $(KDIR) M=$(PWD) modules_install

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)

以下是构建的输出:

make -C /lib/modules/4.19.58-v7+/build M=/home/pi/work/eeprom modules
make[1]: Entering directory '/usr/src/linux-headers-4.19.58-v7+'
  Building modules, stage 2.   
  MODPOST 1 modules
make[1]: Leaving directory '/usr/src/linux-headers-4.19.58-v7+'
make -C /lib/modules/4.19.58-v7+/build M=/home/pi/work/eeprom 
modules_install  
make[1]: Entering directory '/usr/src/linux-headers-4.19.58-v7+'
  INSTALL /home/pi/work/eeprom/i2c_eeprom_client.ko
  DEPMOD  4.19.58-v7+
Warning: modules_install: missing 'System.map' file. …
Run Code Online (Sandbox Code Playgroud)

makefile insmod kernel-module linux-kernel

5
推荐指数
1
解决办法
2万
查看次数