问题标签 [kernel-module]

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.

0 投票
4 回答
1959 浏览

c - Linux内核模块编译

我尝试编译简单的 linux 内核模块:

我的生成文件:

现在我的 .c 文件中没有错误。

但是当我在终端中尝试 make 时: make: Nothing to be done for `all'。

怎么了?

谢谢你。

0 投票
3 回答
25097 浏览

linux - 如何在运行时获取内核模块的完整依赖列表

有没有办法从命令行列出运行时加载到内核中的内核模块的完整依赖关系列表?

让我稍微澄清一下我的问题。

我正在尝试做的事情:

  1. 我得到所有加载模块的列表,使用lsmod
  2. 然后通过运行循环删除/卸载当前加载的内核模块。我正在使用modprobe -r. 由于某些模块正在使用中,此步骤(显然)失败了。(我可以切换到 using rmmod -r,但不想这样做,因为它不安全并且可能使系统崩溃。)
  3. 然后我想再次加载模块。

第 2 步失败了,因为在使用modprobe -r.

有什么想法、建议或意见吗?

0 投票
2 回答
291 浏览

linux-kernel - 在使用 modprobe 插入内核模块时,是否需要按特定顺序指定内核模块?

我有一个 shell 脚本变量中的模块列表,让我们调用它modulelist。其中一些模块已经加载。

我正在做modprobe -a $modulelist并遇到分段错误,这是由于正在加载的模块之一。

我的问题是:我是否必须修改变量 modulelist 中指定模块名称的顺序?我认为列表中模块的顺序不会有所不同,因为 modprobe -a 加载了模块和它们所依赖的模块。

0 投票
1 回答
146 浏览

c - 并发用户访问

我试图找出在 SMP 系统上删除模块的问题有什么好的解释吗?

0 投票
1 回答
795 浏览

linux - 缺少 Ubuntu proc_root_driver

我正在尝试使用内核 2.6.35-22 在 Ubuntu 10.04 中编译内核模块,它抱怨缺少 proc_root_driver。我做了一些搜索,发现应该定义它,但在我的 linux-headers 版本中,它没有定义。是否应该使用另一个全局变量来代替它,或者有没有办法可以在某处定义它以便内核模块可以编译?

0 投票
1 回答
2272 浏览

linux - 安装新内核时如何自动编译linux内核模块?

我正在编写一个 Linux 内核模块。它与所有源文件(尽管许可证是专有的)一起发布,以针对正在运行的内核进行编译。安装我的模块(作为.deb包分发)时,它会自动编译和安装。这行得通。

问题是在整个Linux系统的定期升级过程中,安装了更新版本的Linux内核。当这样一个新版本的内核开始运行时,它没有为它编译我的模块,我的应用程序失败了。我希望在安装新的 Linux 内核包时编译和安装我的模块。

因此我的问题是:是否有一种机制dpkg可以在安装新的 Linux 内核包时触发我的包中的某些内容来编译和安装我的模块?

同样的问题rpm

0 投票
1 回答
2960 浏览

linux - 如何在不运行 mknod 的情况下让 Linux 字符设备自动显示在 /dev 中?

让角色出现在 /dev 中的最佳方式是什么?我有一个调用 register_chrdev 的驱动程序,我在加载模块时看到 /proc/devices 中的条目。但是,我仍然必须在命令行上调用 mknod 才能让它显示在 /dev 中。

有没有一种在模块加载时以编程方式执行此操作的好方法?

0 投票
1 回答
3360 浏览

android - Android驱动模块启动

我想在我的 beagleboard-xm 上为我的 i2c 加速度计实现一个硬件驱动程序,我希望它在启动时加载它。网络上有大量资源可以帮助我编译我的模块,但我很难找到有关在启动时加载我的模块的任何信息。

好像有两个初始化脚本:

  • 根目录下的init.rc
  • 系统/等中的 init.goldfish.rc

本页描述了编写 init.rc 脚本以执行自定义初始化的过程:http: //source.android.com/porting/bring_up.html

从以前的研究中,我很确定 system/etc 中的 init.goldfish.rc 是用于自定义板加载的.. 可以将 goldfish 替换为 /proc/cpuinfo 中的硬件名称

我查看了这两个脚本以了解其他模块在启动时是如何加载的,但唯一加载的是控制台。我觉得我在这里遗漏了一些东西。是否使用 uevents 来检测和加载模块?如果是这样,这些 uevent 的触发器是什么?

任何帮助将不胜感激。

戴夫

0 投票
1 回答
740 浏览

filesystems - 内核级别的make文件中的静态链接

我创建了一个内核模块,它使用内核级函数,例如 vfs_read、write 等。这个模块有一个生成文件,可以构建这个模块来获取 .ko 文件。我想分析这个 .ko 文件的 objdump 输出。但是我观察到诸如 vfs_read 和 write 之类的内核函数没有在 .ko 文件中解析。它们只是被调用,我的猜测是它们在运行时被解析。是否可以在生成文件中进行一些更改并将所有这些函数静态链接到单个 .ko 文件中,仅出于分析目的。我尝试在编译时添加静态,但我没有帮助。任何人都可以建议这样做吗?

0 投票
3 回答
9159 浏览

linux - 如何在内核模块中使用 sysfs?

在用户空间中,我可以echo noop > /sys/block/sda/queue/scheduler

如何在内核模块中做同样的事情?

我期待这样的事情(伪代码):

如何正确实施?

我的内核模块只注册 SysRQ 处理程序,并且应该在触发 SysRQ 时配置 io 调度程序(由于 io-scheduler 错误,用户空间程序可能会在那时挂起)