【问题标题】:How does a kernel module gets attached to a running kernel?内核模块如何附加到正在运行的内核?
【发布时间】:2014-03-12 07:41:49
【问题描述】:

我是一名学习设备驱动程序的人。到目前为止,我已经执行了小模块。我想知道 linux 如何允许在模块运行时插入模块?我搜索了它但不满意或可能无法理解。我得到的只是 linux 守护进程执行 modprobe 添加新模块。但我的问题是这是怎么发生的?内核已经在执行中。新的可执行文件如何附加到正在运行的内核? 谢谢。

【问题讨论】:

标签: linux linux-kernel linux-device-driver


【解决方案1】:

内核模块实际上只是一个带有暴露功能的目标文件(或者,换句话说,一个半链接程序)。

modprobe 使用特殊的系统调用将模块加载到内核中。之后,内核有一个内置的链接器,它完成将目标文件链接到正在运行的内核。内置的链接器事先知道所有内核函数的地址,因此它知道如何填补空白。

之后,内核跳转到内核模块的入口点,模块开始工作。从那时起,模块基本上就是内核的一部分了。

【讨论】:

    【解决方案2】:

    modprobe 是一个向内核添加模块的好程序。您可以通过以下链接了解有关 modprobe 及其工作的基本概念。

    http://man7.org/linux/man-pages/man2/init_module.2.html

    http://en.wikipedia.org/wiki/Modprobe

    【讨论】:

      猜你喜欢
      • 2012-03-14
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      相关资源
      最近更新 更多