标签: kernel-modules

Linux 设备驱动程序中的模块堆叠

我正在尝试使用 Linux,只是遇到了模块堆叠的概念。它可用于使用其他模块导出的符号。意味着我们可以使用某个模块中已经制作的东西,所以我们不必做已经做过的事情。但是我仍然没有实时了解我们在 Linux 中看到的这种类型的概念。

我正在关注 o'reilly 书中的相同链接 - http://www.makelinux.net/ldd3/chp-2-sect-5.shtml

并口子系统中的堆叠如图2-2所示:

在此处输入图片说明

我无法理解这个数字。

您能否提供一些实时示例应用程序,我们可以在其中使用模块堆叠的概念,这将增加我的视野范围?

linux kernel-modules

5
推荐指数
1
解决办法
5768
查看次数

取消认领设备

所以我正在使用 Ubuntu 并尝试使用一些我以前遇到过一些问题的硬件。

之前的问题是,制造我的硬件的公司将其内部零件出售给了另一家制造具有相同 ID 的不同硬件的公司。有人好心地为它制作了一个随 Ubuntu 一起提供的驱动程序,但阻止了我设备的驱动程序工作。在我的上一个系统上,我只是跟踪了内核模块并禁用了它。

我收到与我以前的机器相同的消息:

无法声明设备(Vid:0x2457,Pid:0x1002,iface:0)

但是插入设备似乎并没有像以前那样在 /dev 中创建一个条目。如何找到我的设备的所有权?我假设 dmesg:

USB 4-1:使用 ohci_hcd 和地址 16 的新全速 USB 设备

只是说它正在被检测到,并且不是 ohci 阻止了我的访问。

debugging kernel-modules devices

5
推荐指数
1
解决办法
764
查看次数

加载 speedstep_centrino 内核模块

由于笔记本电脑中的风扇噪音很大,我需要更改 CPU 频率,为此我需要加载适当的内核模块。

我的笔记本电脑 Acer TravelMate 4002WLMi 中的 CPU 是:

$ cat /proc/cpuinfo | grep "model name"
model name  : Intel(R) Pentium(R) M processor 1.60GHz
Run Code Online (Sandbox Code Playgroud)

这篇文章帮助我找到了我需要的内核模块(我的 CPU 频率只有一点点不同)。

之后,sudo modprobe speedstep_centrino命令什么都没有发生。echo $?返回0

这里是的输出lsmoddmesg的其他有用的输出。

你能解释一下内核模块有什么问题以及如何使用适当的模块来改变 CPU 频率吗?

kernel-modules linux-kernel cpu-frequency

5
推荐指数
0
解决办法
436
查看次数

如何获取已安装的外部内核模块的列表?

来自 Linux 内核 3.2 的文档Documentation/kbuild/modules.txt

=== 5. Module Installation

Modules which are included in the kernel are installed in the
directory:

    /lib/modules/$(KERNELRELEASE)/kernel/

And external modules are installed in:

    /lib/modules/$(KERNELRELEASE)/extra/
Run Code Online (Sandbox Code Playgroud)

这意味着如果我查看/lib/modules/$(KERNELRELEASE)/extra/我可以找到所有已安装的外部内核模块。但是,我发现官方的 Nvidia 显示驱动程序安装nvidia.ko/lib/modules/$(KERNELRELEASE)/kernel/drivers/video/. 这与上述规则相矛盾,并表明路径不是包含/外部模块的可靠指标。

如何获取已安装的外部内核模块列表?如果发行版很重要,我想知道 RHEL 6 和 Ubuntu 10.04 的答案。

linux ubuntu rhel kernel kernel-modules

5
推荐指数
1
解决办法
2万
查看次数

我什么时候应该在内核模块中继续调试符号?

安装内核模块时,我可以选择使用INSTALL_MOD_STRIP=1. 这可以节省大量磁盘空间。

它也节省内存吗?为什么要在内核模块中保留调试符号?

kernel kernel-modules

5
推荐指数
1
解决办法
1358
查看次数

Debian 上的 VMwarePlayer。缺少内核模块

今天我把我的工作站换成了 Debian。由于 Ubuntu 并不稳定。现在我安装了 VMware 播放器。我启动它并收到一条消息“在你可以运行 VMware 之前,必须编译几个模块并将其加载到正在运行的内核中。没有找到版本 2.6.32-5-amd64 的内核头文件”,在一个字段下面我可以给出一个文件位置。我现在该怎么办?我从来没有遇到过这样的情况。

debian kernel-modules vmware

5
推荐指数
1
解决办法
3083
查看次数

内核模块函数调用

我编写了一个具有初始化和结束功能的内核模块。我还想要一个函数,并且想随时从用户空间进程调用它。

是否适用?如果是这样,如何?

我正在使用 CentOS 5.2 和自定义内核,从 linux 2.6.18 修补。

编辑:为了清楚起见,我想将一个函数写入内核模块并从常​​规 source.c 文件中调用该函数。

kernel kernel-modules

5
推荐指数
1
解决办法
3194
查看次数

Ubuntu make 失败,没有这样的文件或目录 /lib/modules/3.4.0/build

我正在尝试在 ChrUbuntu 上为 3.xx 内核构建 CP210x 驱动程序。

构建说明: Ubuntu:

  1. make (您的 cp210x 驱动程序)
  2. cp cp210x.ko /lib/modules/<kernel-version>/kernel/drivers/usb/serial
  3. insmod /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko
  4. insmod cp210x.ko

apt-get install build-essential从那时开始:

root@ChrUbuntu:~/Documents/# make
make -C /lib/modules/3.4.0/build M=/home/me/Documents/Linux_3.x.x_VCP_Driver_Source modules
make: *** /lib/modules/3.4.0/build: No such file or directory.  Stop.
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

但我对错误感到困惑,因为该位置显然存在:

root@ChrUbuntu:/lib/modules/3.4.0# ls -la
total 820
lrwxrwxrwx  1 root root    105 Feb  8 17:01 build -> /build/x86-mario/tmp/portage/sys-kernel/chromeos-kernel-3.4-r996/work/chromeos-kernel-3.4/build/x86-mario
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

drivers ubuntu make kernel-modules

5
推荐指数
1
解决办法
3万
查看次数

在不重新启动的情况下插入内核模块时出错后无法删除或重新插入内核模块

我正在学习如何创建内核模块,并且一切正常:我编译、插入了.kowith sudo insmod cheat.ko,并且printkinit 函数(由 设置module_init)中的消息正确出现在/etc/log/syslog. 然后我对模块进行了更改,使用 将其删除sudo rmmod cheat.ko,重新插入,printk消息又恢复了。

然后,当我尝试一个新功能时,屏幕变得像一个 tty,到处都是错误消息,我做了 ctrl-alt-f2 ctrl-alt-f7(我在 ubuntu 上),然后我回到了 X 服务器。

我取消了对源文件的最新修改,重新编译,但现在的问题是我无法重新插入模块来再次测试,除非我重新启动,这对测试来说太烦人了。

如何在不重新启动的情况下重新插入修改后的模块?

我的尝试和我得到的信息:

linux kernel-modules

5
推荐指数
1
解决办法
2万
查看次数

内核模块中的故障一定会导致系统崩溃吗?

或者是否有可能克服错误,因为代码不在内核的整体部分?

linux kernel-modules linux-kernel

5
推荐指数
1
解决办法
2791
查看次数