Linux可加载和内置模块之间的区别

时间:2014-04-08 06:19:42

标签: linux module linux-kernel

可加载模块和内置(静态链接)模块之间有什么区别?

我在找到系统调用subsys_initcall()module_init()

之间差异的答案时遇到了这个问题

1 个答案:

答案 0 :(得分:16)

Linux内核支持以两种方式插入模块(也称为设备驱动程序):

  1. 内置内核模块 - 启动内核后,内核会自动将此驱动程序插入内核(它更像是已经是内核代码的一部分)
  2. 可加载内核模块(LKM) - 内核未自动加载的驱动程序,用户可以在运行时通过insmod driver.komodprobe driver.ko插入此模块
  3. 可加载模块对内置模块的优势是您可以在运行时加载它们。如果您正在处理模块并且需要测试它,那么这很好。每次测试它并且需要对其进行更改时,您可以轻松卸载它(rmmod driver.komodprobe -r driver.ko),然后在进行更改后,您可以将其重新插入。但对于内置模块,如果需要对模块进行任何更改,则需要编译整个内核,然后使用内核的新映像重新启动系统。

    <强>配置:
    您可以通过编辑内核源根文件夹中的.config文件将模块配置为两者之一:

    DRIVER_1=y // y indicate a builtin module
    DRIVER_1=m //m inicates a loadable module
    

    注意:lsmod仅显示dynamically loaded modules而非built-in个。

    继续阅读: http://www.tldp.org/HOWTO/Module-HOWTO/x73.html