问题标签 [insmod]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 内核模块不会链接 - 未找到符号 mutex_lock_nested
我正在尝试为 x64 上的 Linux 3.10.45 构建内核模块(硬件压力测试工具)。到目前为止,它似乎工作正常,直到添加一个互斥体。
我使用 mutex_init、mutex_lock、mutex_unlock 和 mutex_destroy 添加了互斥锁。
构建模块没有产生错误或警告,但是当使用“insmod”加载时,dmesg 中有错误消息:
我发现使用“未知符号”的提示,有时添加 MODULE_LICENSE("GPL v2") 行会有所帮助。
没有不同。
查看 linux/mutex.h,我发现 mutex_lock 只有在定义了符号 CONFIG_DEBUG_LOCK_ALLOC 时才会定义为 mutex_lock_nested。检查这一点,它似乎是在我的 .config 中定义的。(不记得碰过它。它基本上只是来自 kernel.org 的内核,已构建)。
这有问题吗?我是否需要手动向我的模块添加其他内容才能使用此调试功能构建它?
试图更改包含文件和序列。没有不同。
系统正在运行 Debian-7 'Wheezy' x64,内核更改为 3.10.45 。
使用互斥锁的文件:
c - 无法从模块获取内核消息
我正在尝试自定义硬件组件的驱动程序,源代码可以在这里找到:
https://github.com/godspeed1989/zedboard/blob/master/led_drv/driver/myled.c
问题是当我这样做时:
控制台或 dmesg 日志中没有显示任何内容。我正在阅读 Linux Device Driver 3,上面写着你总是必须做的:
在源代码中没有它们,而是有:
但是当我用这个函数加载一个模块时,什么都没有打印,而是如果我使用 module_init 和 module_exit 消息出现,这两种指令有什么区别?
linux-kernel - 内核模块中的驱动程序代码不执行?
为什么这个内核模块在我加载它时什么都不做?
它必须打印Hello, world\n
,如果我这样做lsmod
,模块似乎已加载:
但在控制台和dmesg
.
如果我使用module_init
并且module_exit
一切正常,但我需要指向platform_device *pdev
设备的指针,我该怎么办?
编辑:
原始模块如下所示:
在我的设备树 blob 中存在此条目:
android - 强制执行 SE Linux 的 android lollipop 中的 insmod
我正在尝试使用一些模块参数执行 insmod abc.ko,但是这些模块参数需要动态计算。所以我正在启动一个应用程序 /system/bin/my_app 来计算这些参数,然后在 my_app 中执行 insmod。
问题:当 my_app 在启动时使用 init.hammerhead.rc 脚本启动时,它无法执行 insmod 并给出以下错误
我怎样才能使 my_app 能够 insmod ?
将不胜感激任何指针来解决这个问题
linux-kernel - beaglebone black insmod modprobe g_mass_storage 不起作用
如何插入模块g_mass_storage.ko
?
它位于/lib/modules/3.8.6/kernel/drivers/usb/gadget/
具有 -rw-r--r-- 权限的位置。
输出: 错误:无法加载模块 g_mass_storage.ko:没有这样的文件或目录
输出: 致命:未找到模块 g_mass_storage.ko。
我们如何解决这个问题?
# uname -a
输出: Linux beaglebone 3.8.6 #1 SMP Sat Apr 13 09:10:52 CEST 2013 armv7l GNU/Linux
linux - Linux 内核:无法使用工作队列加载简单的 linux 内核模块
我在我的 linux 内核模块中使用工作队列时遇到问题。我的模块编译时没有给出任何错误,但在加载时它失败了。我无法加载以下模块并在 dmesg 中出现以下错误。
以下是模块代码:-
我还查看了 /proc/kallsysm 中由 insmod 重新发布的未知符号,看起来符号可用以下是输出:-
有人可以告诉我可能是什么问题或者我错过了什么吗?
谢谢。
linux - Linux 模块版本错误“无效的模块格式”
我制作了 Linux 外部模块,因为我的模块需要 Linux 内核符号,
我设置了 Modversion 配置并制作它。(也制作了 modules_install)
我的模块完全是在 lib/modules/(my linux)/extra/
但是当我插入我的模块时,shell 会打印错误消息
这是 dmesg 内容
但我需要 modversions 标志,因为如果我没有设置该标志,Module.symvers 只有 0x00000000 地址。
你可以帮帮我吗?我该如何解决?
我的制作文件
kernel-module - insmod 不会抛出错误以获得正回报
我正在编写我的第一个内核模块,它是一个简单的 Hello World 内核模块。我遵循的 tldp 指南说如果 init_module 函数返回非零值,insmod 将不会加载模块。它在返回一些负数时按预期工作,但在试验时我注意到即使返回值为正数,insmod 也在加载我的模块。
请解释为什么?
例如,如果我返回 -185,insmod 会立即说它无法加载模块。
但是当我返回 185 时,它通知了一个可疑的返回但仍在加载模块。这是“返回 185”的日志。
这会在控制台上打印为“return -185”
linux-kernel - modprobe 和模块依赖的概念
当 modprobe 通过 modules.dep 查找依赖项时,是否有必要在 modprobe 之前执行 depmod?请帮助我进行模块插入过程
linux - 插入我的内核模块 INSMOD 退出时出现错误“错误地址”,警告“内核不匹配”
我正在为自定义设备开发此模块,实际上,这是一个连接到 ISA 总线的 4*8 位 io 端口,地址为 0x0120 - 0x0123。该驱动程序基于 Alessandro Rubini 和 Jonathan Corbet 的“scull”。我的操作系统是 Ubuntu 10.04,内核是 2.6.32-74 通用的,我使用内置的面向控制台的编译器 gcc。使用“insmod”插入已编译模块时,出现错误“错误地址”并且模块未加载。我尝试使用“printk”对其进行调试,发现我的模块成功获取了一系列 io 端口、主要和次要编号,然后,当尝试执行“Reset_Port”功能时,它会生成错误“错误地址”并退出.
谁能告诉我,我做错了什么?
这是我的模块的 __exit 和 __init 函数
接下来是 Reset_Port()
现在,在修复“int Reset_Port(void)”之后,我遇到了另一个问题——
“警告:modpost:发现 1 个部分不匹配。” 调试后,我发现这是从“module_init()”调用“ET3201_exit()”的结果——当我评论这个调用时,警告消失了。令人惊讶的是,在受人尊敬的作者的“scull”驱动程序中做出了完全相同的调用 - 它有效。问题:什么会导致此代码中的内核不匹配?