kernel-module相关内容

在内核模块中预定义宏

我想使用-D标志为我的内核模块定义一个宏,但是我不知道如何在定制的可加载内核模块中执行该操作. 请明确一点,要将宏TEST设置为1,我通常会执行以下操作: cc -D TEST=1 file.c -o file 在file.c里面,我有 #if TEST //do something #endif 现在,在内核模块中具有相同的代码,如何在不触摸代码的情况下将TEST设 ..
发布时间:2020-04-25 11:41:57 服务器开发

读取系统调用表功能地址时内核模块崩溃

我正在研究rootkit,并尝试挂钩系统调用表.因为我已经可以从/boot/System.map-$(uname -r)中动态检索表的地址,所以我将有问题的代码部分跟踪并隔离到一个独立的,更简单的模块中,如下所示.它尝试检索并显示kill系统调用的地址,但是insmod在模块加载时返回"Killed",这是在强调的行上特别引起的错误. 内核版本:5.2.0-3-amd64 模块: ..
发布时间:2020-04-25 11:41:54 其他开发

如何获取在Linux内核启动期间已初始化/探查的所有模块/驱动程序的详细信息?

我需要在内核引导过程中调用|初始化|探测的模块/驱动程序的顺序. 能否让我知道是否有任何Flash命令行选项可用于获取此序列? 解决方案 在内核命令行中传递选项"initcall_debug"将导致将内置驱动程序的每个init例程的计时信息打印到控制台. initcall用于初始化静态链接的内核驱动程序和子系统,并为Linux引导过程贡献大量时间. (可装载的模块只有在安装了根文件系 ..

如何在内核模块中查找物理和逻辑核心号?

Linux中是否有内核函数会返回物理内核的编号和 内核模块在其上运行的逻辑核心(在超线程的情况下)? 解决方案 看看include/linux/smp.h的结尾:smp_processor_id() 为您提供当前正在执行的CPU的编号. get_cpu()可以 一样,并且还会禁用抢占,这样您就可以继续 直到put_cpu()被调用为止. 在用户空间中,您可以使用sched_getcp ..
发布时间:2020-04-25 11:41:48 其他开发

是否可以通过LKM添加系统调用?

我想通过LKM添加一个新的系统调用,但是我不确定如何执行此操作.也就是说,我知道如果我想添加一个全新的系统调用,我可以查看sys_call_table并找到一个sys_ni_syscall并将其替换,但是我很好奇是否可以实际 add 到sys_call_table.考虑到它是固定大小的数组,我意识到这可能不可能,但是我想知道是否还有其他聪明的方法可以添加系统调用而不覆盖未使用的系统调用号. ..
发布时间:2020-04-25 11:41:44 服务器开发

如何在Linux内核中访问进程的内核堆栈?

我正在尝试监视进程在执行过程中正在调用哪些功能.我的目的是要知道一个流程在每个功能上花费了多少时间.函数被压入堆栈,并在函数调用返回时弹出.我想知道推送和弹出实际上发生在内核代码中的什么地方. 我在task_struct中找到了一个void *stack字段.我不确定这是否是我要寻找的领域.如果是,那么如何知道它如何更新? 我必须编写一个将使用此代码的模块.在这种情况下,请帮助我. ..
发布时间:2020-04-25 11:41:41 其他开发

在内核模块中的".read"函数中进行错误检查

.read操作应在内核模块字符设备中返回什么? 我知道copy_to_user(...)返回未复制的字节数,成功返回0.我看到了一些示例,这些示例使read()函数return -EFAULT如果copy_to_user(...)返回除0之外的任何值. 但是成功之后此表示返回0,而此表示返回读取的字节数.应该返回什么? 我也应该检查 的参数 static ssize_t de ..
发布时间:2020-04-25 11:41:34 服务器开发

无法卸载内核扩展;类有实例

我正在为音频设备驱动程序(它是软件,但模拟硬件设备)编写OSX内核扩展. 在开发过程中,完全卸载现有的旧版本,然后从头开始构建并安装新版本会很方便.但是,有时在没有重新启动系统的情况下这是不可能的. 程序本身未运行,并且源文件已从/System/Library/Extensions/目录中删除. 但是kextstat揭示了一个实例: $ kextstat | grep 'c ..
发布时间:2020-04-25 11:41:26 其他开发

从Linux内核模块访问串行端口

Hello Linux内核驱动程序大师! 我正在为使用串行接口进行配置的摄像机编写v4l2驱动程序.我希望驱动程序配置摄像头,因为它可以使客户端代码在各个摄像头型号之间保持一致.问题是:从驱动程序模块访问相机的串行接口的最佳方法是什么? 据我所知,从内核驱动程序访问文件是一个很大的禁忌,但这是可以做到的.因此,我目前正在使用以下代码段,但感觉像是黑客. oldfs = get_f ..

静态插入linux内核模块

从源代码构建Linux内核时,可以决定是将某种功能静态地内置到内核中还是打包到模块中以通过.config动态插入. 另一方面,如果我有任何第三方模块的源代码,例如打包的设备驱动程序,是否可以通过编程方式将此代码静态地静态集成到内核中?而不是从根文件系统加载内核模块? 解决方案 当然,您只需做一点点改动即可将外部模块移入内核源代码树,对Makefiles/Kconfig进行一些调整,以 ..
发布时间:2020-04-25 11:41:18 服务器开发

如何获得Linux内核模块内的电池电量?

我正在尝试获取Linux内核模块内的电池电量(该模块通过modprobe插入).理想情况下,我想使用内核API调用来获取电池信息.我在网上搜索了解决方案,并且还探索了Linux内核源以及Michael Meskes的程序"acpi"的源泉. 这些是我认为可以使用的一些技术: 读取并解析/proc/acpi/battery/BAT0/state和/proc/acpi/battery/BA ..
发布时间:2020-04-25 11:41:16 其他开发

替换Linux内核3中的系统调用

我有兴趣用将在Linux内核3中实现的自定义替换系统调用. 我了解到sys调用表不再公开. 有什么想法吗? 对此 http://www.linuxtopia.org/的任何引用online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html 示例,但对于内核3会很感激:) 谢谢! 解决方案 我建 ..
发布时间:2020-04-25 11:41:14 服务器开发

如何使用depmod使一个Linux内核模块依赖于另一个外部模块?

我正在编写一个内核模块,该模块取决于一个现有的内核模块.我正在从树中构建模块(作为外部模块). 我如何声明依赖关系,以便depmod识别它? 解决方案 虽然不完全令人满意,但我想使modprobe发挥作用的最佳方法是在modules.dep 中添加一个条目 # tail -1 modules.dep ../../../../home/ctuffli/mymod/mymod.ko: ..
发布时间:2020-04-25 11:41:01 服务器开发

进行系统调用以获取进程列表

我是模块编程的新手,我需要进行系统调用以检索系统进程并显示它们消耗了多少CPU. 我怎么打这个电话? 解决方案 您为什么要实现为此系统调用?您不想将syscall添加到现有的Linux API.这是Linux到用户空间的主要界面,除了知道自己的工作的顶级内核开发人员之外,没有人可以触摸系统调用. 如果要获取进程及其参数和实时状态的列表,请使用/proc.每个包含整数的目录都有一 ..
发布时间:2020-04-25 11:40:56 其他开发