问题标签 [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.
c - insmod:错误:无法插入模块 kprobe_example.ko:不允许操作
我指的是: http : //www-users.cs.umn.edu/~boutcher/kprobes/kprobes.txt.html 来了解kprobe。我使用了文档中给出的 kprobe_example.c。
我使用 makefile 编译它(代码取自同一个文档)
我收到编译错误,因为我的内核版本是 4.2,并且 struct pt_regs 中的某些字段已更改。因此,我将 eip 替换为 ip 并将 eflag 替换为 kprobe_example.c 中的标志,即https://gist.github.com/murlee417/87c2eb43a6afa1954b05404a07813e81。然后我能够成功编译它。
现在,作为 root 用户,我做了:
我得到了:
我的消息缓冲区有:
请帮助我解决此错误并使 insmod 工作。
linux - 我应该在哪个文件夹中添加我编译的 .ko 文件?
所以我已经为我的 USB 无线适配器编译了驱动程序。
现在我需要知道应该将 .ko 文件复制到哪里。问题实际上如下:
/lib/modules/(uname -r)/build
和
/lib/module/(uname -r)/kernel/drivers有什么区别
?
谢谢你
linux-kernel - 什么在 wm8350-i2c.c 中调用 wm8350_i2c_probe()?
我正在编写一个多功能内核驱动模块,基于http://lxr.free-electrons.com/source/drivers/mfd/wm8350-i2c.c?v=4.4和http://lxr.free- electrons.com/source/drivers/mfd/wm8350-core.c?v=4.4
我对如何/何时/为什么wm8350_i2c_probe()
调用该函数感到困惑。
该i2c_add_driver()
调用将 a 注册struct i2c_driver
到 i2c 子系统,并且该结构包含.probe
指向该wm8350_i2c_probe()
函数的指针。
我自己制作了这些模块的类似物。被xxx_i2c_init()
调用insmod
但 i2c 子系统不调用该xxx_i2c_probe()
函数。
这里有一些我不明白的地方。为什么 i2c 子系统不wm8350_i2c_probe()
通过 register 调用该函数.probe
?
linux - Linux Driver -> insmod -> lsmod 显示驱动程序,但 /dev 中没有条目?
只是在创建 Linux 驱动程序方面迈出了第一步。终于得到了这个工作:
仍在测试中,所以到目前为止内容/目的并不是那么重要,但是......在安装 GetMonth.ko 之后,我可以在 lsmod-List 中看到它。我还看到了 kprintft 工作和 /proc 文档。
但是我很震惊在 /dev 中没有看到我的驱动程序的任何内容?!
怎么可能?不是每个驱动程序都在这个目录中创建一个文件吗?
linux - Linux内核次要编号vermagic比较
我对 linux 内核中的模块有一个简单的问题。
是否保证我编译的模块在整个 XY 内核版本中都能正常工作。
X:内核版本 Y:主要版本 Z:次要版本
例如:
我用 4.9 内核的树编译我的 module.ko。那么insmod
我的模块可以使用 4.9.24, 4.9.31,4.9.34,...?
那么,vermagic 比较是否会跳过主要数字之后的所有内容?
linux - 尝试使用operaFS时出现“insmod:无效的模块格式”
我想构建和安装 Linux 文件系统驱动程序OperaFS。编译源代码后,“insmod”显示错误消息“模块无效格式”,虽然我确实下载了“linux-source”包,所以我希望源是我当前使用的内核的源。
到目前为止我做了以下工作:
我究竟做错了什么?
linux-device-driver - 内核模块插入问题
我们在 raspberry pi 板上运行最新的 raspibian,并有一个用于 USB 外围设备的内核驱动程序,它在启动后通过使用 ssh 连接到硬件(它是一个无头系统)从外部添加(sudo insmod driverx.ko)。
问题如下: 如果设备上电时已经连接到系统,运行sudo insmod driverx.ko会导致终端卡住(无响应,Ctrl+C不起作用)。通过启动另一个 ssh 会话来运行 lsmod 表明该模块正在使用中,即使没有正在运行的代码会使用它。
如果我在系统启动后插入 USB 设备,则 sudo insmod driverx.ko 工作正常,(终端仍然处于活动状态)。随后运行 lsmod 会显示该模块已加载但未被任何人使用。然后我可以运行我的用户代码,一切都很好。运行我的用户代码 lsmod 显示内核模块正在使用中,用户数为 1。
在我们的系统中,USB 设备将始终插入。内核版本和驱动程序版本相同。
我可以填写更多详细信息,但不希望有偏见或使此查询不可读。请告知可能是什么问题。
感谢您的时间和帮助。
kernel - insmod 自定义模块失败并显示消息:不同意符号版本
我想为自己制作一个 netfilter conntrack 模块。所以我将所有关于 netfilter conntrack 的源代码从内核源代码树复制到我的外部目录。编译后可以insmod。然后我在struct nf_conn中添加了一些成员,编译成功。但是,它不能是 insmod。系统给我消息“不同意符号的版本......”。
谁能帮我 ?
c - 内核模块加载导致错误
我是内核模块开发的新手,并决定今天编写我的第一个内核模块。
我的模块应该接收 2 个数字作为输入,用空格分隔并将这些数字加在一起。
内核模块通过名为 calc (/proc/calc) 的 proc 条目进行通信,因此从文件中读取将返回输出,写入该文件将提供新输入(2 个数字由空格分隔)
加载模块(insmod)时,我的 shell 卡住了,当中断它并查看 dmesg 时,我看到了内核 BUG 行, 这是跟踪。
我不确定这是否是我的代码中的错误,还是 linux 内核中的实际错误,并且很想了解我做错了什么以及如何使用给定的 dmesg 日志开始调试我的模块。
我的makefile是非常标准的,
非常感谢提前!
编辑:我使用的是 ubuntu 16.04.02,版本 4.10.0-28,非常标准。
linux - Linux键盘延迟
所以我想构建一个内核模块(我想),它会在按下键盘键后插入一点延迟(比如说 500 毫秒)。我设法通过钩子在 Windows 中做到了这一点,但在 Linux 中似乎有所不同。请注意,我不希望使用 x11 方法,因为我希望它也可以从 linux 控制台工作(即使没有运行 X 服务器)。据我所知,它需要构建一个内核模块并使用 insmod 将其动态插入内核。我设法构建了一个按键记录器,它将每个按下的按键转储到内核日志中,但是插入延迟需要将处理键盘中断处理程序的线程发送到睡眠状态,这是一个非常糟糕的主意,并且还要重写整个 USB_KBD驱动程序,因为当前脚本调用设置了 IRQF_SHARED 标志的 request_irq 函数,
我目前正在请求这样的中断处理程序
关于如何处理这个(任何其他方式)的任何建议?