可加载模块和内置(静态链接)模块之间有什么区别?
我在找到系统调用subsys_initcall()
和module_init()
答案 0 :(得分:16)
Linux内核支持以两种方式插入模块(也称为设备驱动程序):
insmod driver.ko
或modprobe driver.ko
插入此模块可加载模块对内置模块的优势是您可以在运行时加载它们。如果您正在处理模块并且需要测试它,那么这很好。每次测试它并且需要对其进行更改时,您可以轻松卸载它(rmmod driver.ko
或modprobe -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
个。