【Linux(入门基础)113---内核模块(depmod、lsmod、modinfo、insmod、rmmod、modprobe)】教程文章相关的互联网学习教程文章

从linux中的内核模块控制鼠标指针

好的,所以这就是问题所在:我必须编写一个控制鼠标光标的linux内核模块.例如,要将光标在屏幕上移动到给定的x / y坐标,请发送随机鼠标点击等. 我必须写的原因是我正在编写一个使用手机作为触摸板的应用程序.因为它是我的uni的项目,所以计算机端控制器必须是Linux内核模块.所以,问题是,如何从内核模块控制鼠标行为?我用谷歌搜索了一段时间,但我没有在’网的深处找到任何结论,可悲的是:(解决方法:内核是错误的地方 – 内核完全没有意...

linux – get_current()在这个内核模块中返回什么?【代码】

我编写了一个读取和写入/ proc文件的内核模块,它工作正常.现在我想使用它的权限,但是当我为下面显示的权限编写函数时,它给了我一个错误.目标是让每个人都能够读取文件,但只有root才能写入文件.int my_permission(struct inode *inode, int op) {if(op == 4||(op == 2 && current->euid = 0)) //euid is not a member of task_structreturn 0;return -EACCES; }const struct inode_operations my_iops = {.permission = my_perm...

linux – 是否有一个内核模块可以返回一个简单的’ifconfig’呢?【代码】

我正在编写一个内核模块,需要有关本地机器接口的信息,就像通过一个简单的’ifconfig’命令重新调整的那些,我已经搜索了很多,但找不到任何东西解决方法:您可以通过struct net_device以这种或那种方式获取所有这些信息.正如Albert Veli所说,您可以使用__dev_get_by_name()获取此struct net_device指针. 如果您告诉我们您需要哪些信息,我们甚至可以指出您正确的字段. 查找MAC地址非常简单:struct net_device *dev = __dev_get_by_nam...

c – 如何从运行的内核模块确定Linux内核是32位还是64位

这是交易.我想编写一个内核模块,它取决于内核类型(32位或64位).当且仅当内核为32位并且如果内核为64位时应包含的某些代码行,我希望将一些代码行包??含在模块中. 是否有像#if LINUX_VERSION_CODE<对于这种情况,KERNEL_VERSION(2,6,26)?解决方法:您可以检查CONFIG_X86_64和CONFIG_X86_32 – 如果拱是x86.对于其他架构,有类似的CONFIG选项.

linux – 如何从内核模块向用户空间应用程序发送“信号”?

我有一个Linux内核模块,其中包含中断处理程序,并希望在处理完中断后以某种方式通知用户空间应用程序.请告诉我,怎么做?解决方法:>您始终可以使用普通套接字,如UDP或UNIX.>您可以通过/ proc或/ sys导出此信息(请参阅this问题).>您可以使用Netlink(参见this问题).

linux内核模块构建先决条件【代码】

kernel.org kbuild文档(https://www.kernel.org/doc/Documentation/kbuild/modules.txt)的“如何构建外部模块”部分说:To build external modules, you must have a prebuilt kernel availablethat contains the configuration and header files used in the build.Also, the kernel must have been built with modules enabled. If you areusing a distribution kernel, there will be a package for the kernelyou are running ...

linux – 枚举(所有)加载的内核模块【代码】

请注意,这post并没有完全回答我的问题. 我检查了Debian安装的内存转储.详细地,我检查了内核内存空间并手动检查了当前的代码片段.在检查代码片段之后,我在内存中找到了合理数量的片段,这些片段实际上属于一个模块(即sky2.ko),它没有被lsmod或其他日志记录机制列出. 我试图了解LKM的功能以及内核本身内置的模块的存在.但是,在检查每个资源,查看所有日志并尝试理解可能的依赖关系后,我无法回答LKM实际加载到RAM的时间和地点. 是否有加...

linux内核模块

内核模块的查看 使用 lsmod 命令可以查看系统中到底安装了哪些内核模块。命令如下: [root@a kernel]# lsmod | grep vfatvfat 17461 0 fat 65950 1 vfat 我们还可以使用 modinfo 命令来查看这些模块的说明,命令格式如下: [root@localhost ~]# modinfo 模块名 例如: [root@a kernel]# modinfo vfatfilename: /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/fat/vfat.ko.xzauthor: ...

linux – 可能加载“不同意符号版本”的内核模块

我下载了我的内核的源代码,应用了补丁并重建了它,现在我有一个内核模块,当我尝试insmod时,抱怨“模块中的未知符号”与dmesg给出错误“不同意符号的版本.. “. 无需寻找此模块的源代码并针对我的内核重建它是否有可能以某种方式迫使内核接受此模块? 我意识到这将是危险的,但如果可能,我会承担风险.解决方法:insmod不是加载模块的最佳工具 – 使用modprobe,它更聪明.在modprobe‘s man page中,您会发现它有一个–force选项,可能会加...

Linux内核模块ABI(x86)

我正在寻找在x86上用于内核模块调用的ABI的官方定义.我最近查看了一个已编译的模块,并惊讶地发现: >它使用寄存器传递前三个参数(eax,edx和ECX).>它不像GCC docs中描述的那样快速调用. docs say那个fastcall使用ecx和edx(微软风格). 我能找到的唯一相关信息是this,但它并没有说太多. 所以: 1)是否有关于内核模块中使用的ABI的官方文档(不是系统调用ABI,而不仅仅是函数列表 – 我找到的那些). 2)编译器如何产生这种奇怪的快速调用?...

linux – 将参数传递给内核模块【代码】

我有一些使用名为foo.ko的内核模块的自定义硬件.这必须是来自Linux内核的insmod. 在insmod期间是否有一种方法可以将参数传递给内核模块,例如:insmod foo.ko <parameter>?解决方法:将参数命名为:insmod foo.ko mystring="bebop" mybyte=255 From Passing Command Line Arguments to a Module : The Linux Kernel Module Programming Guide

linux – 缺少/ dev / kvm而内核模块kvm.ko和kvm-intel.ko都被加载【代码】

uname -a显示:Linux localhost 2.6.39-gentoo-r3-nsfocus+ #52 SMP PREEMPT Wed Feb 1215:37:56 CST 2014 i686 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHzGenuineIntel GNU/Linux我已经在BIOS上打开了英特尔VT. / proc / cpuinfo文件内容:flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pgemca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nxrdtscp lm constant_tsc arch_perfmon peb...

CH04-Linux内核模块程序结构.md【代码】

CH04:Linux内核模块 一个Linux内核模块主要由以下几部分组成:模块加载函数:通过insmod命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。 模块卸载函数:通过rmmod命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。 模块许可证声明:许可证(LICENSE)声明描述内核模块的许可权限,,如果不声明LICENSE,模块被加载时,将收到内核被污染(Kernel Tainted)的警告。 ...

linux – 通过直接读取内核内存来删除隐藏的内核模块?【代码】

是否可以通过直接读取内核内存来找到隐藏的内核模块? 通过隐藏我的意思是从内核模块列表中删除自己的LKM. 如果是这样,我应该期待什么样的结构,或者我应该读什么文件?解决方法:在@Eugene之后,我找到了一种直接读取内核内存以找到所谓的不那么聪明的隐藏模块的方法:只需从procfs透视图和sysfs透视图中比较模块:static int detect_hidden_mod_init(void) {char *procfs_modules[MAX_MODULE_SIZE];char *sysfs_modules[MAX_MODULE_...