【发布时间】:2015-10-24 03:50:07
【问题描述】:
我添加了一些 printk(KERN_ALERT "sample\n");进入驱动模块。如果我手动安装驱动程序,则会出现这些打印。但如果在引导过程中加载了相同的驱动程序,则不会出现该消息。
我确信在引导过程中加载了相同的模块,因为我更改了模块作者名称,以便在我执行 $modinfo 时它会出现。 该模块位于内核源代码路径中,我已经编译并 $make module_install。
我正在运行 ubuntu 10.04 和内核版本 3.14.2 我错过了什么?
谢谢。
【问题讨论】:
-
“我正在运行 ubuntu 10.04 和内核版本 3.14.2”——这听起来不对。 10.04 LTS 使用 2.6.30something。为什么是 `ubuntu-11.04 的标签?
-
基本上这听起来像是一个初始化时间问题。这个驱动是谁写的?是否有 printk() 语句报告驱动程序 probe() 已成功进入和退出? init() 例程中的每个返回码是否都有适当的检查?尝试将 module_init() 语句替换为 late_initcall()。
-
我已经在 ubuntu 10.04 上编译并安装了内核 3.14.2。标签有误,将其删除。
-
这实际上是一个虚拟机,我在 virtio_net.c 中添加了打印。如果我 rmmod 和 insmod 相同的 virtio_net.ko ,打印出现在探针和每个 xmit 上。但如果驱动程序从引导时开始运行,则它们不会。
-
如果您的驱动程序依赖于其他在启动时不可用的模块,那么您的驱动程序只会在初始化时失败并且不会有任何打印。
标签: ubuntu linux-kernel driver kernel-module printk